diff --git a/package-lock.json b/package-lock.json index 06a3ec79..2351c99f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1749,6 +1749,13 @@ "@types/sjcl": "1.0.28", "eciesjs": "^0.3.4", "sjcl": "npm:sjcl-complete@1.0.0" + }, + "dependencies": { + "sjcl": { + "version": "npm:sjcl-complete@1.0.0", + "resolved": "https://registry.npmjs.org/sjcl-complete/-/sjcl-complete-1.0.0.tgz", + "integrity": "sha512-nZx2bBY8jbx4cLjSToaUG0cI7J2mNBx2Op9T+eBBkiNe3xrFUkAHyZP0vEB6E8Q8iIDL6Qx8Yaf48pZJiq9JMQ==" + } } }, "@ew-did-registry/did": { @@ -15745,9 +15752,12 @@ } }, "nats.ws": { - "version": "1.0.0-111", - "resolved": "https://registry.npmjs.org/nats.ws/-/nats.ws-1.0.0-111.tgz", - "integrity": "sha512-kR5mc7I/bvSJy38F8gbSYmllOAoM83xEBNlSFhTn0fJb7+fUtrrEk9OYZF+zrlFnQf3nc34dHQRuThCrVLEU5w==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/nats.ws/-/nats.ws-1.3.0.tgz", + "integrity": "sha512-BIeWvvRca/Qnh7PJzOBBOjcFbgmKBuTfTifxpkGAKQlSEX/AgM/CS957TrTEgb12UzcCIS4IhXwbTNK1K0PMGw==", + "requires": { + "nkeys.js": "^1.0.0-9" + } }, "natural-compare": { "version": "1.4.0", @@ -15805,6 +15815,30 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "nkeys.js": { + "version": "1.0.0-9", + "resolved": "https://registry.npmjs.org/nkeys.js/-/nkeys.js-1.0.0-9.tgz", + "integrity": "sha512-m9O0NQT+3rUe1om6MWpxV77EuHql/LdorDH+FYQkoeARcM2V0sQ89kM36fArWaHWq/25EmNmQUW0MhLTcbqW1A==", + "optional": true, + "requires": { + "@types/node": "^14.0.26", + "tweetnacl": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "14.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.17.tgz", + "integrity": "sha512-niAjcewgEYvSPCZm3OaM9y6YQrL2SEPH9PymtE6fuZAvFiP6ereCcvApGl2jKTq7copTIguX3PBvfP08LN4LvQ==", + "optional": true + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "optional": true + } + } + }, "node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", @@ -21678,11 +21712,6 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "sjcl": { - "version": "npm:sjcl-complete@1.0.0", - "resolved": "https://registry.npmjs.org/sjcl-complete/-/sjcl-complete-1.0.0.tgz", - "integrity": "sha512-nZx2bBY8jbx4cLjSToaUG0cI7J2mNBx2Op9T+eBBkiNe3xrFUkAHyZP0vEB6E8Q8iIDL6Qx8Yaf48pZJiq9JMQ==" - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", diff --git a/package.json b/package.json index 0410185e..ac5b4ce5 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "ethers": "^5.4.4", "js-sha3": "^0.8.0", "lodash.difference": "^4.5.0", - "nats.ws": "1.0.0-111", + "nats.ws": "^1.3.0", "qs": "^6.9.4", "tslib": "^2.0.3", "uuid": "^7.0.3" diff --git a/test/application.testSuite.ts b/test/application.testSuite.ts index 83fc27e7..ccbfa0fb 100644 --- a/test/application.testSuite.ts +++ b/test/application.testSuite.ts @@ -8,59 +8,62 @@ import { Keys } from "@ew-did-registry/keys"; const { namehash } = utils; export const appsTests = () => { - const app = "app1"; - const appNode = `${app}.${ENSNamespaceTypes.Application}.${org1}.${root}`; + const app = "app1"; + const appNode = `${app}.${ENSNamespaceTypes.Application}.${org1}.${root}`; - test("application can be created", async () => { - const appDefinition = { appName: "Application 1" }; - await rootOwnerIam.createApplication({ - appName: app, - data: appDefinition, - namespace: `${ENSNamespaceTypes.Application}.${org1}.${root}` - }); + test("application can be created", async () => { + const appDefinition = { appName: "Application 1" }; + await rootOwnerIam.createApplication({ + appName: app, + data: appDefinition, + namespace: `${ENSNamespaceTypes.Application}.${org1}.${root}`, + }); - expect(await rootOwnerIam.checkExistenceOfDomain({ domain: appNode })).toBe(true); - expect( - await rootOwnerIam.checkExistenceOfDomain({ domain: `${ENSNamespaceTypes.Roles}.${appNode}` }) - ).toBe(true); - expect(await ensResolver.name(namehash(appNode))).toBe(appNode); - expect( - await rootOwnerIam.getSubdomains({ domain: `${ENSNamespaceTypes.Application}.${org1}.${root}` }) - ).toContain(`${app}.${ENSNamespaceTypes.Application}.${org1}.${root}`); + expect(await rootOwnerIam.checkExistenceOfDomain({ domain: appNode })).toBe(true); + expect(await rootOwnerIam.checkExistenceOfDomain({ domain: `${ENSNamespaceTypes.Roles}.${appNode}` })).toBe( + true, + ); + expect(await ensResolver.name(namehash(appNode))).toBe(appNode); + expect( + await rootOwnerIam.getSubdomains({ domain: `${ENSNamespaceTypes.Application}.${org1}.${root}` }), + ).toContain(`${app}.${ENSNamespaceTypes.Application}.${org1}.${root}`); - const readAppDefinition = await rootOwnerIam.getDefinition({ type: ENSNamespaceTypes.Application, namespace: appNode }); - expect(readAppDefinition).toMatchObject(appDefinition); - }); + const readAppDefinition = await rootOwnerIam.getDefinition({ + type: ENSNamespaceTypes.Application, + namespace: appNode, + }); + expect(readAppDefinition).toMatchObject(appDefinition); + }); - test("application owner can be changed", async () => { - const newOwner = new Keys(); - await replenish(newOwner.getAddress()); - const newOwnerIam = await createIam(newOwner.privateKey); + test("application owner can be changed", async () => { + const newOwner = new Keys(); + await replenish(newOwner.getAddress()); + const newOwnerIam = await createIam(newOwner.privateKey); - expect(await rootOwnerIam.isOwner({ domain: appNode, user: rootOwner.address })); + expect(await rootOwnerIam.isOwner({ domain: appNode, user: rootOwner.address })); - await rootOwnerIam.changeAppOwnership({ - namespace: appNode, - newOwner: newOwner.getAddress() - }); + await rootOwnerIam.changeAppOwnership({ + namespace: appNode, + newOwner: newOwner.getAddress(), + }); - expect(await rootOwnerIam.isOwner({ domain: appNode, user: newOwner.getAddress() })); + expect(await rootOwnerIam.isOwner({ domain: appNode, user: newOwner.getAddress() })); - await newOwnerIam.changeAppOwnership({ - namespace: appNode, - newOwner: rootOwner.address + await newOwnerIam.changeAppOwnership({ + namespace: appNode, + newOwner: rootOwner.address, + }); + + expect(await rootOwnerIam.isOwner({ domain: appNode, user: rootOwner.address })); }); - expect(await rootOwnerIam.isOwner({ domain: appNode, user: rootOwner.address })); - }); + test("application can be deleted", async () => { + expect(await rootOwnerIam.checkExistenceOfDomain({ domain: appNode })).toBe(true); - test("application can be deleted", async () => { - expect(await rootOwnerIam.checkExistenceOfDomain({ domain: appNode })).toBe(true); + await rootOwnerIam.deleteApplication({ + namespace: appNode, + }); - await rootOwnerIam.deleteApplication({ - namespace: appNode + expect(await rootOwnerIam.checkExistenceOfDomain({ domain: appNode })).toBe(false); }); - - expect(await rootOwnerIam.checkExistenceOfDomain({ domain: appNode })).toBe(false); - }); }; diff --git a/test/initializeConnection.testSuite.ts b/test/initializeConnection.testSuite.ts index 16d5b757..7dc43cf0 100644 --- a/test/initializeConnection.testSuite.ts +++ b/test/initializeConnection.testSuite.ts @@ -6,16 +6,14 @@ import { WalletProvider } from "../src/types/WalletProvider"; const iam_withoutKey = new IAM({ rpcUrl }); export const initializeConnectionTests = () => { - test("initializeConnection requires privateKey or walletProvider enum", async () => { - await expect(iam_withoutKey.initializeConnection()).rejects.toThrow( - ERROR_MESSAGES.WALLET_TYPE_NOT_PROVIDED - ); - }); + test("initializeConnection requires privateKey or walletProvider enum", async () => { + await expect(iam_withoutKey.initializeConnection()).rejects.toThrow(ERROR_MESSAGES.WALLET_TYPE_NOT_PROVIDED); + }); - test("initializeConnection requires walletProvider to be known value", async () => { - // Typescript only checks on transpilation, need to verify error is thrown if unsupported value is passed in. - await expect( - iam_withoutKey.initializeConnection({ walletProvider: "not_a_provider" as WalletProvider }) - ).rejects.toThrow(ERROR_MESSAGES.WALLET_PROVIDER_NOT_SUPPORTED); - }); + test("initializeConnection requires walletProvider to be known value", async () => { + // Typescript only checks on transpilation, need to verify error is thrown if unsupported value is passed in. + await expect( + iam_withoutKey.initializeConnection({ walletProvider: "not_a_provider" as WalletProvider }), + ).rejects.toThrow(ERROR_MESSAGES.WALLET_PROVIDER_NOT_SUPPORTED); + }); }; diff --git a/test/testUtils/mocks.ts b/test/testUtils/mocks.ts index a8a580d1..53a6eb54 100644 --- a/test/testUtils/mocks.ts +++ b/test/testUtils/mocks.ts @@ -48,9 +48,9 @@ export const restoreCacheClient = () => { }; let _jsonCodec; -export const mockJsonCodec = () => { +export const mockJsonCodec = () => { ({ _jsonCodec } = Reflect.get(IAM, "prototype")); - const jsonCodec = JSONCodec(); + const jsonCodec = JSONCodec(); Reflect.set(IAM.prototype, "_jsonCodec", jsonCodec); return jsonCodec; };