mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import encode from './encode'
|
|
import jwt from 'jsonwebtoken'
|
|
import CONFIG from './../config'
|
|
|
|
describe('encode', () => {
|
|
let payload
|
|
beforeEach(() => {
|
|
payload = {
|
|
name: 'Some body',
|
|
slug: 'some-body',
|
|
id: 'some-id',
|
|
}
|
|
})
|
|
|
|
it('encodes a valided JWT bearer token', () => {
|
|
const token = encode(payload)
|
|
expect(token.split('.')).toHaveLength(3)
|
|
const decoded = jwt.verify(token, CONFIG.JWT_SECRET)
|
|
expect(decoded).toEqual({
|
|
name: 'Some body',
|
|
slug: 'some-body',
|
|
id: 'some-id',
|
|
sub: 'some-id',
|
|
aud: expect.any(String),
|
|
iss: expect.any(String),
|
|
iat: expect.any(Number),
|
|
exp: expect.any(Number),
|
|
})
|
|
})
|
|
|
|
describe('given sensitive data', () => {
|
|
beforeEach(() => {
|
|
payload = {
|
|
...payload,
|
|
email: 'none-of-your-business@example.org',
|
|
password: 'topsecret',
|
|
}
|
|
})
|
|
|
|
it('does not encode sensitive data', () => {
|
|
const token = encode(payload)
|
|
expect(payload).toEqual({
|
|
email: 'none-of-your-business@example.org',
|
|
password: 'topsecret',
|
|
name: 'Some body',
|
|
slug: 'some-body',
|
|
id: 'some-id',
|
|
})
|
|
const decoded = jwt.verify(token, CONFIG.JWT_SECRET)
|
|
expect(decoded).toEqual({
|
|
name: 'Some body',
|
|
slug: 'some-body',
|
|
id: 'some-id',
|
|
sub: 'some-id',
|
|
aud: expect.any(String),
|
|
iss: expect.any(String),
|
|
iat: expect.any(Number),
|
|
exp: expect.any(Number),
|
|
})
|
|
})
|
|
})
|
|
})
|