UNPKG

@webda/gcp

Version:

Webda GCP Services implementation

53 lines 2.3 kB
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