UNPKG

6.39 kBtext/coffeescriptView Raw
1{afterEach, beforeEach, describe, it} = global
2{expect} = require 'chai'
3sinon = require 'sinon'
4
5_ = require 'lodash'
6enableDestroy = require 'server-destroy'
7shmock = require 'shmock'
8SocketIO = require 'socket.io'
9
10
11Inquisitor = require '..'
12
13describe 'Setup', ->
14 beforeEach ->
15
16 meshbluConfig =
17 uuid: 'user-uuid'
18 token: 'user-token'
19 hostname: 'localhost'
20 port: 0xd00d
21 protocol: 'http'
22
23 uuid = 'inquisitor-uuid'
24
25 @userAuth = new Buffer('user-uuid:user-token').toString 'base64'
26 @sut = new Inquisitor {meshbluConfig, uuid}
27
28 it 'should exist', ->
29 expect(@sut).to.exist
30
31 describe '->setup', ->
32 beforeEach 'meshblu', ->
33 @meshblu = shmock 0xd00d
34 enableDestroy(@meshblu)
35
36 afterEach (done) ->
37 @meshblu.destroy done
38
39 beforeEach ->
40 @meshblu
41 .get "/v2/devices/inquisitor-uuid"
42 .set 'Authorization', "Basic #{@userAuth}"
43 .reply 200,
44 uuid: 'inquisitor-uuid'
45 devices: ['device-1', 'device-2']
46
47 @meshblu
48 .post '/search/devices'
49 .send uuid: $in: ['device-1', 'device-2']
50 .set 'Authorization', "Basic #{@userAuth}"
51 .set 'x-meshblu-projection', JSON.stringify({statusDevice: true})
52 .reply 200, [{}, {statusDevice: 'status-device'}]
53
54
55 beforeEach 'subscriptions', ->
56 @subscriptionRequests = []
57 @subscriptionRequests.push( @meshblu
58 .post '/v2/devices/inquisitor-uuid/subscriptions/device-1/configure.received'
59 .set 'Authorization', "Basic #{@userAuth}"
60 .reply 201
61 )
62
63 @subscriptionRequests.push( @meshblu
64 .post '/v2/devices/inquisitor-uuid/subscriptions/device-1/message.received'
65 .set 'Authorization', "Basic #{@userAuth}"
66 .reply 201
67 )
68
69 @subscriptionRequests.push( @meshblu
70 .post '/v2/devices/inquisitor-uuid/subscriptions/device-1/message.sent'
71 .set 'Authorization', "Basic #{@userAuth}"
72 .reply 201
73 )
74
75 @subscriptionRequests.push( @meshblu
76 .post '/v2/devices/inquisitor-uuid/subscriptions/device-1/broadcast.sent'
77 .set 'Authorization', "Basic #{@userAuth}"
78 .reply 201
79 )
80
81 @subscriptionRequests.push( @meshblu
82 .post '/v2/devices/inquisitor-uuid/subscriptions/device-2/configure.received'
83 .set 'Authorization', "Basic #{@userAuth}"
84 .reply 201
85 )
86
87 @subscriptionRequests.push( @meshblu
88 .post '/v2/devices/inquisitor-uuid/subscriptions/device-2/message.received'
89 .set 'Authorization', "Basic #{@userAuth}"
90 .reply 201
91 )
92
93 @subscriptionRequests.push( @meshblu
94 .post '/v2/devices/inquisitor-uuid/subscriptions/device-2/message.sent'
95 .set 'Authorization', "Basic #{@userAuth}"
96 .reply 201
97 )
98
99 @subscriptionRequests.push( @meshblu
100 .post '/v2/devices/inquisitor-uuid/subscriptions/device-2/broadcast.sent'
101 .set 'Authorization', "Basic #{@userAuth}"
102 .reply 201
103 )
104
105 @subscriptionRequests.push( @meshblu
106 .post '/v2/devices/inquisitor-uuid/subscriptions/status-device/configure.received'
107 .set 'Authorization', "Basic #{@userAuth}"
108 .reply 201
109 )
110
111 @subscriptionRequests.push( @meshblu
112 .post '/v2/devices/inquisitor-uuid/subscriptions/status-device/message.received'
113 .set 'Authorization', "Basic #{@userAuth}"
114 .reply 201
115 )
116
117 @subscriptionRequests.push( @meshblu
118 .post '/v2/devices/inquisitor-uuid/subscriptions/status-device/message.sent'
119 .set 'Authorization', "Basic #{@userAuth}"
120 .reply 201
121 )
122
123 @subscriptionRequests.push( @meshblu
124 .post '/v2/devices/inquisitor-uuid/subscriptions/status-device/broadcast.sent'
125 .set 'Authorization', "Basic #{@userAuth}"
126 .reply 201
127 )
128
129 @subscriptionRequests.push( @meshblu
130 .post '/v2/devices/inquisitor-uuid/subscriptions/inquisitor-uuid/configure.received'
131 .set 'Authorization', "Basic #{@userAuth}"
132 .reply 201
133 )
134
135 @subscriptionRequests.push( @meshblu
136 .post '/v2/devices/inquisitor-uuid/subscriptions/inquisitor-uuid/message.received'
137 .set 'Authorization', "Basic #{@userAuth}"
138 .reply 201
139 )
140
141 @subscriptionRequests.push( @meshblu
142 .post '/v2/devices/inquisitor-uuid/subscriptions/inquisitor-uuid/message.sent'
143 .set 'Authorization', "Basic #{@userAuth}"
144 .reply 201
145 )
146
147 @subscriptionRequests.push( @meshblu
148 .post '/v2/devices/inquisitor-uuid/subscriptions/inquisitor-uuid/broadcast.sent'
149 .set 'Authorization', "Basic #{@userAuth}"
150 .reply 201
151 )
152
153 beforeEach 'permissions', ->
154 @meshblu
155 .post '/search/devices'
156 .set 'Authorization', "Basic #{@userAuth}"
157 .set 'x-meshblu-projection', JSON.stringify({uuid: true})
158 .send 'meshblu.version': '2.0.0', uuid: $in: ['device-1', 'device-2', 'status-device']
159 .reply 200, [{uuid: 'status-device'}, {uuid: 'device-1'}]
160
161 @updateDevice1 = @meshblu
162 .put '/v2/devices/device-1'
163 .set 'Authorization', "Basic #{@userAuth}"
164 .send $addToSet: { 'meshblu.whitelists.configure.received': {uuid: 'inquisitor-uuid'}, 'meshblu.whitelists.discover.view': {uuid: 'inquisitor-uuid'} }
165 .reply 204
166
167 @updateDevice2 = @meshblu
168 .put '/v2/devices/device-2'
169 .set 'Authorization', "Basic #{@userAuth}"
170 .send $addToSet: { 'configureWhitelist': 'inquisitor-uuid', 'discoverWhitelist': 'inquisitor-uuid'}
171 .reply 204
172
173 @updateStatusDevice = @meshblu
174 .put '/v2/devices/status-device'
175 .set 'Authorization', "Basic #{@userAuth}"
176 .send $addToSet: { 'meshblu.whitelists.configure.received': {uuid: 'inquisitor-uuid'}, 'meshblu.whitelists.discover.view': {uuid: 'inquisitor-uuid'} }
177 .reply 204
178
179 beforeEach (done) ->
180 @sut.setup done
181 return null
182
183 it 'should create all them subscriptions', ->
184 _.each @subscriptionRequests, (request) => request.done()
185
186 it 'should update the whitelist for device-1', ->
187 @updateDevice1.done()
188
189 it 'should update the whitelist for device-2', ->
190 @updateDevice2.done()
191
192 it 'should update the whitelist for the status-device', ->
193 @updateStatusDevice.done()