Skip to content

Commit cbafac0

Browse files
committed
More tests.
1 parent 9664827 commit cbafac0

File tree

11 files changed

+331
-56
lines changed

11 files changed

+331
-56
lines changed

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,17 @@
2626
"grunt-mocha-test": "^0.13.3",
2727
"grunt-webpack": "^3.0.2",
2828
"highlight.js": "^9.12.0",
29+
"inject-loader": "^3.0.1",
2930
"isotope-layout": "^3.0.5",
3031
"jquery": "^3.2.1",
3132
"jsrsasign": "^8.0.4",
3233
"jstransformer-markdown-it": "^2.0.0",
34+
"lodash": "^4.17.4",
3335
"loglevel": "^1.6.1",
3436
"mocha": "^5.0.0",
3537
"pug": "^2.0.0-rc.4",
38+
"sinon": "^4.2.2",
39+
"sinon-chai": "^2.14.0",
3640
"source-map-support": "^0.5.3",
3741
"stylus": "^0.54.5",
3842
"uglifyjs-webpack-plugin": "^1.1.6",

src/editor/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import {
3636
decodedTabElement
3737
} from '../dom-elements.js';
3838

39-
import * as log from 'loglevel';
39+
import log from 'loglevel';
4040

4141
// The event manager lets us enable/disable events as needed without
4242
// manually tracking them. Events that need to be disabled should be

src/editor/jwt.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
utf8tohex
99
} from 'jsrsasign';
1010

11-
import * as log from 'loglevel';
11+
import log from 'loglevel';
1212

1313
export function sign(header,
1414
payload,

src/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { KEYUTIL } from 'jsrsasign';
2-
import * as log from 'loglevel';
2+
import log from 'loglevel';
33

44
export function httpGet(url, cache = true) {
55
return new Promise((resolve, reject) => {

src/website/counter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { httpGet } from '../utils.js';
55
import $ from 'jquery';
66
import jQuery from 'jquery';
77
import 'flipclock/compiled/flipclock.js';
8-
import * as log from 'loglevel';
8+
import log from 'loglevel';
99

1010
const initialCount = 80482701;
1111
const pollIntervalWhenVisible = 5000;

src/website/libraries.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from './dom-elements.js';
88

99
import Isotope from 'isotope-layout';
10-
import * as log from 'loglevel';
10+
import log from 'loglevel';
1111

1212
const librariesGrid = new Isotope(librariesElement, {
1313
layoutMode: 'fitRows',

src/website/smooth-scrolling.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { menuScrollableLinks, navbarElement } from './dom-elements.js';
22
import { isWideScreen } from '../utils.js';
33

44
import $ from 'jquery';
5-
import * as log from 'loglevel';
5+
import log from 'loglevel';
66

77
// This is the only function that really requires jQuery, other than some
88
// of the dependencies. Consider this when adding code that depends on

test/unit/editor/jwt.js

Lines changed: 45 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,13 @@ import tokens from '../../../src/editor/default-tokens.js';
33

44
import { utf8tob64u, b64utob64 } from 'jsrsasign';
55

6-
import * as log from 'loglevel';
6+
import log from 'loglevel';
77

88
import { should } from 'chai';
99

1010
should();
1111

12-
describe('JWT (logging disabled, enable it for debugging)', function() {
13-
before(function() {
14-
log.disableAll();
15-
});
16-
17-
after(function() {
18-
log.enableAll();
19-
});
20-
12+
describe('JWT', function() {
2113
it('detects tokens', function() {
2214
jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false;
2315
jwt.isToken('skdjf9238ujdhkf.asdfasdf2').should.be.false;
@@ -59,43 +51,50 @@ describe('JWT (logging disabled, enable it for debugging)', function() {
5951
jwt.verify(tokens.ps384.token, tokens.ps384.publicKey).should.be.true;
6052
});
6153

62-
it('fails to verify invalid tokens', function() {
63-
const split = tokens.hs256.token.split('.');
64-
const token = `${split[0]}.${split[1]}`;
65-
const token2 = token + '.';
66-
67-
jwt.verify(token, tokens.hs256.secret).should.be.false;
68-
jwt.verify(token2, tokens.hs256.secret).should.be.false;
69-
70-
jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf')
71-
.should.be.false;
72-
jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret)
73-
.should.be.false;
74-
jwt.verify(tokens.hs256.token, 'sdfsdf').should.be.false;
75-
76-
jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b'))
77-
.should.be.false;
78-
79-
jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b'))
80-
.should.be.false;
81-
82-
jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b'))
83-
.should.be.false;
84-
85-
const header = {
86-
typ: 'JWT',
87-
alg: 'none'
88-
};
89-
const payload = {
90-
sub: 'test'
91-
};
54+
it('fails to verify invalid tokens ' +
55+
'(logging temporarily disabled to hide exceptions)', function() {
56+
log.disableAll();
9257

93-
const token3 = `${utf8tob64u(JSON.stringify(header))}.` +
94-
`${utf8tob64u(JSON.stringify(payload))}`;
95-
96-
jwt.verify(token3, 'whatever').should.be.false;
97-
jwt.verify(token3 + '.', 'whatever').should.be.false;
98-
jwt.verify(token3 + '.' + split[2], 'whatever').should.be.false;
58+
try {
59+
const split = tokens.hs256.token.split('.');
60+
const token = `${split[0]}.${split[1]}`;
61+
const token2 = token + '.';
62+
63+
jwt.verify(token, tokens.hs256.secret).should.be.false;
64+
jwt.verify(token2, tokens.hs256.secret).should.be.false;
65+
66+
jwt.verify(tokens.hs256.token, tokens.hs256.secret + 'sdfasdf')
67+
.should.be.false;
68+
jwt.verify(tokens.hs256.token, 'sdfsdf' + tokens.hs256.secret)
69+
.should.be.false;
70+
jwt.verify(tokens.hs256.token, 'sdfsdf').should.be.false;
71+
72+
jwt.verify(tokens.rs256.token, tokens.rs256.publicKey.replace('a','b'))
73+
.should.be.false;
74+
75+
jwt.verify(tokens.es256.token, tokens.es256.publicKey.replace('a','b'))
76+
.should.be.false;
77+
78+
jwt.verify(tokens.ps256.token, tokens.ps256.publicKey.replace('a','b'))
79+
.should.be.false;
80+
81+
const header = {
82+
typ: 'JWT',
83+
alg: 'none'
84+
};
85+
const payload = {
86+
sub: 'test'
87+
};
88+
89+
const token3 = `${utf8tob64u(JSON.stringify(header))}.` +
90+
`${utf8tob64u(JSON.stringify(payload))}`;
91+
92+
jwt.verify(token3, 'whatever').should.be.false;
93+
jwt.verify(token3 + '.', 'whatever').should.be.false;
94+
jwt.verify(token3 + '.' + split[2], 'whatever').should.be.false;
95+
} finally {
96+
log.enableAll();
97+
}
9998
});
10099

101100
it('signs tokens (HS256)', function() {

0 commit comments

Comments
 (0)