@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
65 lines (57 loc) • 1.53 kB
text/typescript
import { marbles } from 'rxjs-marbles/jest';
import { take, switchMap } from 'rxjs/operators';
import { createSelfSignedTokens } from '../selfSignedTokens';
import { of, timer } from 'rxjs';
describe('createSelfSignedTokens', () => {
describe('given different tokens generated every time', () => {
it(
'should work',
marbles((m) => {
const values = {
a: {
keyId: 'a',
signedJwt: 'a',
},
b: {
keyId: 'b',
signedJwt: 'b',
},
c: {
keyId: 'c',
signedJwt: 'c',
},
};
const results = {
A: {
keyId: 'a',
signedJwt: 'a',
expiresAtMillis: 6,
},
B: {
keyId: 'a',
signedJwt: 'a',
expiresAtMillis: 5 + 6,
},
};
const signs = m.cold('a', values);
const result = createSelfSignedTokens(
{
expireInMillis: 6,
rollNewTokenInMillis: 5,
scheduler: m.scheduler,
},
{
signJwt: () => signs,
now: () => of(m.scheduler.frame),
}
);
m.expect(result.pipe(take(2))).toBeObservable('A----(B|)', results);
const steps = timer(0, 1, m.scheduler).pipe(
switchMap(() => result.pipe(take(1))),
take(6)
);
m.expect(steps).toBeObservable('AAAAA(B|)', results);
})
);
});
});