76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
|
import http from 'http';
|
||
|
import auth from '../../lib/Authority';
|
||
|
import { get } from '../Helper';
|
||
|
|
||
|
const expires_seconds = 600;
|
||
|
const refresh_expires_seconds = 3600;
|
||
|
|
||
|
// eslint-disable-next-line max-lines-per-function
|
||
|
xdescribe ('auth handler', () => {
|
||
|
let server: http.Server|null = null;
|
||
|
beforeAll (() => {
|
||
|
server = http.createServer ((req, res) => {
|
||
|
res.writeHead (404);
|
||
|
res.end ();
|
||
|
});
|
||
|
server.listen (3000);
|
||
|
|
||
|
jasmine.clock ()
|
||
|
.install ();
|
||
|
jasmine.clock ()
|
||
|
.mockDate (new Date);
|
||
|
});
|
||
|
|
||
|
it ('should return a valid access and refresh token', async () => {
|
||
|
const resp = await get ({ authorization: 'Basic foo:bar' });
|
||
|
expect (resp.statusCode)
|
||
|
.toEqual (200);
|
||
|
const data = JSON.parse (resp.body as string);
|
||
|
const at = data.access_token;
|
||
|
const rt = data.refresh_token;
|
||
|
expect (resp.headers['set-cookie'])
|
||
|
.toContain (`cookie_jar=${at}`);
|
||
|
expect (resp.headers['cache-control'])
|
||
|
.toEqual ('no-store');
|
||
|
expect (resp.headers.pragma)
|
||
|
.toEqual ('no-cache');
|
||
|
expect (data.token_type)
|
||
|
.toEqual ('bearer');
|
||
|
expect (data.expires_in)
|
||
|
.toEqual (expires_seconds);
|
||
|
expect (data.refresh_expires_in)
|
||
|
.toEqual (refresh_expires_seconds);
|
||
|
|
||
|
expect (at as string)
|
||
|
.toMatch (/^[0-9a-z-._~+/]+$/ui);
|
||
|
expect (rt as string)
|
||
|
.toMatch (/^[0-9a-z-._~+/]+$/ui);
|
||
|
|
||
|
const atv = auth.verify (at as string);
|
||
|
expect (atv.valid)
|
||
|
.toEqual (true);
|
||
|
expect (atv.authorized)
|
||
|
.toEqual (true);
|
||
|
expect (atv.type)
|
||
|
.toEqual ('access_token');
|
||
|
|
||
|
const rtv = auth.verify (rt as string);
|
||
|
expect (rtv.valid)
|
||
|
.toEqual (true);
|
||
|
expect (rtv.authorized)
|
||
|
.toEqual (false);
|
||
|
expect (rtv.type)
|
||
|
.toEqual ('refresh_token');
|
||
|
});
|
||
|
|
||
|
afterAll (() => {
|
||
|
if (server === null)
|
||
|
throw new Error ('server is null');
|
||
|
server.close ();
|
||
|
jasmine.clock ()
|
||
|
.tick (24 * 60 * 60 * 1000);
|
||
|
jasmine.clock ()
|
||
|
.uninstall ();
|
||
|
});
|
||
|
});
|