This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import { generateToken, verify, getLogin, getTrusted } from '../auth';
|
||||
|
||||
const VALID_SECRET = 'test-jwt-secret-ktery-ma-alespon-32-znaku';
|
||||
const SHORT_SECRET = 'kratky';
|
||||
|
||||
beforeEach(() => {
|
||||
process.env.JWT_SECRET = VALID_SECRET;
|
||||
});
|
||||
|
||||
test('generateToken → getLogin vrátí stejný login', () => {
|
||||
const token = generateToken('jannovak');
|
||||
expect(getLogin(token)).toBe('jannovak');
|
||||
});
|
||||
|
||||
test('getTrusted vrátí false, pokud nebyl příznak předán', () => {
|
||||
const token = generateToken('jannovak');
|
||||
expect(getTrusted(token)).toBe(false);
|
||||
});
|
||||
|
||||
test('getTrusted vrátí true, pokud byl příznak předán jako true', () => {
|
||||
const token = generateToken('jannovak', true);
|
||||
expect(getTrusted(token)).toBe(true);
|
||||
});
|
||||
|
||||
test('verify vrátí true pro platný token', () => {
|
||||
const token = generateToken('jannovak');
|
||||
expect(verify(token)).toBe(true);
|
||||
});
|
||||
|
||||
test('verify vrátí false pro token podepsaný jiným secretem', () => {
|
||||
const token = generateToken('jannovak');
|
||||
process.env.JWT_SECRET = 'uplne-jiny-secret-ktery-ma-take-32-znaku';
|
||||
expect(verify(token)).toBe(false);
|
||||
});
|
||||
|
||||
test('verify vrátí false pro pozměněný token', () => {
|
||||
const token = generateToken('jannovak');
|
||||
const tampered = token.slice(0, -5) + 'xxxxx';
|
||||
expect(verify(tampered)).toBe(false);
|
||||
});
|
||||
|
||||
test('generateToken vyhodí chybu pro chybějící JWT_SECRET', () => {
|
||||
delete process.env.JWT_SECRET;
|
||||
expect(() => generateToken('jannovak')).toThrow('JWT_SECRET');
|
||||
});
|
||||
|
||||
test('generateToken vyhodí chybu pro příliš krátký JWT_SECRET', () => {
|
||||
process.env.JWT_SECRET = SHORT_SECRET;
|
||||
expect(() => generateToken('jannovak')).toThrow('32');
|
||||
});
|
||||
|
||||
test('generateToken vyhodí chybu pro prázdný login', () => {
|
||||
expect(() => generateToken('')).toThrow();
|
||||
});
|
||||
|
||||
test('generateToken vyhodí chybu pro login obsahující jen mezery', () => {
|
||||
expect(() => generateToken(' ')).toThrow();
|
||||
});
|
||||
|
||||
test('getLogin vyhodí chybu pro chybějící token', () => {
|
||||
expect(() => getLogin(undefined)).toThrow();
|
||||
});
|
||||
Reference in New Issue
Block a user