spur-common
Version:
A Node.JS library of common modules used as a base to most Node.JS applications.
187 lines (150 loc) • 5.37 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([])
# Testing against dupe add
.setGlobalPlugins([])
logs = []
class HTTPLogging extends
start:()->
end:()->
logs.push .name,.url
class HTTPFakePlugin extends
start:()->
end:()->
.addGlobalPlugin(HTTPFakePlugin)
.get("http://someurl")
.named("LoginService")
.tagged({endpoint: "EndpointName", tag2: "Some tag value"})
.plugin(HTTPLogging)
.promise().then (res)=>
expect(res.request.name).to.equal "LoginService"
expect(res.request.tags).to.deep.equal {endpoint: "EndpointName", tag2: "Some tag value"}
expect(res.request.duration).to.equal 33
expect(logs).to.deep.equal [ 'LoginService', 'http://someurl' ]
expect(.getGlobalPlugins()).to.deep.contain(HTTPFakePlugin)
expect(.getGlobalPlugins().length).to.equal(2)
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 "unknown http error",(done)->
nock("http://someurl")
.get("/")
.reply(423, {
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 423
expect(e.data).to.deep.equal {message:"response"}
expect(e.message).to.equal "HTTP Error: 423 GET http://someurl"
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()
describe "headers", ->
beforeEach ->
nock.enableNetConnect()
nock.restore()
= ()->
http = require("http")
http.createServer((request, response) =>
response.writeHead(200, {'Content-Type': 'text/plain'})
response.end(JSON.stringify(request.headers))
).listen 1234, =>
console.log('Server running at http://127.0.0.1:1234/')
beforeEach ->
nock.enableNetConnect()
nock.restore()
= ()->
http = require("http")
http.createServer((request, response) =>
response.writeHead(200, {'Content-Type': 'text/plain'})
response.end(JSON.stringify(request.headers))
).listen 1234, =>
console.log('Server running at http://127.0.0.1:1234/')
it "should pass in the headers when using GET", (done)->
server =
.get("http://localhost:1234/get-me")
.set("spur-http-header", "spur-http-header-value")
.promise().then (response)=>
headers = JSON.parse(response.text)
console.log("Headers:", headers)
expect(headers["spur-http-header"]).to.equal("spur-http-header-value")
expect(response.statusCode).to.equal 200
server.close(done)
it "should pass in the headers when using POST", (done)->
server =
.post("http://localhost:1234/get-me")
.set("spur-http-header", "spur-http-header-value")
.promise().then (response)=>
headers = JSON.parse(response.text)
console.log("Headers:", headers)
expect(headers["spur-http-header"]).to.equal("spur-http-header-value")
expect(response.statusCode).to.equal 200
server.close(done)