diff options
Diffstat (limited to 'webapp/tests/helpers/client-test-helper.jsx')
-rw-r--r-- | webapp/tests/helpers/client-test-helper.jsx | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/webapp/tests/helpers/client-test-helper.jsx b/webapp/tests/helpers/client-test-helper.jsx new file mode 100644 index 000000000..24aa5e281 --- /dev/null +++ b/webapp/tests/helpers/client-test-helper.jsx @@ -0,0 +1,176 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import Client from 'client/client.jsx'; +import WebSocketClient from 'client/websocket_client.jsx'; +import jqd from 'jquery-deferred'; + +var HEADER_TOKEN = 'token'; + +class TestHelperClass { + basicClient = () => { + return this.basicc; + } + + basicWebSocketClient = () => { + return this.basicwsc; + } + + basicTeam = () => { + return this.basict; + } + + basicUser = () => { + return this.basicu; + } + + basicChannel = () => { + return this.basicch; + } + + basicPost = () => { + return this.basicp; + } + + generateId = () => { + // implementation taken from http://stackoverflow.com/a/2117523 + var id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; + + id = id.replace(/[xy]/g, function replaceRandom(c) { + var r = Math.floor(Math.random() * 16); + + var v; + if (c === 'x') { + v = r; + } else { + v = (r & 0x3) | 0x8; + } + + return v.toString(16); + }); + + return 'uid' + id; + } + + createClient() { + var c = new Client(); + c.setUrl('http://localhost:8065'); + c.useHeaderToken(); + c.enableLogErrorsToConsole(true); + return c; + } + + createWebSocketClient(token) { + var ws = new WebSocketClient(); + ws.initialize('http://localhost:8065/api/v3/users/websocket', token); + return ws; + } + + fakeEmail = () => { + return 'success' + this.generateId() + '@simulator.amazonses.com'; + } + + fakeUser = () => { + var user = {}; + user.email = this.fakeEmail(); + user.allow_marketing = true; + user.password = 'password1'; + user.username = this.generateId(); + return user; + } + + fakeTeam = () => { + var team = {}; + team.name = this.generateId(); + team.display_name = `Unit Test ${team.name}`; + team.type = 'O'; + team.email = this.fakeEmail(); + team.allowed_domains = ''; + return team; + } + + fakeChannel = () => { + var channel = {}; + channel.name = this.generateId(); + channel.display_name = `Unit Test ${channel.name}`; + channel.type = 'O'; // open channel + return channel; + } + + fakePost = () => { + var post = {}; + post.message = `Unit Test ${this.generateId()}`; + return post; + } + + initBasic = (done, callback, connectWS) => { + this.basicc = this.createClient(); + + function throwerror(err) { + done.fail(new Error(err.message)); + } + + var d1 = jqd.Deferred(); + var email = this.fakeEmail(); + var user = this.fakeUser(); + var team = this.fakeTeam(); + team.email = email; + user.email = email; + var self = this; + + this.basicClient().createUser( + user, + function(ruser) { + self.basicu = ruser; + self.basicu.password = user.password; + self.basicClient().login( + self.basicu.email, + self.basicu.password, + null, + function(data, res) { + if (connectWS) { + self.basicwsc = self.createWebSocketClient(res.header[HEADER_TOKEN]); + } + self.basicClient().useHeaderToken(); + self.basicClient().createTeam(team, + function(rteam) { + self.basict = rteam; + self.basicClient().setTeamId(rteam.id); + var channel = self.fakeChannel(); + channel.team_id = self.basicTeam().id; + self.basicClient().createChannel( + channel, + function(rchannel) { + self.basicch = rchannel; + var post = self.fakePost(); + post.channel_id = rchannel.id; + + self.basicClient().createPost( + post, + function(rpost) { + self.basicp = rpost; + d1.resolve(); + }, + throwerror + ); + }, + throwerror + ); + }, + throwerror + ); + }, + throwerror + ); + }, + throwerror + ); + + jqd.when(d1).done(() => { + callback(); + }); + } +} + +var TestHelper = new TestHelperClass(); +export default TestHelper; |