From 09458fd24755fee8102895a9db33a65deb245c74 Mon Sep 17 00:00:00 2001 From: "Fifo (Fabricius Zatti)" <62725221+fazzatti@users.noreply.github.com> Date: Fri, 10 May 2024 13:46:34 -0300 Subject: [PATCH] fix: simulation fails for tx missing soroban auth entry (#146) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) * test: add build transaction unit tests * chore: merge with develop * test: add build transaction failure tests * refactor: make networkConfig variable private * test: add unit test for fee bump pipeline (#113) * test: add unit tests for classic signature requirements pipeline (#115) * Adjustments to release library as open source 🚀 (#107) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) --------- Co-authored-by: Bruno Nascimento * fix: setoptions op threshold requirement * fix: revoke operation variants threshold calculation * test: add unit tests to classig sign requirements pipeline * refactor: rearrange as per aaa pattern --------- Co-authored-by: Bruno Nascimento * Add unit tests for simulate transaction pipeline (#117) * refactor: eslint adjustments * test: initial simulate transaction unit tests * feat: add assemble transaction sp error * test: complete coverage for simulate transaction pipeline * refactor: clean up comments and adjust imports * Add unit tests for classic transaction pipeline (#118) * test: add unit tests for classic transaction pipeline * refactor: adjust imports * test: add unit tests for soroban transaction pipeline (#119) * test: add unit test for sign transaction pipeline * test: add unit test for submit transaction pipeline * Add unit tests soroban auth (#123) * fix: remove validation from contract engine initialization * style: remove comment * feat: modify account handler mocker payload * test: add unit test to soroban auth pipeline --------- Co-authored-by: Bruno Nascimento * Complete unit test coverage for account handlers (#125) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * Create test-coverage.yml action (#126) * Create test-coverage.yml action * Update test-coverage.yml * Add unit test for base account handler (#127) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * test: add unit tests for base account handler * Add unit test for soroban get transaction pipeline (#124) * refactor: soroban get transaction pipeline constructor * fix: remove old log * test: add unit tests for soroban get transaction pipeline * style: adjust imports * Add unit tests for the classic asset handler (#128) * refactor: adjust outter imports/exports * test: add unit tests for the classic asset handler * feat: remove issuer requirement for classic assets (#129) * refactor: allow for no payload for dah * feat: remove issuer necessity for classic assets to better include native * test: add unit test to soroban token handler (#131) * feat: remove helper classes for account (#132) * feat: remove helper classes for account * refactor: remove unused error for base account * test: complete unit coverage for base account errors * Standardize default network configs and custom (#133) * feat: standardize network config options as functions under network * test: adjust tests for new network config format * feat: require rpc url for default rpc handler to initialize * feat: require horizon url to initialize default horizon handler * test: remove local testing from coverage * feat: remove soroban client * feat: convert horizon load account error to sp error * feat: add allowhttp to network config * test: add unit tests to default horizon handler * test: add default rpc handler unit tests * fix: account changes with network new config format * test: add network configuration unit tests * refactor: allowhttp object Co-authored-by: Caio Teixeira --------- Co-authored-by: Caio Teixeira * packaging: bump version to v0.8.0 * Fix merge issues (#137) * feat: standardize network config options as functions under network * fix: duplicate imports * Update stellar sdk (#139) * Release v0.8.0 (#136) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) * test: add build transaction unit tests * chore: merge with develop * test: add build transaction failure tests * refactor: make networkConfig variable private * test: add unit test for fee bump pipeline (#113) * test: add unit tests for classic signature requirements pipeline (#115) * Adjustments to release library as open source 🚀 (#107) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) --------- Co-authored-by: Bruno Nascimento * fix: setoptions op threshold requirement * fix: revoke operation variants threshold calculation * test: add unit tests to classig sign requirements pipeline * refactor: rearrange as per aaa pattern --------- Co-authored-by: Bruno Nascimento * Add unit tests for simulate transaction pipeline (#117) * refactor: eslint adjustments * test: initial simulate transaction unit tests * feat: add assemble transaction sp error * test: complete coverage for simulate transaction pipeline * refactor: clean up comments and adjust imports * Add unit tests for classic transaction pipeline (#118) * test: add unit tests for classic transaction pipeline * refactor: adjust imports * test: add unit tests for soroban transaction pipeline (#119) * test: add unit test for sign transaction pipeline * test: add unit test for submit transaction pipeline * Add unit tests soroban auth (#123) * fix: remove validation from contract engine initialization * style: remove comment * feat: modify account handler mocker payload * test: add unit test to soroban auth pipeline --------- Co-authored-by: Bruno Nascimento * Complete unit test coverage for account handlers (#125) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * Create test-coverage.yml action (#126) * Create test-coverage.yml action * Update test-coverage.yml * Add unit test for base account handler (#127) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * test: add unit tests for base account handler * Add unit test for soroban get transaction pipeline (#124) * refactor: soroban get transaction pipeline constructor * fix: remove old log * test: add unit tests for soroban get transaction pipeline * style: adjust imports * Add unit tests for the classic asset handler (#128) * refactor: adjust outter imports/exports * test: add unit tests for the classic asset handler * feat: remove issuer requirement for classic assets (#129) * refactor: allow for no payload for dah * feat: remove issuer necessity for classic assets to better include native * test: add unit test to soroban token handler (#131) * feat: remove helper classes for account (#132) * feat: remove helper classes for account * refactor: remove unused error for base account * test: complete unit coverage for base account errors * Standardize default network configs and custom (#133) * feat: standardize network config options as functions under network * test: adjust tests for new network config format * feat: require rpc url for default rpc handler to initialize * feat: require horizon url to initialize default horizon handler * test: remove local testing from coverage * feat: remove soroban client * feat: convert horizon load account error to sp error * feat: add allowhttp to network config * test: add unit tests to default horizon handler * test: add default rpc handler unit tests * fix: account changes with network new config format * test: add network configuration unit tests * refactor: allowhttp object Co-authored-by: Caio Teixeira --------- Co-authored-by: Caio Teixeira * packaging: bump version to v0.8.0 * Fix merge issues (#137) * feat: standardize network config options as functions under network * fix: duplicate imports --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira * chore: update stellar sdk * feat: add function to return secret key to default account handler * test: default account handler getters --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira * packaging: bump version to 0.8.1 * Minor fixes (#141) * feat: standardize network config options as functions under network * fix: duplicate imports * fix: read from contract output * chore: bump version * chore: bump version to 0.8.2 * Contract engine improvements (#144) * feat: standardize network config options as functions under network * fix: duplicate imports * version 0.8.2 (#142) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) * test: add build transaction unit tests * chore: merge with develop * test: add build transaction failure tests * refactor: make networkConfig variable private * test: add unit test for fee bump pipeline (#113) * test: add unit tests for classic signature requirements pipeline (#115) * Adjustments to release library as open source 🚀 (#107) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) --------- Co-authored-by: Bruno Nascimento * fix: setoptions op threshold requirement * fix: revoke operation variants threshold calculation * test: add unit tests to classig sign requirements pipeline * refactor: rearrange as per aaa pattern --------- Co-authored-by: Bruno Nascimento * Add unit tests for simulate transaction pipeline (#117) * refactor: eslint adjustments * test: initial simulate transaction unit tests * feat: add assemble transaction sp error * test: complete coverage for simulate transaction pipeline * refactor: clean up comments and adjust imports * Add unit tests for classic transaction pipeline (#118) * test: add unit tests for classic transaction pipeline * refactor: adjust imports * test: add unit tests for soroban transaction pipeline (#119) * test: add unit test for sign transaction pipeline * test: add unit test for submit transaction pipeline * Add unit tests soroban auth (#123) * fix: remove validation from contract engine initialization * style: remove comment * feat: modify account handler mocker payload * test: add unit test to soroban auth pipeline --------- Co-authored-by: Bruno Nascimento * Complete unit test coverage for account handlers (#125) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * Create test-coverage.yml action (#126) * Create test-coverage.yml action * Update test-coverage.yml * Add unit test for base account handler (#127) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * test: add unit tests for base account handler * Add unit test for soroban get transaction pipeline (#124) * refactor: soroban get transaction pipeline constructor * fix: remove old log * test: add unit tests for soroban get transaction pipeline * style: adjust imports * Add unit tests for the classic asset handler (#128) * refactor: adjust outter imports/exports * test: add unit tests for the classic asset handler * feat: remove issuer requirement for classic assets (#129) * refactor: allow for no payload for dah * feat: remove issuer necessity for classic assets to better include native * test: add unit test to soroban token handler (#131) * feat: remove helper classes for account (#132) * feat: remove helper classes for account * refactor: remove unused error for base account * test: complete unit coverage for base account errors * Standardize default network configs and custom (#133) * feat: standardize network config options as functions under network * test: adjust tests for new network config format * feat: require rpc url for default rpc handler to initialize * feat: require horizon url to initialize default horizon handler * test: remove local testing from coverage * feat: remove soroban client * feat: convert horizon load account error to sp error * feat: add allowhttp to network config * test: add unit tests to default horizon handler * test: add default rpc handler unit tests * fix: account changes with network new config format * test: add network configuration unit tests * refactor: allowhttp object Co-authored-by: Caio Teixeira --------- Co-authored-by: Caio Teixeira * packaging: bump version to v0.8.0 * Fix merge issues (#137) * feat: standardize network config options as functions under network * fix: duplicate imports * Update stellar sdk (#139) * Release v0.8.0 (#136) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) * test: add build transaction unit tests * chore: merge with develop * test: add build transaction failure tests * refactor: make networkConfig variable private * test: add unit test for fee bump pipeline (#113) * test: add unit tests for classic signature requirements pipeline (#115) * Adjustments to release library as open source 🚀 (#107) * chore: add jest setup to coverage all files (#101) * refactor: fix circular import * test: contract engine initial structure * Contract Engine unit tests (#103) * refactor: contract engine errors * feat: validate required initialization arguments * test: contract engine initialization workflow * test: complete contract engine main coverage * refactor: update deprecated methods * refactor: contract engine errors (#104) * Update docs and minor adjustments to jsdocs (#105) * fix: missing error CE009 * docs: update jsdoc * docs: update readme for public release * packaging: bump version to 0.7.0 (#108) --------- Co-authored-by: Bruno Nascimento * fix: setoptions op threshold requirement * fix: revoke operation variants threshold calculation * test: add unit tests to classig sign requirements pipeline * refactor: rearrange as per aaa pattern --------- Co-authored-by: Bruno Nascimento * Add unit tests for simulate transaction pipeline (#117) * refactor: eslint adjustments * test: initial simulate transaction unit tests * feat: add assemble transaction sp error * test: complete coverage for simulate transaction pipeline * refactor: clean up comments and adjust imports * Add unit tests for classic transaction pipeline (#118) * test: add unit tests for classic transaction pipeline * refactor: adjust imports * test: add unit tests for soroban transaction pipeline (#119) * test: add unit test for sign transaction pipeline * test: add unit test for submit transaction pipeline * Add unit tests soroban auth (#123) * fix: remove validation from contract engine initialization * style: remove comment * feat: modify account handler mocker payload * test: add unit test to soroban auth pipeline --------- Co-authored-by: Bruno Nascimento * Complete unit test coverage for account handlers (#125) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * Create test-coverage.yml action (#126) * Create test-coverage.yml action * Update test-coverage.yml * Add unit test for base account handler (#127) * test: add unit tests for the default account handler * test: validate error to sign auth entry * feat: add fee bump type to sign payload * test: refactor freighter account handler unit tests * test: add unit tests for base account handler * Add unit test for soroban get transaction pipeline (#124) * refactor: soroban get transaction pipeline constructor * fix: remove old log * test: add unit tests for soroban get transaction pipeline * style: adjust imports * Add unit tests for the classic asset handler (#128) * refactor: adjust outter imports/exports * test: add unit tests for the classic asset handler * feat: remove issuer requirement for classic assets (#129) * refactor: allow for no payload for dah * feat: remove issuer necessity for classic assets to better include native * test: add unit test to soroban token handler (#131) * feat: remove helper classes for account (#132) * feat: remove helper classes for account * refactor: remove unused error for base account * test: complete unit coverage for base account errors * Standardize default network configs and custom (#133) * feat: standardize network config options as functions under network * test: adjust tests for new network config format * feat: require rpc url for default rpc handler to initialize * feat: require horizon url to initialize default horizon handler * test: remove local testing from coverage * feat: remove soroban client * feat: convert horizon load account error to sp error * feat: add allowhttp to network config * test: add unit tests to default horizon handler * test: add default rpc handler unit tests * fix: account changes with network new config format * test: add network configuration unit tests * refactor: allowhttp object Co-authored-by: Caio Teixeira --------- Co-authored-by: Caio Teixeira * packaging: bump version to v0.8.0 * Fix merge issues (#137) * feat: standardize network config options as functions under network * fix: duplicate imports --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira * chore: update stellar sdk * feat: add function to return secret key to default account handler * test: default account handler getters --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira * packaging: bump version to 0.8.1 * Minor fixes (#141) * feat: standardize network config options as functions under network * fix: duplicate imports * fix: read from contract output * chore: bump version * chore: bump version to 0.8.2 --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira * Documentation (#143) * GITBOOK-34: No subject * GITBOOK-35: update issuing your first asset tutorial * GITBOOK-36: update CD tutorial * GITBOOK-37: update profiler plugin * GITBOOK-38: Remove soroban token duplicate link * GITBOOK-39: update soroban token handler * GITBOOK-40: Improve Validation Cloud RPC page * GITBOOK-41: Improve the Welcome Page * GITBOOK-42: Improve Quick Start page * GITBOOK-45: Soroban Auth Pipeline * GITBOOK-47: update general doc --------- Co-authored-by: Fernanda Hahn * feat: remove spec requirement to instantiate contract engine * test: add unit test to spec requirement * feat: export stellar-sdk contract spec --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira Co-authored-by: Fernanda Hahn * chore: bump version to 0.8.3 * fix: soroban auth simulation fails if partial auth entries are present * chore: bump version to 0.8.4 --------- Co-authored-by: Bruno Nascimento Co-authored-by: Caio Teixeira Co-authored-by: Fernanda Hahn --- package.json | 2 +- .../core/pipelines/soroban-auth/index.ts | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1529b6ac..d9301112 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "stellar-plus", - "version": "0.8.3", + "version": "0.8.4", "description": "beta version of stellar-plus, an all-in-one sdk for the Stellar blockchain", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/src/stellar-plus/core/pipelines/soroban-auth/index.ts b/src/stellar-plus/core/pipelines/soroban-auth/index.ts index 9d7893a1..86b41e45 100644 --- a/src/stellar-plus/core/pipelines/soroban-auth/index.ts +++ b/src/stellar-plus/core/pipelines/soroban-auth/index.ts @@ -83,7 +83,14 @@ export class SorobanAuthPipeline extends ConveyorBelt< let updatedTransaction try { - updatedTransaction = this.updateTransaction(transaction, authEntries, simulation.transactionData) + updatedTransaction = this.updateTransaction( + transaction, + [ + ...this.getSourceCredentialAuth(simulation.result?.auth), // Reinject unsigned source credentials. These are signed in the classic signing pipeline + ...authEntries, + ], + simulation.transactionData + ) } catch (error) { throw PSAError.couldntUpdateTransaction( error as Error, @@ -182,4 +189,13 @@ export class SorobanAuthPipeline extends ConveyorBelt< }) : [] } + + protected getSourceCredentialAuth(authEntries?: xdr.SorobanAuthorizationEntry[]): xdr.SorobanAuthorizationEntry[] { + return authEntries + ? authEntries.filter((entry) => { + const credentials = entry.credentials() + return credentials.switch() === xdr.SorobanCredentialsType.sorobanCredentialsSourceAccount() + }) + : [] + } }