This commit is contained in:
@ -111,8 +111,8 @@ describe ('auth handler', () => {
|
||||
req.deny ();
|
||||
}
|
||||
}, {
|
||||
cookie_name: 'cookie_jar',
|
||||
refresh_cookie_name: 'mint_cookies',
|
||||
cookie: { name: 'cookie_jar' },
|
||||
refresh_cookie: { name: 'mint_cookies' },
|
||||
refresh: {
|
||||
access_token_expires_in: expires_seconds,
|
||||
refresh_token_expires_in: refresh_expires_seconds,
|
||||
@ -159,9 +159,9 @@ describe ('auth handler', () => {
|
||||
expect (res1.data.token_type)
|
||||
.toEqual ('bearer');
|
||||
expect (resp1.headers['set-cookie'])
|
||||
.toContain (build_cookie ('cookie_jar', res1.at as string));
|
||||
.toContain (build_cookie ({ name: 'cookie_jar' }, res1.at as string));
|
||||
expect (resp1.headers['set-cookie'])
|
||||
.toContain (build_cookie ('mint_cookies', res1.rt as string));
|
||||
.toContain (build_cookie ({ name: 'mint_cookies' }, res1.rt as string));
|
||||
|
||||
check_token (res1.at as string, 'access_token');
|
||||
expect (res1.data.expires_in)
|
||||
@ -180,9 +180,9 @@ describe ('auth handler', () => {
|
||||
expect (res2.data.token_type)
|
||||
.toEqual ('bearer');
|
||||
expect (resp2.headers['set-cookie'])
|
||||
.toContain (build_cookie ('cookie_jar', res2.at as string));
|
||||
.toContain (build_cookie ({ name: 'cookie_jar' }, res2.at as string));
|
||||
expect (resp2.headers['set-cookie'])
|
||||
.toContain (build_cookie ('mint_cookies', res2.rt as string));
|
||||
.toContain (build_cookie ({ name: 'mint_cookies' }, res2.rt as string));
|
||||
|
||||
check_token (res2.at as string, 'access_token');
|
||||
expect (res2.data.expires_in)
|
||||
@ -212,9 +212,9 @@ describe ('auth handler', () => {
|
||||
expect (res1.data.token_type)
|
||||
.toEqual ('bearer');
|
||||
expect (resp1.headers['set-cookie'])
|
||||
.toContain (build_cookie ('cookie_jar', res1.at as string));
|
||||
.toContain (build_cookie ({ name: 'cookie_jar' }, res1.at as string));
|
||||
expect (resp1.headers['set-cookie'])
|
||||
.toContain (build_cookie ('mint_cookies', res1.rt as string));
|
||||
.toContain (build_cookie ({ name: 'mint_cookies' }, res1.rt as string));
|
||||
|
||||
check_token (res1.at as string, 'access_token');
|
||||
expect (res1.data.expires_in)
|
||||
@ -237,9 +237,9 @@ describe ('auth handler', () => {
|
||||
expect (res1.data.token_type)
|
||||
.toEqual ('bearer');
|
||||
expect (resp1.headers['set-cookie'])
|
||||
.toContain (build_cookie ('cookie_jar', res1.at as string));
|
||||
.toContain (build_cookie ({ name: 'cookie_jar' }, res1.at as string));
|
||||
expect (resp1.headers['set-cookie'])
|
||||
.toContain (build_cookie ('mint_cookies', res1.rt as string));
|
||||
.toContain (build_cookie ({ name: 'mint_cookies' }, res1.rt as string));
|
||||
|
||||
check_token (res1.at as string, 'access_token');
|
||||
expect (res1.data.expires_in)
|
||||
@ -310,9 +310,9 @@ describe ('auth handler', () => {
|
||||
expect (res2.data.token_type)
|
||||
.toEqual ('bearer');
|
||||
expect (resp2.headers['set-cookie'])
|
||||
.toContain (build_cookie ('cookie_jar', res2.at as string));
|
||||
.toContain (build_cookie ({ name: 'cookie_jar' }, res2.at as string));
|
||||
expect (resp2.headers['set-cookie'])
|
||||
.toContain (build_cookie ('mint_cookies', res2.rt as string));
|
||||
.toContain (build_cookie ({ name: 'mint_cookies' }, res2.rt as string));
|
||||
|
||||
check_token (res2.at as string, 'access_token');
|
||||
expect (res2.data.expires_in)
|
||||
@ -368,8 +368,8 @@ describe ('auth handler', () => {
|
||||
it ('should disallow access and refresh cookies with the same name', () => {
|
||||
expect (() => {
|
||||
create_auth_handler (() => Promise.resolve (), {
|
||||
cookie_name: 'foo',
|
||||
refresh_cookie_name: 'foo'
|
||||
cookie: { name: 'foo' },
|
||||
refresh_cookie: { name: 'foo' }
|
||||
});
|
||||
})
|
||||
.toThrowError ('access and refresh cookies cannot have the same name');
|
||||
|
@ -19,9 +19,9 @@ describe ('gateway', () => {
|
||||
clock_setup ();
|
||||
|
||||
const g = create_gateway ({
|
||||
redirect_url: 'http://localhost/auth',
|
||||
cookie_name: 'cookie_jar',
|
||||
refresh_cookie_name: 'mint_cookies',
|
||||
redirect_url: 'http://localhost/auth',
|
||||
cookie: { name: 'cookie_jar' },
|
||||
refresh_cookie: { name: 'mint_cookies' },
|
||||
refresh_settings: {
|
||||
access_token_expires_in: 600,
|
||||
include_refresh_token: true,
|
||||
@ -162,7 +162,10 @@ describe ('gateway', () => {
|
||||
|
||||
it ('should disallow access and refresh cookies with the same name', () => {
|
||||
expect (() => {
|
||||
create_gateway ({ cookie_name: 'foo', refresh_cookie_name: 'foo' });
|
||||
create_gateway ({
|
||||
cookie: { name: 'foo' },
|
||||
refresh_cookie: { name: 'foo' }
|
||||
});
|
||||
})
|
||||
.toThrowError ('access and refresh cookies cannot have the same name');
|
||||
});
|
||||
|
@ -5,44 +5,124 @@
|
||||
* Created by Timo Hocker <timo@scode.ovh>, January 2022
|
||||
*/
|
||||
|
||||
import { build_cookie, extract_cookie } from '../../lib/cookie';
|
||||
import { build_cookie, CookieSettings, extract_cookie } from '../../lib/cookie';
|
||||
|
||||
interface CreateCookie {
|
||||
settings: CookieSettings
|
||||
value: string
|
||||
result: string
|
||||
}
|
||||
|
||||
const create_cookie_pairs: CreateCookie[] = [
|
||||
{
|
||||
settings: { name: 'foo' },
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Secure; HttpOnly; SameSite=Strict'
|
||||
},
|
||||
{
|
||||
settings: { name: 'foäöüo' },
|
||||
value: 'baäöür',
|
||||
result: 'foäöüo=baäöür; Secure; HttpOnly; SameSite=Strict'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: true,
|
||||
http_only: false,
|
||||
same_site: null
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Secure'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: false,
|
||||
http_only: true,
|
||||
same_site: null
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; HttpOnly'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: false,
|
||||
http_only: false,
|
||||
same_site: 'Lax'
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; SameSite=Lax'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: false,
|
||||
http_only: false,
|
||||
same_site: null,
|
||||
expires: 'Tomorrow'
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Expires=Tomorrow'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: false,
|
||||
http_only: false,
|
||||
same_site: null,
|
||||
max_age: 600
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Max-Age=600'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: false,
|
||||
http_only: false,
|
||||
same_site: null,
|
||||
domain: 'example.com'
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Domain=example.com'
|
||||
},
|
||||
{
|
||||
settings: {
|
||||
name: 'foo',
|
||||
secure: false,
|
||||
http_only: false,
|
||||
same_site: null,
|
||||
path: '/test'
|
||||
},
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Path=/test'
|
||||
}
|
||||
];
|
||||
|
||||
const parse_cookie_pairs = [
|
||||
{
|
||||
header: 'foo=bar; Secure; HttpOnly; SameSite=Strict',
|
||||
name: 'foo',
|
||||
value: 'bar'
|
||||
},
|
||||
{
|
||||
header: '134=567;foäöüo=baäöür;tesT=123',
|
||||
name: 'foäöüo',
|
||||
value: 'baäöür'
|
||||
}
|
||||
];
|
||||
|
||||
describe ('cookie', () => {
|
||||
it ('should create a cookie', () => {
|
||||
const pairs = [
|
||||
{
|
||||
name: 'foo',
|
||||
value: 'bar',
|
||||
result: 'foo=bar; Secure; HttpOnly; SameSite=Strict'
|
||||
},
|
||||
{
|
||||
name: 'foäöüo',
|
||||
value: 'baäöür',
|
||||
result: 'foäöüo=baäöür; Secure; HttpOnly; SameSite=Strict'
|
||||
}
|
||||
];
|
||||
|
||||
for (const pair of pairs) {
|
||||
expect (build_cookie (pair.name, pair.value))
|
||||
for (const pair of create_cookie_pairs) {
|
||||
expect (build_cookie (pair.settings, pair.value))
|
||||
.toEqual (pair.result);
|
||||
}
|
||||
});
|
||||
|
||||
it ('should parse a cookie', () => {
|
||||
const pairs = [
|
||||
{
|
||||
header: 'foo=bar; Secure; HttpOnly; SameSite=Strict',
|
||||
name: 'foo',
|
||||
value: 'bar'
|
||||
},
|
||||
{
|
||||
header: '134=567;foäöüo=baäöür;tesT=123',
|
||||
name: 'foäöüo',
|
||||
value: 'baäöür'
|
||||
}
|
||||
];
|
||||
|
||||
for (const pair of pairs) {
|
||||
for (const pair of parse_cookie_pairs) {
|
||||
expect (extract_cookie (pair.name, pair.header))
|
||||
.toEqual (pair.value);
|
||||
}
|
||||
|
Reference in New Issue
Block a user