UNPKG

5.27 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2UUID = require 'uuid'
3request = require 'request'
4Server = require '../../src/server'
5Redis = require 'ioredis'
6RedisNS = require '@octoblu/redis-ns'
7{ JobManagerResponder } = require 'meshblu-core-job-manager'
8
9describe 'DELETE /devices/:uuid/tokens/query', ->
10 beforeEach (done) ->
11 @responseQueueId = UUID.v4()
12 @requestQueueName = "request:queue:#{@responseQueueId}"
13 @responseQueueName = "response:queue:#{@responseQueueId}"
14 @namespace = 'test:meshblu-http'
15 @jobLogQueue = 'test:meshblu:job-log'
16 @redisUri = 'redis://localhost'
17 @port = 0xd00d
18 @sut = new Server {
19 @port
20 disableLogging: true
21 jobTimeoutSeconds: 1
22 @namespace
23 @jobLogQueue
24 jobLogRedisUri: @redisUri
25 jobLogSampleRate: 1
26 redisUri: @redisUri
27 cacheRedisUri: @redisUri
28 @requestQueueName
29 @responseQueueName
30 }
31
32 @sut.run done
33
34 afterEach ->
35 @sut.stop()
36
37 beforeEach (done) ->
38 @redis = new RedisNS @namespace, new Redis @redisUri, dropBufferSupport: true
39 @redis.on 'ready', done
40
41 afterEach (done) ->
42 @redis.del @requestQueueName, @responseQueueName, done
43 return # avoid returning redis
44
45 beforeEach (done) ->
46 @workerFunc = (@request, callback=_.noop) =>
47 @jobManagerDo @request, callback
48
49 @jobManager = new JobManagerResponder {
50 @redisUri
51 @namespace
52 @workerFunc
53 maxConnections: 1
54 queueTimeoutSeconds: 1
55 jobTimeoutSeconds: 1
56 jobLogSampleRate: 1
57 requestQueueName: @requestQueueName
58 responseQueueName: @responseQueueName
59 }
60 @jobManager.start done
61
62 beforeEach ->
63 @jobManager.do = (@jobManagerDo) =>
64
65 afterEach ->
66 @jobManager.stop()
67
68 context 'when the request is successful', ->
69 beforeEach ->
70 @jobManager.do (@request, callback) =>
71 response =
72 metadata:
73 code: 204
74 responseId: @request.metadata.responseId
75 name: 'dinosaur-getter'
76
77 callback null, response
78
79 beforeEach (done) ->
80 options =
81 auth:
82 username: 'irritable-captian'
83 password: 'poop-deck'
84 json: true
85 qs:
86 type: 'dinosaur'
87
88 request.del "http://localhost:#{@port}/devices/:uuid/tokens", options, (error, @response, @body) =>
89 done error
90
91 it 'should return a 204', ->
92 expect(@response.statusCode).to.equal 204
93
94 it 'should dispatch the correct metadata', ->
95 expect(@request).to.containSubset
96 metadata:
97 auth:
98 uuid: 'irritable-captian'
99 token: 'poop-deck'
100
101 it 'should send the search body as the data of the job', ->
102 data = JSON.parse @request.rawData
103 expect(data).to.containSubset type: 'dinosaur'
104
105describe 'POST /devices/:uuid/token', ->
106 beforeEach (done) ->
107 @responseQueueId = UUID.v4()
108 @requestQueueName = "request:queue:#{@responseQueueId}"
109 @responseQueueName = "response:queue:#{@responseQueueId}"
110 @namespace = 'test:meshblu-http'
111 @jobLogQueue = 'test:meshblu:job-log'
112 @redisUri = 'redis://localhost'
113 @port = 0xd00d
114 @sut = new Server {
115 @port
116 disableLogging: true
117 jobTimeoutSeconds: 1
118 @namespace
119 @jobLogQueue
120 jobLogRedisUri: @redisUri
121 jobLogSampleRate: 1
122 redisUri: @redisUri
123 cacheRedisUri: @redisUri
124 @requestQueueName
125 @responseQueueName
126 }
127
128 @sut.run done
129
130 afterEach ->
131 @sut.stop()
132
133 beforeEach (done) ->
134 @redis = new RedisNS @namespace, new Redis @redisUri, dropBufferSupport: true
135 @redis.on 'ready', done
136
137 afterEach (done) ->
138 @redis.del @requestQueueName, @responseQueueName, done
139 return # avoid returning redis
140
141 beforeEach (done) ->
142 @workerFunc = (@request, callback=_.noop) =>
143 @jobManagerDo @request, callback
144
145 @jobManager = new JobManagerResponder {
146 @redisUri
147 @namespace
148 @workerFunc
149 maxConnections: 1
150 queueTimeoutSeconds: 1
151 jobTimeoutSeconds: 1
152 jobLogSampleRate: 1
153 requestQueueName: @requestQueueName
154 responseQueueName: @responseQueueName
155 }
156 @jobManager.start done
157
158 beforeEach ->
159 @jobManager.do = (@jobManagerDo) =>
160
161 afterEach ->
162 @jobManager.stop()
163
164 context 'when the request is successful', ->
165 beforeEach ->
166 @jobManager.do (@request, callback) =>
167 response =
168 metadata:
169 code: 204
170 responseId: @request.metadata.responseId
171 name: 'dinosaur-getter'
172
173 callback null, response
174
175 beforeEach (done) ->
176 options =
177 auth:
178 username: 'irritable-captian'
179 password: 'poop-deck'
180 json: true
181 qs:
182 type: 'dinosaur'
183
184 request.post "http://localhost:#{@port}/devices/:uuid/token", options, (error, @response, @body) =>
185 done error
186
187 it 'should return a 204', ->
188 expect(@response.statusCode).to.equal 204
189
190 it 'should dispatch the correct metadata', ->
191 expect(@request).to.containSubset
192 metadata:
193 auth:
194 uuid: 'irritable-captian'
195 token: 'poop-deck'
196 jobType: 'ResetToken'