UNPKG

2.39 kBJavaScriptView Raw
1import JwtGenerator from "../src/JwtGenerator";
2import path from "path";
3import fs from "fs";
4import expect from "expect.js";
5import jwt from "jsonwebtoken";
6
7describe("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});