Skip to content

Commit 618aa48

Browse files
committed
chore: 7702 validation improvements
1 parent ee47933 commit 618aa48

2 files changed

Lines changed: 20 additions & 5 deletions

File tree

packages/delegation-toolkit/src/actions/isValid7702Implementation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ export type IsValid7702ImplementationParameters = {
2626
* @returns The delegated contract address or null if not a valid delegation.
2727
*/
2828
function extractDelegatedAddress(code: Hex | undefined): Address | null {
29-
if (!code || code.length !== 48) {
29+
if (code?.length !== 48) {
3030
// 0x (2 chars) + ef0100 (6 chars) + address (40 chars) = 48 chars
3131
return null;
3232
}
3333

34-
if (!code.startsWith(DELEGATION_PREFIX)) {
34+
if (!code.toLowerCase().startsWith(DELEGATION_PREFIX.toLowerCase())) {
3535
return null;
3636
}
3737

packages/delegation-toolkit/test/actions/isValid7702Implementation.test.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ describe('isValid7702Implementation', () => {
7676
expect(result).toBe(true);
7777
});
7878

79-
it('should return false when delegation prefix uses different case (case-sensitive prefix)', async () => {
79+
it('should return true when delegation prefix uses different case (case-insensitive prefix)', async () => {
8080
const testAddress = '0xdddddddddddddddddddddddddddddddddddddddd';
81-
// Use uppercase delegation prefix - this should fail because startsWith is case-sensitive
81+
// Use uppercase delegation prefix - this should now pass because we handle case-insensitivity
8282
const delegationCode = '0xEF01004000000000000000000000000000000000000000';
8383
mockGetCode.mockResolvedValue(delegationCode);
8484

@@ -88,7 +88,22 @@ describe('isValid7702Implementation', () => {
8888
environment: mockEnvironment,
8989
});
9090

91-
expect(result).toBe(false);
91+
expect(result).toBe(true);
92+
});
93+
94+
it('should return true when delegation prefix uses mixed case', async () => {
95+
const testAddress = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
96+
// Use mixed case delegation prefix to test case-insensitivity thoroughly
97+
const delegationCode = '0xEf01004000000000000000000000000000000000000000';
98+
mockGetCode.mockResolvedValue(delegationCode);
99+
100+
const result = await isValid7702Implementation({
101+
client: publicClient,
102+
accountAddress: testAddress,
103+
environment: mockEnvironment,
104+
});
105+
106+
expect(result).toBe(true);
92107
});
93108
});
94109

0 commit comments

Comments
 (0)