@webda/gcp
Version:
Webda GCP Services implementation
53 lines • 2.3 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { KeyManagementServiceClient } from "@google-cloud/kms";
import { suite, test } from "@testdeck/mocha";
import { WebdaSimpleTest } from "@webda/core/lib/test.js";
import * as assert from "assert";
import * as sinon from "sinon";
import { GCPKMSService } from "./kms.js";
let KMSTest = class KMSTest extends WebdaSimpleTest {
async test() {
sinon.stub(KeyManagementServiceClient.prototype, "encrypt").callsFake(() => {
return [
{
ciphertext: "ciphertext"
}
];
});
sinon.stub(KeyManagementServiceClient.prototype, "decrypt").callsFake(() => {
return [
{
plaintext: "plaintext"
}
];
});
let service = await this.registerService(new GCPKMSService(this.webda, "KMSService", {
defaultKey: "projects/my-project/locations/us-east1/keyRings/my-key-ring/cryptoKeys/my-key"
}))
.resolve()
.init();
let encoded = await service.encrypt("test");
assert.deepStrictEqual(Buffer.from(encoded.split(":")[0], "base64").toString().split(":"), [
"my-project",
"us-east1",
"my-key-ring",
"my-key"
]);
assert.strictEqual(encoded.split(":").pop(), "Y2lwaGVydGV4dA==");
let decoded = await service.decrypt(encoded);
assert.strictEqual(decoded, "plaintext");
assert.rejects(() => service.decrypt(Buffer.from("test:plop").toString("base64") + ":test"));
}
};
__decorate([
test
], KMSTest.prototype, "test", null);
KMSTest = __decorate([
suite
], KMSTest);
//# sourceMappingURL=kms.spec.js.map