summaryrefslogtreecommitdiffstats
path: root/webapp/tests/test_helper.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/tests/test_helper.jsx')
-rw-r--r--webapp/tests/test_helper.jsx183
1 files changed, 183 insertions, 0 deletions
diff --git a/webapp/tests/test_helper.jsx b/webapp/tests/test_helper.jsx
new file mode 100644
index 000000000..385279360
--- /dev/null
+++ b/webapp/tests/test_helper.jsx
@@ -0,0 +1,183 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+/* eslint-disable no-console */
+/* eslint-disable global-require */
+/* eslint-disable func-names */
+/* eslint-disable prefer-arrow-callback */
+/* eslint-disable no-magic-numbers */
+/* eslint-disable no-unreachable */
+/* eslint-disable new-cap */
+
+import Client from '../client/client.jsx';
+import jqd from 'jquery-deferred';
+
+class TestHelperClass {
+ basicClient = () => {
+ return this.basicc;
+ }
+
+ 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;
+ }
+
+ 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 = (callback) => {
+ this.basicc = this.createClient();
+
+ var d1 = jqd.Deferred();
+ var email = this.fakeEmail();
+ var outer = this; // eslint-disable-line consistent-this
+
+ this.basicClient().signupTeam(
+ email,
+ function(rsignUp) {
+ var teamSignup = {};
+ teamSignup.invites = [];
+ teamSignup.data = decodeURIComponent(rsignUp.follow_link.split('&h=')[0].replace('/signup_team_complete/?d=', ''));
+ teamSignup.hash = decodeURIComponent(rsignUp.follow_link.split('&h=')[1]);
+
+ teamSignup.user = outer.fakeUser();
+ teamSignup.team = outer.fakeTeam();
+ teamSignup.team.email = email;
+ teamSignup.user.email = email;
+ var password = teamSignup.user.password;
+
+ outer.basicClient().createTeamFromSignup(
+ teamSignup,
+ function(rteamSignup) {
+ outer.basict = rteamSignup.team;
+ outer.basicu = rteamSignup.user;
+ outer.basicu.password = password;
+ outer.basicClient().setTeamId(outer.basict.id);
+ outer.basicClient().login(
+ rteamSignup.user.email,
+ null,
+ password,
+ null,
+ function() {
+ outer.basicClient().useHeaderToken();
+ var channel = outer.fakeChannel();
+ channel.team_id = outer.basicTeam().id;
+ outer.basicClient().createChannel(
+ channel,
+ function(rchannel) {
+ outer.basicch = rchannel;
+ var post = outer.fakePost();
+ post.channel_id = rchannel.id;
+
+ outer.basicClient().createPost(
+ post,
+ function(rpost) {
+ outer.basicp = rpost;
+ d1.resolve();
+ },
+ function(err) {
+ throw err;
+ }
+ );
+ },
+ function(err) {
+ throw err;
+ }
+ );
+ },
+ function(err) {
+ throw err;
+ }
+ );
+ },
+ function(err) {
+ throw err;
+ }
+ );
+ },
+ function(err) {
+ throw err;
+ }
+ );
+
+ jqd.when(d1).done(() => {
+ callback();
+ });
+ }
+}
+
+var TestHelper = new TestHelperClass();
+export default TestHelper;