From 7aff34679a6ab9cd04c50c6f3aefc86aa30a06c1 Mon Sep 17 00:00:00 2001 From: ieow Date: Tue, 11 Feb 2025 10:08:57 +0800 Subject: [PATCH 1/2] feat: overwrite keytype sigtype --- .../src/nodeDetailManager.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/fetch-node-details/src/nodeDetailManager.ts b/packages/fetch-node-details/src/nodeDetailManager.ts index 880ee8a..d8bc954 100644 --- a/packages/fetch-node-details/src/nodeDetailManager.ts +++ b/packages/fetch-node-details/src/nodeDetailManager.ts @@ -83,13 +83,26 @@ class NodeDetailManager { }; } - async getNodeDetails({ verifier, verifierId }: { verifier: string; verifierId: string }): Promise { + async getNodeDetails({ + verifier, + verifierId, + keyType, + sigType, + }: { + verifier: string; + verifierId: string; + keyType?: WEB3AUTH_KEY_TYPE; + sigType?: WEB3AUTH_SIG_TYPE; + }): Promise { try { if (this.updated && !MULTI_CLUSTER_NETWORKS.includes(this.network as TORUS_LEGACY_NETWORK_TYPE)) return this._nodeDetails; + const finalKeyType = keyType ?? this._keyType; + const finalSigType = sigType ?? this._sigType; + try { const { nodeDetails } = await get<{ nodeDetails: INodeDetails }>( - `${this.fndServerEndpoint}?network=${this.network}&verifier=${verifier}&verifierId=${verifierId}&keyType=${this._keyType}&sigType=${this._sigType}` + `${this.fndServerEndpoint}?network=${this.network}&verifier=${verifier}&verifierId=${verifierId}&keyType=${finalKeyType}&sigType=${finalSigType}` ); this.setNodeDetails(nodeDetails); @@ -98,7 +111,7 @@ class NodeDetailManager { log.error("Failed to fetch node details from server, using local.", error); } - const nodeDetails = fetchLocalConfig(this.network as TORUS_NETWORK_TYPE, this._keyType, this._sigType); + const nodeDetails = fetchLocalConfig(this.network as TORUS_NETWORK_TYPE, finalKeyType, finalSigType); if (!nodeDetails) throw new Error("Failed to fetch node details"); this.setNodeDetails(nodeDetails); return this._nodeDetails; From c9c7fc2a2bd1a369072415a1616c9b4a4d8e2e6d Mon Sep 17 00:00:00 2001 From: ieow Date: Wed, 12 Feb 2025 10:42:36 +0800 Subject: [PATCH 2/2] fix: add tests --- .../test/nodeDetail.test.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/fetch-node-details/test/nodeDetail.test.ts b/packages/fetch-node-details/test/nodeDetail.test.ts index 483f42a..481c017 100644 --- a/packages/fetch-node-details/test/nodeDetail.test.ts +++ b/packages/fetch-node-details/test/nodeDetail.test.ts @@ -124,4 +124,28 @@ describe("Fetch Node Details", function () { delete details.updated; deepStrictEqual(details, getSapphireNodeDetails(TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET)); }); + + it("#should use override keytype and signType if provided", async function () { + const nodeDetailManager = new NodeDetailManager({ + fndServerEndpoint, + enableLogging: true, + }); + const details = await nodeDetailManager.getNodeDetails({ + verifier: "google", + verifierId: "hello@tor.us", + keyType: "ed25519", + sigType: "ed25519", + }); + delete details.updated; + deepStrictEqual(details, getSapphireNodeDetails(TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET, undefined, "ed25519", "ed25519")); + + const details2 = await nodeDetailManager.getNodeDetails({ + verifier: "google", + verifierId: "hello@tor.us", + keyType: "secp256k1", + sigType: "bip340", + }); + delete details2.updated; + deepStrictEqual(details2, getSapphireNodeDetails(TORUS_SAPPHIRE_NETWORK.SAPPHIRE_MAINNET, undefined, "secp256k1", "bip340")); + }); });