cloudworker-proxy
Version:
An api gateway for cloudflare workers
75 lines (65 loc) • 2.72 kB
JavaScript
;
var assert = require('assert');
var native = require("../buildjs/native");
describe("native", function () {
var TEST_MESSAGE = Buffer.from("Hello world");
var TEST_MESSAGE_WRONG = Buffer.from("Hello world!!!");
context("HMAC", () => {
let keys = [];
[0, 128, 256, 512].forEach((length, index) => {
let hmac = {
length: length,
key: null
}
if (length)
keys.push(hmac)
it(`generate length:${length}`, done => {
native.HmacKey.generate(length, (err, data) => {
assert.equal(!!err, !length, err);
assert.equal(!!data, !!length, "Data is empty");
if (length)
hmac.key = data;
done();
});
});
});
context("export/import", () => {
keys.forEach(hmac => {
it(`length:${hmac.length}`, done => {
hmac.key.export((err, data) => {
assert.equal(!!data, true);
assert.equal(data.length * 8, hmac.length);
native.HmacKey.import(data, (err, key) => {
assert.equal(!!data, true);
key.export((err, data2) => {
assert.equal(!!data2, true);
assert.equal(data2.length * 8, hmac.length);
assert.equal(data2.toString("hex"), data.toString("hex"));
done();
});
});
});
});
});
});
context("sign/verify", () => {
keys.forEach(hmac => {
it(`length:${hmac.length}`, done => {
hmac.key.sign("sha1", TEST_MESSAGE, (err, signature1) => {
assert.equal(!!err, false, err);
assert.equal(signature1.length > 0, true);
hmac.key.verify("sha1", TEST_MESSAGE, signature1, (err, res) => {
assert.equal(!!err, false, err);
assert.equal(res, true);
hmac.key.verify("sha1", TEST_MESSAGE_WRONG, signature1, (err, res) => {
assert.equal(!!err, false, err);
assert.equal(res, false);
done();
});
});
});
});
});
});
});
});