mirror of
https://github.com/cupcakearmy/koa-cookie.git
synced 2024-12-22 16:16:29 +00:00
131 lines
2.4 KiB
JavaScript
131 lines
2.4 KiB
JavaScript
|
const
|
||
|
assert = require('assert'),
|
||
|
http = require('http'),
|
||
|
Koa = require('koa'),
|
||
|
router = require('cca-koa-router'),
|
||
|
cookie = require('./Cookie'),
|
||
|
port = 3000
|
||
|
|
||
|
let app, server, v = new Array(10)
|
||
|
|
||
|
function checkRes(options, should) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
http.request(options, (res) => {
|
||
|
res.setEncoding('utf8');
|
||
|
let d = ''
|
||
|
res.on('data', chunk => d += chunk)
|
||
|
res.on('end', () => {
|
||
|
res.body = d
|
||
|
for (const attr in should)
|
||
|
assert.equal(res[attr], should[attr])
|
||
|
resolve()
|
||
|
})
|
||
|
}).end()
|
||
|
})
|
||
|
}
|
||
|
|
||
|
describe('Cookie', () => {
|
||
|
beforeEach(() => {
|
||
|
app = new Koa()
|
||
|
for (let i = 0; i < v.length; ++i)
|
||
|
v[i] = Math.random().toString()
|
||
|
})
|
||
|
|
||
|
afterEach(() => {
|
||
|
server.close()
|
||
|
})
|
||
|
|
||
|
describe('Reading', () => {
|
||
|
it('One', () => {
|
||
|
app.use(cookie)
|
||
|
app.use(router(_ => _.get('/get', c => c.body = c.request.cookies['a'])))
|
||
|
server = app.listen(port)
|
||
|
|
||
|
return Promise.all([
|
||
|
checkRes({
|
||
|
port: port,
|
||
|
path: `/get`,
|
||
|
headers: {
|
||
|
'Cookie': `a=${v[0]}`
|
||
|
}
|
||
|
}, {
|
||
|
statusCode: 200,
|
||
|
body: v[0]
|
||
|
})
|
||
|
])
|
||
|
})
|
||
|
|
||
|
it('Multiple', () => {
|
||
|
app.use(cookie)
|
||
|
app.use(router(_ => _.get('/get', c => c.body = c.request.cookies)))
|
||
|
server = app.listen(port)
|
||
|
|
||
|
return Promise.all([
|
||
|
checkRes({
|
||
|
port: port,
|
||
|
path: `/get`,
|
||
|
headers: {
|
||
|
'Cookie': `${v[0]}=${v[1]};${v[2]}=${v[3]}`
|
||
|
}
|
||
|
}, {
|
||
|
statusCode: 200,
|
||
|
body: JSON.stringify({
|
||
|
[v[0]]: v[1],
|
||
|
[v[2]]: v[3]
|
||
|
})
|
||
|
})
|
||
|
])
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('Getter', () => {
|
||
|
it('Simple', () => {
|
||
|
app.use(cookie)
|
||
|
app.use(router(_ => _.get('/get', c => c.body = c.request.cookie.get('id'))))
|
||
|
server = app.listen(port)
|
||
|
|
||
|
return Promise.all([
|
||
|
checkRes({
|
||
|
port: port,
|
||
|
path: `/get`,
|
||
|
headers: {
|
||
|
'Cookie': `id=${v[0]}`
|
||
|
}
|
||
|
}, {
|
||
|
statusCode: 200,
|
||
|
body: v[0]
|
||
|
})
|
||
|
])
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('Setter', () => {
|
||
|
it('One', () => {
|
||
|
app.use(cookie)
|
||
|
app.use(router(_ => _.get('/set', c => {
|
||
|
c.request.cookie.set({
|
||
|
key: 'id',
|
||
|
value: v[0],
|
||
|
path: '/',
|
||
|
maxAge: 100,
|
||
|
httpOnly: true,
|
||
|
secure: false
|
||
|
})
|
||
|
|
||
|
c.body = v[1]
|
||
|
})))
|
||
|
server = app.listen(port)
|
||
|
|
||
|
return new Promise((resolve, reject) => {
|
||
|
http.request({
|
||
|
port: port,
|
||
|
path: `/set`
|
||
|
}, (res) => {
|
||
|
assert(res.statusCode, 200)
|
||
|
assert(res.headers['set-cookie'], [`id=${v[0]}; Max-Age=100; Path=/; HttpOnly`])
|
||
|
resolve()
|
||
|
}).end()
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|