From 910b52b0e142c5d857b28fe68a83853f3624dd0e Mon Sep 17 00:00:00 2001 From: banklesss <105349292+banklesss@users.noreply.github.com> Date: Wed, 24 Jan 2024 17:10:25 +0100 Subject: [PATCH] fix(resolver): wrong blockchain error (#3037) Signed-off-by: banklesss <105349292+banklesss@users.noreply.github.com> --- .../src/adapters/unstoppable/api.test.ts | 4 ++-- .../resolver/src/adapters/unstoppable/api.ts | 18 +++++++++--------- .../src/utils/isResolvableDomain.test.ts | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/resolver/src/adapters/unstoppable/api.test.ts b/packages/resolver/src/adapters/unstoppable/api.test.ts index 1f5589a0d3..36437bc2d7 100644 --- a/packages/resolver/src/adapters/unstoppable/api.test.ts +++ b/packages/resolver/src/adapters/unstoppable/api.test.ts @@ -211,7 +211,7 @@ describe('getCryptoAddress', () => { }) await expect(() => getCryptoAddress(domain)).rejects.toThrow( - Resolver.Errors.NotFound, + Resolver.Errors.WrongBlockchain, ) expect(mockFetchData).toHaveBeenCalledWith( { @@ -225,7 +225,7 @@ describe('getCryptoAddress', () => { ) }) - it('should throw invalid blockchain if the response contain the address for other blockchain', async () => { + it('should throw wrong blockchain if the response contain the address for other blockchain', async () => { const domain = mockApiResponse.meta.domain const expectedUrl = `${unstoppableApiConfig.mainnet.getCryptoAddress}${domain}` const invalidApiResponse = { diff --git a/packages/resolver/src/adapters/unstoppable/api.ts b/packages/resolver/src/adapters/unstoppable/api.ts index 5b0c4cb625..bf30eb32f7 100644 --- a/packages/resolver/src/adapters/unstoppable/api.ts +++ b/packages/resolver/src/adapters/unstoppable/api.ts @@ -40,19 +40,16 @@ export const unstoppableApiGetCryptoAddress = ( handleApiError(error) } else { + // parsing const safeParsedAdaResponse = UnstoppableApiAdaResponseSchema.safeParse( response.value.data, ) const safeParsedGeneralResponse = UnstoppableApiGeneralResponseSchema.safeParse(response.value.data) + // checking const hasCardanoAddress = safeParsedAdaResponse.success - const hasOtherBlockchainAddress = - !hasCardanoAddress && - safeParsedGeneralResponse.success && - Object.keys(response.value.data.records).length > 0 - const hasNotAnyAddress = - !hasOtherBlockchainAddress && safeParsedGeneralResponse.success + const hasOtherBlockchainAddress = safeParsedGeneralResponse.success if (hasCardanoAddress) return response.value.data.records['crypto.ADA.address'] @@ -60,8 +57,6 @@ export const unstoppableApiGetCryptoAddress = ( if (hasOtherBlockchainAddress) throw new Resolver.Errors.WrongBlockchain() - if (hasNotAnyAddress) throw new Resolver.Errors.NotFound() - throw new Resolver.Errors.InvalidResponse() } } catch (error: unknown) { @@ -104,10 +99,13 @@ const UnstoppableApiAdaResponseSchema = z.object({ }) const UnstoppableApiGeneralResponseSchema = z.object({ + meta: z.object({ + blockchain: z.string(), + }), records: z.record(z.string(), z.string()), }) -// https://docs.unstoppabledomains.com/openapi/resolution/ +// curl https://api.unstoppabledomains.com/resolve/supported_tlds export const unstoppableSupportedTlds = [ '.x', '.polygon', @@ -125,6 +123,8 @@ export const unstoppableSupportedTlds = [ '.anime', '.manga', '.go', + '.altimist', + '.unstoppable', '.zil', '.eth', ] as const diff --git a/packages/resolver/src/utils/isResolvableDomain.test.ts b/packages/resolver/src/utils/isResolvableDomain.test.ts index fcd26dda8e..c8d3557de3 100644 --- a/packages/resolver/src/utils/isResolvableDomain.test.ts +++ b/packages/resolver/src/utils/isResolvableDomain.test.ts @@ -23,8 +23,8 @@ describe('isResolvableDomain', () => { ${'ud.eth'} | ${true} ${'$adahandle'} | ${true} ${'cns.ada'} | ${true} + ${'ud.unstoppable'} | ${true} ${'ud.com'} | ${false} - ${'ud.unstoppable'} | ${false} ${'other.uk'} | ${false} ${'$'} | ${false} `('should return $expected for $resolve', ({resolve, expected}) => {