1
0
Fork 0
arangodb/js/server/tests/shell/shell-foxx-response-2-spec.js

101 lines
3.5 KiB
JavaScript

/* global describe, it */
'use strict';
const expect = require('chai').expect;
const sinon = require('sinon');
const statuses = require('statuses');
const path = require('path');
const fs = require('fs');
const internal = require('internal');
const crypto = require('@arangodb/crypto');
const SyntheticResponse = require('@arangodb/foxx/router/response');
describe('SyntheticResponse', function () {
describe('cookie', function () {
it('adds a cookie', function () {
require("console").log('adds a cookie');
const rawRes = {};
const res = new SyntheticResponse(rawRes, {});
res.cookie('hello', 'banana');
expect(rawRes.cookies).to.eql([
{name: 'hello', value: 'banana'}
]);
});
it('optionally adds a TTL', function () {
require("console").log('optionally adds a TTL');
const rawRes = {};
const res = new SyntheticResponse(rawRes, {});
res.cookie('hello', 'banana', {ttl: 22});
expect(rawRes.cookies).to.eql([
{name: 'hello', value: 'banana', lifeTime: 22}
]);
});
it('optionally adds some metadata', function () {
require("console").log('optionally adds some metadata');
const rawRes = {};
require("console").log("1");
const res = new SyntheticResponse(rawRes, {});
require("console").log("2");
res.cookie('hello', 'banana', {
path: '/path',
domain: 'cats.example',
secure: true,
httpOnly: true
});
require("console").log("3");
expect(rawRes.cookies).to.eql([
{
name: 'hello',
value: 'banana',
path: '/path',
domain: 'cats.example',
secure: true,
httpOnly: true
}
]);
require("console").log("4");
});
it('supports signed cookies when a secret is provided', function () {
require("console").log('supports signed cookies when a secret is provided');
const rawRes = {};
const res = new SyntheticResponse(rawRes, {});
res.cookie('hello', 'banana', {secret: 'potato'});
expect(rawRes.cookies).to.eql([
{name: 'hello', value: 'banana'},
{name: 'hello.sig', value: crypto.hmac('potato', 'banana')}
]);
});
it('supports signed cookies with different algorithms', function () {
require("console").log('supports signed cookies with different algorithms');
const rawRes = {};
const res = new SyntheticResponse(rawRes, {});
res.cookie('hello', 'banana', {
secret: 'potato',
algorithm: 'sha512'
});
expect(rawRes.cookies).to.eql([
{name: 'hello', value: 'banana'},
{name: 'hello.sig', value: crypto.hmac('potato', 'banana', 'sha512')}
]);
});
it('treats options string as a secret', function () {
require("console").log('treats options string as a secret');
const rawRes = {};
const res = new SyntheticResponse(rawRes, {});
res.cookie('hello', 'banana', 'potato');
expect(rawRes.cookies).to.eql([
{name: 'hello', value: 'banana'},
{name: 'hello.sig', value: crypto.hmac('potato', 'banana')}
]);
});
it('treats options number as a TTL value', function () {
require("console").log('treats options number as a TTL value');
const rawRes = {};
const res = new SyntheticResponse(rawRes, {});
res.cookie('hello', 'banana', 22);
expect(rawRes.cookies).to.eql([
{name: 'hello', value: 'banana', lifeTime: 22}
]);
});
});
});