spur-common
Version:
Common node library that is implemented through the use of spur-ioc and bluebird promises.
94 lines (74 loc) • 2.31 kB
text/coffeescript
nock = require "nock"
_ = require "lodash"
describe "HTTPService", ->
beforeEach ->
injector().inject (, , , )=>
.mockDuration(33)
nock.disableNetConnect()
= (text, arr)->
_.every arr, (expectedText)->
text.indexOf(expectedText) > -1
afterEach ->
nock.cleanAll()
it "should exist", ->
expect().to.exist
it "http success", (done)->
nock("http://someurl")
.get("/")
.reply(200, {
message:"response"
})
.setGlobalPlugins([])
logs = []
class HTTPLogging extends
start:()->
end:()->
logs.push .name,.url
.get("http://someurl")
.named("LoginService")
.plugin(HTTPLogging)
.promise().then (res)->
expect(res.request.name).to.equal "LoginService"
expect(res.request.duration).to.equal 33
expect(logs).to.deep.equal [ 'LoginService', 'http://someurl' ]
done()
it "http error",(done)->
nock("http://someurl")
.get("/")
.reply(400, {
message:"response"
})
logs = []
class HTTPLogging extends
start:()->
end:()->
logs.push .name,.url, .error.data
.get("http://someurl")
.named("LoginService")
.plugin(HTTPLogging)
.promise().catch (e)->
expect(e.statusCode).to.equal 400
expect(e.data).to.deep.equal {message:"response"}
expect(logs).to.deep.equal [
'LoginService', 'http://someurl', {"message":"response"}
]
done()
it "http append file", (done)->
nock("http://someurl")
.filteringRequestBody(()=>)
.post("/")
.reply(200)
.post("http://someurl/")
.appendFile("file", new Buffer("hello world"), {
filename:"hello.json"
contentType:"application/json"
}).promise().then ()=>
valid = , [
'Content-Disposition: form-data; name="file"; filename="hello.json"'
'Content-Type: application/json'
'hello world'
]
expect(valid).to.equal true
done()