-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest.js
More file actions
92 lines (77 loc) · 2.66 KB
/
test.js
File metadata and controls
92 lines (77 loc) · 2.66 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
var getPort = require('get-server-port')
var corsMiddleware = require('./')
var devnull = require('dev-null')
var request = require('request')
var merry = require('merry')
var http = require('http')
var tape = require('tape')
tape('glossycors', function (t) {
t.test('should set default cors headers on a handler', function (t) {
t.plan(5)
var cors = corsMiddleware()
var app = merry({ logStream: devnull() })
app.use(cors)
app.route('GET', '/', myEndpoint)
app.route('PUT', '/', myEndpoint)
function myEndpoint (req, res, ctx) {
t.equal(res.getHeader('access-control-allow-origin'), '*', 'cors allow origin in *')
t.equal(res.getHeader('access-control-allow-headers'), 'Content-Type, Accept, X-Requested-With', 'cors content type is ok')
t.equal(res.getHeader('access-control-allow-credentials'), true, 'cors credentials are commin through')
t.equal(res.getHeader('access-control-allow-methods'), 'PUT, POST, DELETE, GET, OPTIONS', 'cors methods are ok')
ctx.send(200, {})
}
var server = http.createServer(app.start())
server.listen(function () {
var port = getPort(server)
var uri = 'http://localhost:' + port + '/'
var req = request.put(uri, function (err, req, body) {
t.ifError(err, 'no err')
server.close()
})
req.end()
})
})
t.test('should accept a single cors method on a handler', function (t) {
t.plan(3)
var cors = corsMiddleware({
methods: 'GET'
})
var app = merry({ logStream: devnull() })
app.use(cors)
app.route('GET', '/', myEndpoint)
function myEndpoint (req, res, ctx) {
t.equal(res.getHeader('access-control-allow-methods'), 'GET', 'cors sets get method')
ctx.send(200, {})
}
var server = http.createServer(app.start())
performGet(server, t)
})
t.test('should accept multiple cors methods on a handler', function (t) {
t.plan(3)
var cors = corsMiddleware({
methods: 'GET, PUT'
})
var app = merry({ logStream: devnull() })
app.use(cors)
app.route('GET', '/', myEndpoint)
function myEndpoint (req, res, ctx) {
t.equal(res.getHeader('access-control-allow-methods'), 'GET, PUT', 'cors sets get and put methods')
ctx.send(200, {})
}
var server = http.createServer(app.start())
performGet(server, t)
})
})
function performGet (server, t, cb) {
cb = cb || noop
server.listen(function () {
var port = getPort(server)
var uri = 'http://localhost:' + port + '/'
request(uri, function (err, req) {
t.ifError(err, 'no err')
t.equal(req.statusCode, 200, 'status is ok')
server.close()
})
})
}
function noop () {}