Merge branch 'hotfix/21.56.9' into master
[gitter.git] / modules / rooms / test / assert-user-valid-in-room-test.js
blobd8a8943b569c6cbd7789a38ed0ed86617d5c1015
1 'use strict';
3 var assert = require('assert');
4 var proxyquireNoCallThru = require('proxyquire').noCallThru();
5 var Promise = require('bluebird');
7 describe('assert-user-valid-in-room', function() {
8   var gitlabUser = { providers: ['gitlab'] };
9   var githubUser = { providers: ['github'] };
10   var twitterUser = { providers: ['twitter'] };
11   var githubRoom = {
12     providers: ['github'],
13     uri: 'foo/bar',
14     githubType: 'REPO',
15     security: 'PUBLIC'
16   };
17   var oneToOneRoom = { oneToOne: true, githubType: 'ONETOONE', security: 'PRIVATE' };
19   var assertUserValidInRoom = proxyquireNoCallThru('../lib/assert-user-valid-in-room', {
20     'gitter-web-identity': {
21       listProvidersForUser: function(user) {
22         return Promise.resolve(user.providers);
23       }
24     }
25   });
27   it('should not allow a user to join a github-only room if the user has a Twitter identity', function() {
28     return assertUserValidInRoom(githubRoom, twitterUser).then(
29       function() {
30         assert.ok(false, 'Expected an exception');
31       },
32       function(err) {
33         assert.strictEqual(err.status, 403);
34       }
35     );
36   });
38   it('should not allow a user to join a github-only room if the user has a GitLab identity', function() {
39     return assertUserValidInRoom(githubRoom, gitlabUser).then(
40       function() {
41         assert.ok(false, 'Expected an exception');
42       },
43       function(err) {
44         assert.strictEqual(err.status, 403);
45       }
46     );
47   });
49   it('should not allow a user who has not yet signed up to join a github-only room', function() {
50     return assertUserValidInRoom(githubRoom, null).then(
51       function() {
52         assert.ok(false, 'Expected an exception');
53       },
54       function(err) {
55         assert.strictEqual(err.status, 403);
56       }
57     );
58   });
60   it('should allow a user to join a github-only room if the user has a github identity', function() {
61     return assertUserValidInRoom(githubRoom, githubUser);
62   });
64   it('should pass through one-to-one rooms too', function() {
65     return assertUserValidInRoom(oneToOneRoom, twitterUser);
66   });
68   it('should pass through one-to-one rooms too', function() {
69     return assertUserValidInRoom(oneToOneRoom, gitlabUser);
70   });
71 });