SuperTest Cookie Assertions
HTTP cookie assertions via supertest.
Writing HTTP cookie tests can result in redundant and verbose test code.
This module was written to make testing cookies easier and reduce redundancies.
Warning
This project has been merged into supertest v7.2 via Dolan Murvihill and is now deprecated which means it will no longer be maintained. Use the latest version of supertest for access to the expect-cookies API. Issues should be tracked in supertest issues.
- NodeJS v0.12.x or higher
- NPM
- SuperTest for HTTP testing
See ./package.json
Source available on GitHub or install module via NPM:
$ npm install expect-cookies
Usage instructions assume general knowledge of super-test.
Here is an example of using the set and not cookie assertions:
// get ExpectCookies module
const Cookies = require('expect-cookies');
// setup super-test
const request = require('supertest');
const express = require('express');
// setup express test service
const app = express();
app.get('/users', function(req, res){
res.cookie('alpha', 'one', {domain: 'domain.com', path: '/', httpOnly: true});
res.send(200, { name: 'tobi' });
});
// test request to service
request(app)
.get('/users')
.expect('Content-Type', /json/)
.expect('Content-Length', '20')
.expect(200)
// assert 'alpha' cookie is set with domain, path, and httpOnly options
.expect(Cookies.set({'name': 'alpha', 'options': ['domain', 'path', 'httponly']}))
// assert 'bravo' cookie is NOT set
.expect(Cookies.not('set', {'name': 'bravo'})
.end(function(err, res){
if (err) throw err;
});It is also possible to chain assertions:
Cookies.set({/* ... */}).not('set', {/* ... */})Functions and methods are chainable.
Get assertion function for super-test .expect() method.
Arguments
secret- String or array of strings. Cookie signature secrets.asserts(req, res)- Function or array of functions. Failed custom assertions should throw.
Assert that cookie and options are set.
Arguments
expects- Object or array of objects.name- String name of cookie.options- Optional array of options.
assert- Optional boolean "assert true" modifier. Default:true.
Assert that cookie is set and was already set (in request headers).
Arguments
expects- Object or array of objects.name- String name of cookie.
assert- Optional boolean "assert true" modifier. Default:true.
Assert that cookie is set and was NOT already set (NOT in request headers).
Arguments
expects- Object or array of objects.name- String name of cookie.
assert- Optional boolean "assert true" modifier. Default:true.
Assert that cookie is set with a strictly greater expires or max-age than the given value.
Arguments
expects- Object or array of objects.name- String name of cookie.options- Object of options.use one of two options belowoptions.expires- String UTC expiration for original cookie (in request headers).options.max-age- Integer ttl in seconds for original cookie (in request headers).
assert- Optional boolean "assert true" modifier. Default:true.
Assert that cookie is set with value and contains options.
Requires Cookies(secret) initialization if cookie is signed.
Arguments
expects- Object or array of objects.name- String name of cookie.value- Optional string unsigned value of cookie.options- Optional object of options.options.domain- Optional string domain.options.path- Optional string path.options.expires- Optional string UTC expiration.options.max-age- Optional integer ttl, in seconds.options.secure- Optional boolean secure flag.options.httponly- Optional boolean httpOnly flag.
assert- Optional boolean "assert true" modifier. Default:true.
Call any cookies assertion method with "assert true" modifier set to false.
Syntactic sugar.
Arguments
method- String method name. Arguments of method name apply inexpects.expects- Object or array of objects.name- String name of cookie.value- Optional string unsigned value of cookie.options- Optional object of options.
That's it!