1 | expect = require('chai').expect
|
2 | path = require 'path'
|
3 |
|
4 | Robot = require 'hubot/src/robot'
|
5 | TextMessage = require('hubot/src/message').TextMessage
|
6 |
|
7 | describe 'auth', ->
|
8 | robot = {}
|
9 | admin_user = {}
|
10 | role_user = {}
|
11 | anon_user = {}
|
12 | adapter = {}
|
13 |
|
14 | beforeEach (done) ->
|
15 | process.env.HUBOT_AUTH_ADMIN = "1"
|
16 |
|
17 |
|
18 | robot = new Robot null, "mock-adapter", false
|
19 |
|
20 | robot.adapter.on "connected", ->
|
21 |
|
22 |
|
23 |
|
24 | require("../src/auth")(robot)
|
25 |
|
26 | admin_user = robot.brain.userForId "1", {
|
27 | name: "admin-user"
|
28 | room: "#test"
|
29 | }
|
30 |
|
31 | role_user = robot.brain.userForId "2", {
|
32 | name: "role-user"
|
33 | room: "#test"
|
34 | }
|
35 |
|
36 | anon_user = robot.brain.userForId "3", {
|
37 | name: "anon-user"
|
38 | room: "#test"
|
39 | }
|
40 |
|
41 | adapter = robot.adapter
|
42 |
|
43 | robot.run()
|
44 |
|
45 | done()
|
46 |
|
47 | afterEach ->
|
48 | robot.shutdown()
|
49 |
|
50 | it 'list admin users', (done) ->
|
51 | adapter.on "reply", (envelope, strings) ->
|
52 | expect(strings[0]).to.match /admin-user/i
|
53 | done()
|
54 |
|
55 | adapter.receive(new TextMessage admin_user, "hubot: who has admin role?")
|
56 |
|
57 | it 'anon user fails to set role', (done) ->
|
58 | adapter.on "reply", (envelope, strings) ->
|
59 | expect(strings[0]).to.match /only admins can assign roles/i
|
60 | done()
|
61 |
|
62 | adapter.receive(new TextMessage anon_user, "hubot: role-user has demo role")
|
63 |
|
64 | it 'admin user successfully sets role', (done) ->
|
65 | adapter.on "reply", (envelope, strings) ->
|
66 | expect(strings[0]).to.match /role-user has the 'demo' role/i
|
67 | done()
|
68 |
|
69 | adapter.receive(new TextMessage admin_user, "hubot: role-user has demo role")
|
70 |
|
71 | it 'fail to add admin role via command', (done) ->
|
72 | adapter.on "reply", (envelope, strings) ->
|
73 | expect(strings[0]).to.match /sorry/i
|
74 | done()
|
75 |
|
76 | adapter.receive(new TextMessage admin_user, "hubot: role-user has admin role")
|
77 |
|
78 | it 'fail to remove admin role via command', (done) ->
|
79 | adapter.on "reply", (envelope, strings) ->
|
80 | expect(strings[0]).to.match /sorry/i
|
81 | done()
|
82 |
|
83 | adapter.receive(new TextMessage admin_user, "hubot: role-user doesn't have admin role")
|
84 |
|
85 | it 'successfully list multiple roles of admin user', (done) ->
|
86 | adapter.receive(new TextMessage admin_user, "hubot: admin-user has demo role")
|
87 |
|
88 | adapter.on "reply", (envelope, strings) ->
|
89 | expect(strings[0]).to.match(/following roles: .*admin/)
|
90 | expect(strings[0]).to.match(/following roles: .*demo/)
|
91 | done()
|
92 |
|
93 | adapter.receive(new TextMessage anon_user, "hubot: what roles does admin-user have?")
|