forked from assaf/zombie
-
Notifications
You must be signed in to change notification settings - Fork 0
/
authentication_spec.coffee
77 lines (65 loc) · 2.72 KB
/
authentication_spec.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{ Vows, assert, brains, Browser } = require("./helpers")
Vows.describe("Authentication").addBatch
"basic":
topic: ->
brains.get "/auth/basic", (req, res) ->
if auth = req.headers.authorization
if auth == "Basic dXNlcm5hbWU6cGFzczEyMw=="
res.send "<html><body>#{req.headers["authorization"]}</body></html>"
else
res.send "Invalid credentials", 401
else
res.send "Missing credentials", 401
brains.ready @callback
"without credentials":
topic: ->
browser = new Browser
browser.visit "http://localhost:3003/auth/basic", @callback
"should return status code 401": (browser)->
assert.equal browser.statusCode, 401
"with invalid credentials":
topic: ->
browser = new Browser
credentials = { scheme: "basic", user: "username", password: "wrong" }
browser.visit "http://localhost:3003/auth/basic", credentials: credentials, @callback
"should return status code 401": (browser)->
assert.equal browser.statusCode, 401
"with valid credentials":
topic: ->
browser = new Browser
credentials = { scheme: "basic", user: "username", password: "pass123" }
browser.visit "http://localhost:3003/auth/basic", credentials: credentials, @callback
"should have the authentication header": (browser)->
assert.equal browser.text("body"), "Basic dXNlcm5hbWU6cGFzczEyMw=="
"OAuth bearer":
topic: ->
brains.get "/auth/oauth2", (req, res) ->
if auth = req.headers.authorization
if auth == "Bearer 12345"
res.send "<html><body>#{req.headers["authorization"]}</body></html>"
else
res.send "Invalid token", 401
else
res.send "Missing token", 401
brains.ready @callback
"without credentials":
topic: ->
browser = new Browser
browser.visit "http://localhost:3003/auth/oauth2", @callback
"should return status code 401": (browser)->
assert.equal browser.statusCode, 401
"with invalid credentials":
topic: ->
browser = new Browser
credentials = { scheme: "bearer", token: "wrong" }
browser.visit "http://localhost:3003/auth/oauth2", credentials: credentials, @callback
"should return status code 401": (browser)->
assert.equal browser.statusCode, 401
"with valid credentials":
topic: ->
browser = new Browser
credentials = { scheme: "bearer", token: "12345" }
browser.visit "http://localhost:3003/auth/oauth2", credentials: credentials, @callback
"should have the authentication header": (browser)->
assert.equal browser.text("body"), "Bearer 12345"
.export(module)