UNPKG

2.68 kBtext/coffeescriptView Raw
1expect = require('chai').expect
2path = require 'path'
3
4Robot = require 'hubot/src/robot'
5TextMessage = require('hubot/src/message').TextMessage
6
7describe '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 # Create new robot, without http, using mock adapter
18 robot = new Robot null, "mock-adapter", false
19
20 robot.adapter.on "connected", ->
21
22 # load the module under test and configure it for the
23 # robot. This is in place of external-scripts
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?")