-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement tests, fix options argument
- Loading branch information
GCHQ 77703
committed
Aug 29, 2018
1 parent
8559f5c
commit a95f43a
Showing
6 changed files
with
314 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/** | ||
* JWT Decode tests | ||
* | ||
* @author gchq77703 [] | ||
* | ||
* @copyright Crown Copyright 2018 | ||
* @license Apache-2.0 | ||
*/ | ||
import TestRegister from "../../TestRegister"; | ||
|
||
const outputObject = JSON.stringify({ | ||
String: "SomeString", | ||
Number: 42, | ||
iat: 1 | ||
}); | ||
|
||
TestRegister.addTests([ | ||
{ | ||
name: "JSON Decode: HS", | ||
input: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.0ha6-j4FwvEIKPVZ-hf3S_R9Hy_UtXzq4dnedXcUrXk", | ||
expectedOutput: outputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Decode", | ||
args: [], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Decode: RS", | ||
input: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.MjEJhtZk2nXzigi24piMzANmrj3mILHJcDl0xOjl5a8EgdKVL1oaMEjTkMQp5RA8YrqeRBFaX-BGGCKOXn5zPY1DJwWsBUyN9C-wGR2Qye0eogH_3b4M9EW00TPCUPXm2rx8URFj7Wg9VlsmrGzLV2oKkPgkVxuFSxnpO3yjn1Y", | ||
expectedOutput: outputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Decode", | ||
args: [], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Decode: ES", | ||
input: "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.WkECT51jSfpRkcpQ4x0h5Dwe7CFBI6u6Et2gWp91HC7mpN_qCFadRpsvJLtKubm6cJTLa68xtei0YrDD8fxIUA", | ||
expectedOutput: outputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Decode", | ||
args: [], | ||
} | ||
], | ||
} | ||
]); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
/** | ||
* JWT Sign tests | ||
* | ||
* @author gchq77703 [] | ||
* | ||
* @copyright Crown Copyright 2018 | ||
* @license Apache-2.0 | ||
*/ | ||
import TestRegister from "../../TestRegister"; | ||
|
||
const inputObject = JSON.stringify({ | ||
String: "SomeString", | ||
Number: 42, | ||
iat: 1 | ||
}); | ||
|
||
const hsKey = "secret_cat"; | ||
const rsKey = `-----BEGIN RSA PRIVATE KEY----- | ||
MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw | ||
33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW | ||
+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB | ||
AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS | ||
3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp | ||
uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE | ||
2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0 | ||
GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K | ||
Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY | ||
6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5 | ||
fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523 | ||
Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP | ||
FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw== | ||
-----END RSA PRIVATE KEY-----`; | ||
const esKey = `-----BEGIN PRIVATE KEY----- | ||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 | ||
OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r | ||
1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G | ||
-----END PRIVATE KEY-----`; | ||
|
||
TestRegister.addTests([ | ||
{ | ||
name: "JSON Sign: HS256", | ||
input: inputObject, | ||
expectedOutput: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.0ha6-j4FwvEIKPVZ-hf3S_R9Hy_UtXzq4dnedXcUrXk", | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [hsKey, "HS256"], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: HS384", | ||
input: inputObject, | ||
expectedOutput: "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ._bPK-Y3mIACConbJqkGFMQ_L3vbxgKXy9gSxtL9hA5XTganozTSXxD0vX0N1yT5s", | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [hsKey, "HS384"], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: HS512", | ||
input: inputObject, | ||
expectedOutput: "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.vZIJU4XYMFt3FLE1V_RZOxEetmV4RvxtPZQGzJthK_d47pjwlEb6pQE23YxHFmOj8H5RLEdqqLPw4jNsOyHRzA", | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [hsKey, "HS512"], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: ES256", | ||
input: inputObject, | ||
expectedOutput: inputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [esKey, "ES256"], | ||
}, | ||
{ | ||
op: "JWT Decode", | ||
args: [] | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: ES384", | ||
input: inputObject, | ||
expectedOutput: inputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [esKey, "ES384"], | ||
}, | ||
{ | ||
op: "JWT Decode", | ||
args: [] | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: ES512", | ||
input: inputObject, | ||
expectedOutput: inputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [esKey, "ES512"], | ||
}, | ||
{ | ||
op: "JWT Decode", | ||
args: [] | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: RS256", | ||
input: inputObject, | ||
expectedOutput: inputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [rsKey, "RS256"], | ||
}, | ||
{ | ||
op: "JWT Decode", | ||
args: [] | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: RS384", | ||
input: inputObject, | ||
expectedOutput: inputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [rsKey, "RS384"], | ||
}, | ||
{ | ||
op: "JWT Decode", | ||
args: [] | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Sign: RS512", | ||
input: inputObject, | ||
expectedOutput: inputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Sign", | ||
args: [esKey, "RS512"], | ||
}, | ||
{ | ||
op: "JWT Decode", | ||
args: [] | ||
} | ||
], | ||
} | ||
]); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
/** | ||
* JWT Verify tests | ||
* | ||
* @author gchq77703 [] | ||
* | ||
* @copyright Crown Copyright 2018 | ||
* @license Apache-2.0 | ||
*/ | ||
import TestRegister from "../../TestRegister"; | ||
|
||
const outputObject = JSON.stringify({ | ||
String: "SomeString", | ||
Number: 42, | ||
iat: 1 | ||
}); | ||
|
||
const invalidAlgorithm = JSON.stringify({ | ||
name: "JsonWebTokenError", | ||
message: "invalid algorithm" | ||
}); | ||
|
||
const hsKey = "secret_cat"; | ||
const rsKey = `-----BEGIN RSA PRIVATE KEY----- | ||
MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw | ||
33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW | ||
+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB | ||
AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS | ||
3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp | ||
uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE | ||
2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0 | ||
GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K | ||
Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY | ||
6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5 | ||
fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523 | ||
Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP | ||
FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw== | ||
-----END RSA PRIVATE KEY-----`; | ||
const esKey = `-----BEGIN PRIVATE KEY----- | ||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 | ||
OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r | ||
1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G | ||
-----END PRIVATE KEY-----`; | ||
|
||
TestRegister.addTests([ | ||
{ | ||
name: "JSON Verify: HS", | ||
input: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.0ha6-j4FwvEIKPVZ-hf3S_R9Hy_UtXzq4dnedXcUrXk", | ||
expectedOutput: outputObject, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Verify", | ||
args: [hsKey], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Verify: RS", | ||
input: "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.MjEJhtZk2nXzigi24piMzANmrj3mILHJcDl0xOjl5a8EgdKVL1oaMEjTkMQp5RA8YrqeRBFaX-BGGCKOXn5zPY1DJwWsBUyN9C-wGR2Qye0eogH_3b4M9EW00TPCUPXm2rx8URFj7Wg9VlsmrGzLV2oKkPgkVxuFSxnpO3yjn1Y", | ||
expectedOutput: invalidAlgorithm, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Verify", | ||
args: [rsKey], | ||
} | ||
], | ||
}, | ||
{ | ||
name: "JSON Verify: ES", | ||
input: "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJTdHJpbmciOiJTb21lU3RyaW5nIiwiTnVtYmVyIjo0MiwiaWF0IjoxfQ.WkECT51jSfpRkcpQ4x0h5Dwe7CFBI6u6Et2gWp91HC7mpN_qCFadRpsvJLtKubm6cJTLa68xtei0YrDD8fxIUA", | ||
expectedOutput: invalidAlgorithm, | ||
recipeConfig: [ | ||
{ | ||
op: "JWT Verify", | ||
args: [esKey], | ||
} | ||
], | ||
} | ||
]); |