1 | import JwtGenerator from "../src/JwtGenerator";
|
2 | import path from "path";
|
3 | import fs from "fs";
|
4 | import expect from "expect.js";
|
5 | import jwt from "jsonwebtoken";
|
6 |
|
7 | describe("JwtGenerator Object", function() {
|
8 | describe(".generate", function() {
|
9 | it("should throw an exception if the cert is not a Buffer", function() {
|
10 | var generator = new JwtGenerator();
|
11 | var generate = function() {
|
12 | generator.generate("blah blah");
|
13 | };
|
14 | expect(generate).to.throwError();
|
15 | });
|
16 |
|
17 | it("should throw an exception if the claims is not a Object", function() {
|
18 | var generator = new JwtGenerator();
|
19 | var generate = function() {
|
20 | generator.generate("blah blah", "application_id");
|
21 | };
|
22 | expect(generate).to.throwError();
|
23 | });
|
24 |
|
25 | it("should generate a JWT", function() {
|
26 | var testPrivateKey = fs.readFileSync(
|
27 | path.join(__dirname, "private-test.key")
|
28 | );
|
29 |
|
30 | var generator = new JwtGenerator();
|
31 | var token = generator.generate(testPrivateKey, {
|
32 | application_id: "app-id",
|
33 | iat: new Date(2016, 9, 5).getTime() / 1000
|
34 | });
|
35 |
|
36 | expect(token).to.be.a("string");
|
37 | });
|
38 |
|
39 | it("should add jti and iat claims by default", function() {
|
40 | var testPrivateKey = fs.readFileSync(
|
41 | path.join(__dirname, "private-test.key")
|
42 | );
|
43 | var testPublicKey = fs.readFileSync(
|
44 | path.join(__dirname, "public-test.key")
|
45 | );
|
46 |
|
47 | var generator = new JwtGenerator();
|
48 | var token = generator.generate(testPrivateKey);
|
49 |
|
50 | var decoded = jwt.verify(token, testPublicKey, { algorithms: ["RS256"] });
|
51 |
|
52 | expect(decoded.jti).to.be.ok();
|
53 | expect(decoded.iat).to.be.ok();
|
54 | });
|
55 |
|
56 | it("should be possible to add additional claims", function() {
|
57 | var testPrivateKey = fs.readFileSync(
|
58 | path.join(__dirname, "private-test.key")
|
59 | );
|
60 | var testPublicKey = fs.readFileSync(
|
61 | path.join(__dirname, "public-test.key")
|
62 | );
|
63 |
|
64 | var generator = new JwtGenerator();
|
65 | var appId = "app-id";
|
66 | var randomValue = Math.random();
|
67 | var token = generator.generate(testPrivateKey, {
|
68 | application_id: appId,
|
69 | random: randomValue
|
70 | });
|
71 |
|
72 | var decoded = jwt.verify(token, testPublicKey, { algorithms: ["RS256"] });
|
73 |
|
74 | expect(decoded.application_id).to.be(appId);
|
75 | expect(decoded.random).to.be(randomValue);
|
76 | });
|
77 | });
|
78 | });
|