pubnub
Version:
Publish & Subscribe Real-time Messaging with PubNub
43 lines (30 loc) • 1.87 kB
text/typescript
/* global describe, it */
import CborReader from 'cbor-sync';
import assert from 'assert';
import Cbor from '../../src/cbor/common';
describe('cbor', () => {
it('should decode token', () => {
const cbor = new Cbor(CborReader.decode, (base64String: string) => Buffer.from(base64String, 'base64'));
let token =
'p0F2AkF0Gl043rhDdHRsCkNyZXOkRGNoYW6hZnNlY3JldAFDZ3JwoEN1c3KgQ3NwY6BDcGF0pERjaGFuoENncnCgQ3VzcqBDc3BjoERtZXRhoENzaWdYIGOAeTyWGJI-blahPGD9TuKlaW1YQgiB4uR_edmfq-61';
let decodedToken = cbor.decodeToken(token);
assert(typeof decodedToken === 'object', 'decoded token object should be returned');
assert(decodedToken.v === 2, 'token should have correct v');
assert(decodedToken.t === 1564008120, 'token should have correct t');
assert(decodedToken.ttl === 10, 'token should have correct ttl');
assert(typeof decodedToken.res === 'object', 'token should have res');
assert(typeof decodedToken.res.chan, 'token should have res/chan');
assert(typeof decodedToken.res.grp, 'token should have res/grp');
assert(typeof decodedToken.res.usr, 'token should have res/usr');
assert(typeof decodedToken.res.spc, 'token should have res/spc');
// contains permission for one channel
assert(decodedToken.res.chan.secret === 1, 'token should have permissions for res/chan/secret of 1');
assert(typeof decodedToken.pat, 'token should have pat');
assert(typeof decodedToken.pat.chan, 'token should have pat/chan');
assert(typeof decodedToken.pat.grp, 'token should have pat/grp');
assert(typeof decodedToken.pat.usr, 'token should have pat/usr');
assert(typeof decodedToken.pat.spc, 'token should have pat/spc');
assert(typeof decodedToken.meta === 'object', 'token should have meta');
assert(decodedToken.sig instanceof Buffer, 'token should have sig as a Buffer');
});
});