From c0a91c9029e1ce32924a30f19f5a9165971c6303 Mon Sep 17 00:00:00 2001 From: Jamie Li Date: Fri, 6 Sep 2024 09:30:14 -0700 Subject: [PATCH] Make sep31 /info response fields optional (#154) --- @stellar/anchor-tests/src/tests/sep31/info.ts | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/@stellar/anchor-tests/src/tests/sep31/info.ts b/@stellar/anchor-tests/src/tests/sep31/info.ts index 4317aca..c1bb4db 100644 --- a/@stellar/anchor-tests/src/tests/sep31/info.ts +++ b/@stellar/anchor-tests/src/tests/sep31/info.ts @@ -145,7 +145,7 @@ export const hasExpectedAssetEnabled: Test = { }; const hasExpectedTransactionFields: Test = { - assertion: "has configured transaction 'fields'", + assertion: "check optional transaction 'fields'", sep: 31, group: "GET /info", dependencies: [hasValidInfoSchema], @@ -184,31 +184,33 @@ const hasExpectedTransactionFields: Test = { // this is checked before tests are run throw new Error("improperly configured"); const result: Result = { networkCalls: [] }; - const responseTransactionFields = - this.context.expects.sep31InfoObj.receive[config.assetCode].fields - .transaction; - const responseTransactionFieldNames = Object.keys( - responseTransactionFields, - ); - const configuredTransactionFieldNames = Object.keys( - config.sepConfig["31"].transactionFields, - ); - for (const fieldName of responseTransactionFieldNames) { - if ( - !responseTransactionFields[fieldName].optional && - !configuredTransactionFieldNames.includes(fieldName) - ) { - result.failure = makeFailure(this.failureModes.UNEXPECTED_FIELD, { - field: fieldName, - }); - return result; + if (this.context.expects.sep31InfoObj.receive[config.assetCode].fields) { + const responseTransactionFields = + this.context.expects.sep31InfoObj.receive[config.assetCode].fields + .transaction; + const responseTransactionFieldNames = Object.keys( + responseTransactionFields, + ); + const configuredTransactionFieldNames = Object.keys( + config.sepConfig["31"].transactionFields, + ); + for (const fieldName of responseTransactionFieldNames) { + if ( + !responseTransactionFields[fieldName].optional && + !configuredTransactionFieldNames.includes(fieldName) + ) { + result.failure = makeFailure(this.failureModes.UNEXPECTED_FIELD, { + field: fieldName, + }); + return result; + } } - } - for (const fieldName of configuredTransactionFieldNames) { - if (!responseTransactionFieldNames.includes(fieldName)) { - result.failure = makeFailure(this.failureModes.FIELD_NOT_FOUND); - result.expected = fieldName; - return result; + for (const fieldName of configuredTransactionFieldNames) { + if (!responseTransactionFieldNames.includes(fieldName)) { + result.failure = makeFailure(this.failureModes.FIELD_NOT_FOUND); + result.expected = fieldName; + return result; + } } } return result;