diff --git a/integration/ocean/SecretStore.test.ts b/integration/ocean/SecretStore.test.ts new file mode 100644 index 0000000..1bd0a26 --- /dev/null +++ b/integration/ocean/SecretStore.test.ts @@ -0,0 +1,36 @@ +import { assert } from "chai" + +import { config } from "../config" + +import { Ocean, Account, DID } from "../../src" // @oceanprotocol/squid + +describe("Secret Store", () => { + let ocean: Ocean + + let account: Account + + const did: DID = DID.generate() + const content = {content: "Test 123"} + let encryptedContent + + before(async () => { + ocean = await Ocean.getInstance(config) + + // Accounts + account = new Account("0xa99d43d86a0758d5632313b8fa3972b6088a21bb") + account.setPassword("secret") + }) + + it("should encrypt a text", async () => { + encryptedContent = await ocean.secretStore.encrypt(did.getId(), content, account) + + assert.isDefined(encryptedContent) + assert.match(encryptedContent, /^0x[a-f0-9]{86}$/i) + }) + + it("should decrypt a text", async () => { + const decryptedContent = await ocean.secretStore.decrypt(did.getId(), encryptedContent, account) + + assert.deepEqual(decryptedContent, content) + }) +}) diff --git a/src/ocean/OceanSecretStore.ts b/src/ocean/OceanSecretStore.ts index 5dc5400..abb88bf 100644 --- a/src/ocean/OceanSecretStore.ts +++ b/src/ocean/OceanSecretStore.ts @@ -32,8 +32,7 @@ export default class OceanSecretStore { * @param {string} publisher Publisher account. * @return {Promise} Encrypted text. */ - public async encrypt(did: string, content: string, publisher: Account): Promise { - console.warn("TODO") + public async encrypt(did: string, content: any, publisher: Account): Promise { return await this.getSecretStoreByAccount(publisher) // TODO did to id .encryptDocument(did, content) @@ -47,8 +46,7 @@ export default class OceanSecretStore { * @param {string} consumer cONSUMER account. * @return {Promise} Encrypted text. */ - public async decrypt(did: string, content: string, consumer: Account): Promise { - console.warn("TODO") + public async decrypt(did: string, content: string, consumer: Account): Promise { return await this.getSecretStoreByAccount(consumer) // TODO did to id .decryptDocument(did, content) diff --git a/src/secretstore/SecretStoreProvider.ts b/src/secretstore/SecretStoreProvider.ts index 21c7368..b195021 100644 --- a/src/secretstore/SecretStoreProvider.ts +++ b/src/secretstore/SecretStoreProvider.ts @@ -24,8 +24,8 @@ export default class SecretStoreProvider { return SecretStoreProvider.secretStore } else { const configRef = JSON.stringify(config) - if (!SecretStoreProvider.secretStoreByUrl.get(configRef)) { - SecretStoreProvider.secretStoreByUrl.set(configRef, + if (!SecretStoreProvider.secretStoreWithConfig.get(configRef)) { + SecretStoreProvider.secretStoreWithConfig.set(configRef, new SecretStore({ ...ConfigProvider.getConfig(), ...config, @@ -33,10 +33,10 @@ export default class SecretStoreProvider { ) } - return SecretStoreProvider.secretStoreByUrl.get(configRef) + return SecretStoreProvider.secretStoreWithConfig.get(configRef) } } private static secretStore: SecretStore - private static secretStoreByUrl = new Map() + private static secretStoreWithConfig = new Map() }