diff --git a/src/actions/ens/getEnsName.test.ts b/src/actions/ens/getEnsName.test.ts index 6640ed56a7..a281250462 100644 --- a/src/actions/ens/getEnsName.test.ts +++ b/src/actions/ens/getEnsName.test.ts @@ -22,7 +22,7 @@ const client = anvilMainnet.getClient() beforeAll(async () => { await reset(client, { - blockNumber: 23_093_073n, + blockNumber: 25_382_400n, jsonRpcUrl: anvilMainnet.forkUrl, }) await setVitalikResolver() @@ -138,6 +138,22 @@ describe('primary name with non-contract resolver', () => { }) }) +test('primary name with offchain resolver', async () => { + await expect( + getEnsName(client, { + address: '0xEB4200f750335eFb67E726485445d302D64B1c8A', + }), + ).resolves.toMatchInlineSnapshot('"test.antistupid.com"') +}) + +test('unnormalized primary name', async () => { + await expect( + getEnsName(client, { + address: '0xb404Af9A235Be881335d8898B5B487dc9Cd5ed9D', + }), + ).resolves.toMatchInlineSnapshot('null') +}) + describe('http error', () => { let server: Awaited> | undefined beforeAll(async () => { diff --git a/src/actions/ens/getEnsName.ts b/src/actions/ens/getEnsName.ts index 29b6a0f5c2..ecca47ec96 100644 --- a/src/actions/ens/getEnsName.ts +++ b/src/actions/ens/getEnsName.ts @@ -19,6 +19,7 @@ import { type ReadContractParameters, readContract, } from '../public/readContract.js' +import { normalize } from '../../ens/index.js' export type GetEnsNameParameters = Prettify< Pick & { @@ -131,6 +132,8 @@ export async function getEnsName( const [name] = await readContractAction(readContractParameters) + if (!isNormalized(name)) return null + return name || null } catch (err) { if (strict) throw err @@ -138,3 +141,11 @@ export async function getEnsName( throw err } } + +function isNormalized(name: string) { + try { + return name === normalize(name) + } catch { + return + } +}