From 8eea64842faf3da9e509ea6b7b96d70145c5cdcb Mon Sep 17 00:00:00 2001 From: Yosif Hamed Date: Thu, 30 Nov 2023 17:17:52 +0200 Subject: [PATCH] Add validation for paymaster sign accountOp --- src/interfaces/accountOp.ts | 4 ++++ src/libs/schemaValidation/generateSchemas.ts | 6 +++-- .../schemas/RelayerResponsePaymasterSign.json | 23 +++++++++++++++++++ src/libs/schemaValidation/validateScehmas.ts | 3 ++- src/libs/schemaValidation/validation.test.ts | 8 +++++++ 5 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 src/interfaces/accountOp.ts create mode 100644 src/libs/schemaValidation/schemas/RelayerResponsePaymasterSign.json diff --git a/src/interfaces/accountOp.ts b/src/interfaces/accountOp.ts new file mode 100644 index 000000000..0a2b72b2b --- /dev/null +++ b/src/interfaces/accountOp.ts @@ -0,0 +1,4 @@ +export interface RelayerResponsePaymasterSign { + data: { paymasterAndData: any } + errorState: any[] +} diff --git a/src/libs/schemaValidation/generateSchemas.ts b/src/libs/schemaValidation/generateSchemas.ts index 144c6f57c..e24dbb512 100644 --- a/src/libs/schemaValidation/generateSchemas.ts +++ b/src/libs/schemaValidation/generateSchemas.ts @@ -16,7 +16,8 @@ const source = TJS.getProgramFromFiles( [ resolve('src', 'interfaces', 'emailVault.ts'), resolve('src', 'interfaces', 'account.ts'), - resolve('src', 'interfaces', 'portfolio.ts') + resolve('src', 'interfaces', 'portfolio.ts'), + resolve('src', 'interfaces', 'accountOp.ts') ], COMPILER_OPTIONS, __dirname @@ -30,7 +31,8 @@ const allInterfaces = [ 'RecoveryKey', 'EmailVaultData', 'RelayerResponseLinkedAccount', - 'RelayerReponsePortfolioAdditional' + 'RelayerReponsePortfolioAdditional', + 'RelayerResponsePaymasterSign' ] allInterfaces.forEach((interfaceName) => { diff --git a/src/libs/schemaValidation/schemas/RelayerResponsePaymasterSign.json b/src/libs/schemaValidation/schemas/RelayerResponsePaymasterSign.json new file mode 100644 index 000000000..cdb4c2dd3 --- /dev/null +++ b/src/libs/schemaValidation/schemas/RelayerResponsePaymasterSign.json @@ -0,0 +1,23 @@ +{ + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "paymasterAndData": {} + }, + "required": [ + "paymasterAndData" + ] + }, + "errorState": { + "type": "array", + "items": {} + } + }, + "required": [ + "data", + "errorState" + ], + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/src/libs/schemaValidation/validateScehmas.ts b/src/libs/schemaValidation/validateScehmas.ts index f4552cd15..2e3ecc943 100644 --- a/src/libs/schemaValidation/validateScehmas.ts +++ b/src/libs/schemaValidation/validateScehmas.ts @@ -10,5 +10,6 @@ export const schemas: any = { RelayerResponseLinkedAccount: ajv.compile(require('./schemas/RelayerResponseLinkedAccount.json')), RelayerReponsePortfolioAdditional: ajv.compile( require('./schemas/RelayerReponsePortfolioAdditional.json') - ) + ), + RelayerResponsePaymasterSign: ajv.compile(require('./schemas/RelayerResponsePaymasterSign.json')) } diff --git a/src/libs/schemaValidation/validation.test.ts b/src/libs/schemaValidation/validation.test.ts index 14eda9328..282913327 100644 --- a/src/libs/schemaValidation/validation.test.ts +++ b/src/libs/schemaValidation/validation.test.ts @@ -33,6 +33,9 @@ const data = { errors: [new Error('asd')] } ] + }, + RelayerResponsePaymasterSign: { + correct: [{ data: { paymasterAndData: 'paymasterAndData' }, errorState: [] }] } } @@ -42,4 +45,9 @@ describe('Describe', () => { expect(res).toBeTruthy() expect(schemas.EmailVaultData.errors).toBeNull() }) + test('RelayerResponsePaymasterSign', () => { + const res = schemas.RelayerResponsePaymasterSign(data.RelayerResponsePaymasterSign.correct[0]) + expect(res).toBeTruthy() + expect(schemas.RelayerResponsePaymasterSign.errors).toBeNull() + }) })