Unit_AI/node_modules/biskviit/test/biskviit-test.js

382 lines
12 KiB
JavaScript
Raw Normal View History

2024-06-01 21:24:36 +01:00
'use strict';
var chai = require('chai');
var expect = chai.expect;
//var http = require('http');
var Biskviit = require('../lib/biskviit');
chai.config.includeStack = true;
describe('Biskviit Unit Tests', function() {
var biskviit;
beforeEach(function() {
biskviit = new Biskviit();
});
describe('#getPath', function() {
it('should return root path', function() {
expect(biskviit.getPath('/')).to.equal('/');
expect(biskviit.getPath('')).to.equal('/');
expect(biskviit.getPath('/index.php')).to.equal('/');
});
it('should return without file', function() {
expect(biskviit.getPath('/path/to/file')).to.equal('/path/to/');
});
});
describe('#isExpired', function() {
it('should match expired cookie', function() {
expect(biskviit.isExpired({
name: 'a',
value: 'b',
expires: new Date(Date.now() + 10000)
})).to.be.false;
expect(biskviit.isExpired({
name: 'a',
value: '',
expires: new Date(Date.now() + 10000)
})).to.be.true;
expect(biskviit.isExpired({
name: 'a',
value: 'b',
expires: new Date(Date.now() - 10000)
})).to.be.true;
});
});
describe('#compare', function() {
it('should match similar cookies', function() {
expect(biskviit.compare({
name: 'zzz',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
}, {
name: 'zzz',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
})).to.be.true;
expect(biskviit.compare({
name: 'zzz',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
}, {
name: 'yyy',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
})).to.be.false;
expect(biskviit.compare({
name: 'zzz',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
}, {
name: 'zzz',
path: '/amp',
domain: 'example.com',
secure: false,
httponly: false
})).to.be.false;
expect(biskviit.compare({
name: 'zzz',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
}, {
name: 'zzz',
path: '/',
domain: 'examples.com',
secure: false,
httponly: false
})).to.be.false;
expect(biskviit.compare({
name: 'zzz',
path: '/',
domain: 'example.com',
secure: false,
httponly: false
}, {
name: 'zzz',
path: '/',
domain: 'example.com',
secure: true,
httponly: false
})).to.be.false;
});
});
describe('#add', function() {
it('should append new cookie', function() {
expect(biskviit.cookies.length).to.equal(0);
biskviit.add({
name: 'zzz',
value: 'abc',
path: '/',
expires: new Date(Date.now() + 10000),
domain: 'example.com',
secure: false,
httponly: false
});
expect(biskviit.cookies.length).to.equal(1);
expect(biskviit.cookies[0].name).to.equal('zzz');
expect(biskviit.cookies[0].value).to.equal('abc');
});
it('should update existing cookie', function() {
expect(biskviit.cookies.length).to.equal(0);
biskviit.add({
name: 'zzz',
value: 'abc',
path: '/',
expires: new Date(Date.now() + 10000),
domain: 'example.com',
secure: false,
httponly: false
});
biskviit.add({
name: 'zzz',
value: 'def',
path: '/',
expires: new Date(Date.now() + 10000),
domain: 'example.com',
secure: false,
httponly: false
});
expect(biskviit.cookies.length).to.equal(1);
expect(biskviit.cookies[0].name).to.equal('zzz');
expect(biskviit.cookies[0].value).to.equal('def');
});
});
describe('#match', function() {
it('should check if a cookie matches particular domain and path', function() {
var cookie = {
name: 'zzz',
value: 'abc',
path: '/def/',
expires: new Date(Date.now() + 10000),
domain: 'example.com',
secure: false,
httponly: false
};
expect(biskviit.match(cookie, 'http://example.com/def/')).to.be.true;
expect(biskviit.match(cookie, 'http://example.com/bef/')).to.be.false;
});
it('should check if a cookie matches particular domain and path', function() {
var cookie = {
name: 'zzz',
value: 'abc',
path: '/def',
expires: new Date(Date.now() + 10000),
domain: 'example.com',
secure: false,
httponly: false
};
expect(biskviit.match(cookie, 'http://example.com/def/')).to.be.true;
expect(biskviit.match(cookie, 'http://example.com/bef/')).to.be.false;
});
it('should check if a cookie is secure', function() {
var cookie = {
name: 'zzz',
value: 'abc',
path: '/def/',
expires: new Date(Date.now() + 10000),
domain: 'example.com',
secure: true,
httponly: false
};
expect(biskviit.match(cookie, 'https://example.com/def/')).to.be.true;
expect(biskviit.match(cookie, 'http://example.com/def/')).to.be.false;
});
});
describe('#parse', function() {
it('should parse Set-Cookie value', function() {
expect(biskviit.parse('theme=plain')).to.deep.equal({
name: 'theme',
value: 'plain'
});
expect(biskviit.parse('SSID=Ap4P….GTEq; Domain=foo.com; Path=/; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly')).to.deep.equal({
name: 'ssid',
value: 'Ap4P….GTEq',
domain: '.foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
});
});
it('should ignore invalid expire header', function() {
expect(biskviit.parse('theme=plain; Expires=Wed, 13 Jan 2021 22:23:01 GMT')).to.deep.equal({
name: 'theme',
value: 'plain',
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
});
expect(biskviit.parse('theme=plain; Expires=ZZZZZZZZ GMT')).to.deep.equal({
name: 'theme',
value: 'plain'
});
});
});
describe('Listing', function() {
beforeEach(function() {
biskviit.cookies = [{
name: 'ssid1',
value: 'Ap4P….GTEq1',
domain: '.foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
}, {
name: 'ssid2',
value: 'Ap4P….GTEq2',
domain: '.foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 1900 22:23:01 GMT')
}, {
name: 'ssid3',
value: 'Ap4P….GTEq3',
domain: 'foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
}, {
name: 'ssid4',
value: 'Ap4P….GTEq4',
domain: 'www.foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
}, {
name: 'ssid5',
value: 'Ap4P….GTEq5',
domain: 'broo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
}];
});
describe('#list', function() {
it('should return matching cookies for an URL', function() {
expect(biskviit.list('https://www.foo.com')).to.deep.equal([{
name: 'ssid1',
value: 'Ap4P….GTEq1',
domain: '.foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
}, {
name: 'ssid4',
value: 'Ap4P….GTEq4',
domain: 'www.foo.com',
path: '/',
httponly: true,
secure: true,
expires: new Date('Wed, 13 Jan 2021 22:23:01 GMT')
}]);
});
});
describe('#get', function() {
it('should return matching cookies for an URL', function() {
expect(biskviit.get('https://www.foo.com')).to.equal('ssid1=Ap4P….GTEq1; ssid4=Ap4P….GTEq4');
});
});
});
describe('#set', function() {
it('should set cookie', function() {
// short
biskviit.set('theme=plain', 'https://foo.com/');
// long
biskviit.set('SSID=Ap4P….GTEq; Domain=foo.com; Path=/test; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly', 'https://foo.com/');
// subdomains
biskviit.set('SSID=Ap4P….GTEq; Domain=.foo.com; Path=/; Expires=Wed, 13 Jan 2021 22:23:01 GMT; Secure; HttpOnly', 'https://www.foo.com/');
// invalid cors
biskviit.set('invalid_1=cors; domain=example.com', 'https://foo.com/');
biskviit.set('invalid_2=cors; domain=www.foo.com', 'https://foo.com/');
// invalid date
biskviit.set('invalid_3=date; Expires=zzzz', 'https://foo.com/');
// should not be added
biskviit.set('expired_1=date; Expires=1999-01-01 01:01:01 GMT', 'https://foo.com/');
expect(biskviit.cookies.map(function(cookie) {
delete cookie.expires;
return cookie;
})).to.deep.equal([{
name: 'theme',
value: 'plain',
domain: 'foo.com',
path: '/'
}, {
name: 'ssid',
value: 'Ap4P….GTEq',
domain: 'foo.com',
path: '/test',
secure: true,
httponly: true
}, {
name: 'ssid',
value: 'Ap4P….GTEq',
domain: 'www.foo.com',
path: '/',
secure: true,
httponly: true
}, {
name: 'invalid_1',
value: 'cors',
domain: 'foo.com',
path: '/'
}, {
name: 'invalid_2',
value: 'cors',
domain: 'foo.com',
path: '/'
}, {
name: 'invalid_3',
value: 'date',
domain: 'foo.com',
path: '/'
}]);
});
});
});