bixi
Version:
企业级中后台前端解决方案
62 lines (59 loc) • 2.18 kB
text/typescript
import { JWTTokenModel } from './jwt.model';
describe('auth: jwt.model', () => {
const model = new JWTTokenModel();
beforeEach(() => {
// from: https://jwt.io/
model.token = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1OTg1NDEzOTYsImlhdCI6MTU5ODUxMTM5NiwibmJmIjoxNTk4NTExMzk2LCJqdGkiOiIyOWIzNzJmZC0yMDRiLTRlODQtOTEzZC1jYjFmZjVlYTA2MGUiLCJpZGVudGl0eSI6ImFkbWluIiwiZnJlc2giOmZhbHNlLCJ0eXBlIjoiYWNjZXNzIiwidXNlcl9jbGFpbXMiOnsidXNlcm5hbWUiOiJhZG1pbiIsIm5pY2tuYW1lIjoiXHU3YmExXHU3NDA2XHU1NDU4Iiwic3RhdHVzIjoxLCJ1c2VyX2lkIjoxLCJyb2xlX2lkcyI6WzFdLCJyb2xlX25hbWVfbGlzdCI6WyJcdTdiYTFcdTc0MDZcdTU0NTgiXX19.VIJnS_lzRWd9t03z6wyuZ1xJZvxTCutfnEE21R_F_Oc`;
});
const payloadDATA = {
name: 'datagrand',
user_claims: {
username: 'admin'
}
};
describe('#payload', () => {
it('should be decoded', () => {
const payload = model.payload;
console.log('payload', payload);
expect(payload.user_claims.username).toBe(payloadDATA.user_claims.username);
});
it('should be throw error when token is null or undefined', () => {
expect(() => {
model.token = null;
const payload = model.payload;
console.log(payload);
}).toThrowError();
expect(() => {
model.token = undefined;
const payload = model.payload;
console.log(payload);
}).toThrowError();
});
it('should be throw error when invalid token length', () => {
expect(() => {
model.token = `a`;
const payload = model.payload;
console.log(payload);
}).toThrowError();
expect(() => {
model.token = `a.a.a`;
const payload = model.payload;
console.log(payload);
}).toThrowError();
});
it('should be throw error when invalid token', () => {
expect(() => {
model.token = `a.aa.a`;
const payload = model.payload;
console.log(payload);
}).toThrowError();
});
it(`should be throw error when can't decode the token`, () => {
expect(() => {
model.token = `a.aaa.a`;
const payload = model.payload;
console.log(payload);
}).toThrowError();
});
});
});