Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test(ethereum): fix broken validations in ethereum plugin connector tests #3487

Open
ashnashahgrover opened this issue Aug 17, 2024 · 7 comments
Assignees
Labels
bug Something isn't working

Comments

@ashnashahgrover
Copy link
Contributor

ashnashahgrover commented Aug 17, 2024

Describe the bug

Multiple tests are failing in cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration including:

  • geth-contract-deploy-and-invoke-using-json-object-v1.test.ts: test("deployContract with additional parameters should fail")
  • geth-contract-deploy-and-invoke-using-keychain-v1.test.ts: test("deployContract with additional parameters should fail")
  • geth-invoke-web3-method-v1.test.ts: test("invokeRawWeb3EthMethod with missing arg throws error (getBlock)")

To Reproduce

Run these tests in run and debug and note the failing tests in the terminal output.

Expected behavior

The failing tests should pass - contingent upon the jest assertions in those tests also passing. If the test description says the specific function called should return an error, it should return an error and not a resolved promise.

Log/Stack Traces

Full file:

broken-ethereum-tests.log

Relevent snippets:

` FAIL packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-contract-deploy-and-invoke-using-json-object-v1.test.ts (73.064 s, 757 MB heap size)
Ethereum contract deploy and invoke using keychain tests
✓ setup ethereum connector (4180 ms)
✓ deploys contract using json object (5040 ms)
✓ deploys contract using json object with constructorArgs (5139 ms)
✓ deployContract without contractJSON should fail (98 ms)
✕ deployContract with additional parameters should fail (5030 ms)
✓ invoke Web3SigningCredentialType.GETHKEYCHAINPASSWORD (10230 ms)
✓ invoke Web3SigningCredentialType.PrivateKeyHex (4171 ms)
✓ invokeContractV1 without methodName should fail (45 ms)

● Ethereum contract deploy and invoke using keychain tests › deployContract with additional parameters should fail

expect(received).rejects.toThrow()

Received promise resolved instead of rejected
Resolved to value: {"config": [Object], "data": [Object], "headers": [AxiosHeaders], "request": [ClientRequest], "status": 200, "statusText": "OK"}

  273 |
  274 |     // have the left the original assertion above as a comment for additional context, this can be removed once this test is debugged. 
> 275 |     await expect(
      |           ^
  276 |       apiClient.deployContract({
  277 |         contract: {
  278 |           contractJSON: HelloWorldContractJson,

  at expect (node_modules/expect/build/index.js:113:15)
  at Object.<anonymous> (packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-contract-deploy-and-invoke-using-json-object-v1.test.ts:275:11)

Test Suites: 1 failed, 1 total
Tests: 1 failed, 7 passed, 8 total
Snapshots: 0 total
Time: 73.156 s
Ran all test suites matching /packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-contract-deploy-and-invoke-using-json-object-v1.test.ts/i.
Waiting for the debugger to disconnect...`

` FAIL packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-invoke-web3-method-v1.test.ts (24.625 s, 641 MB heap size)
invokeRawWeb3EthMethod Tests
✓ invoke method using json-rpc proxy (48 ms)
✓ invokeRawWeb3EthMethod with 0-argument method works (getGasPrice) (9 ms)
✓ invokeRawWeb3EthMethod with 1-argument method works (getBlock) (24 ms)
✓ invokeRawWeb3EthMethod with 2-argument method works (getStorageAt) (15 ms)
✕ invokeRawWeb3EthMethod with missing arg throws error (getBlock) (13 ms)
✓ invokeRawWeb3EthMethod with invalid arg throws error (getBlock) (30 ms)
✓ invokeRawWeb3EthMethod with non existing method throws error (3 ms)

● invokeRawWeb3EthMethod Tests › invokeRawWeb3EthMethod with missing arg throws error (getBlock)

expect(received).rejects.toBeTruthy()

Received promise resolved instead of rejected
Resolved to value: {"baseFeePerGas": 765625000n, "difficulty": 2n, "extraData": "0xd883010c00846765746888676f312e32302e34856c696e757800000000000000ec0a71024e85a0189e80a46d242a5fcece2ccf6e312947436fb6a7a0f479383d3a5fe38732d961e979f5cb2776d0cae48e1664e653c2b31fd562826be43d5c6601", "gasLimit": 798438265n, "gasUsed": 0n, "hash": "0x1a71ac619e3eeb9b151971039105389f6f64d51ceddeaec67a719618fbe31a98", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "miner": "0x0000000000000000000000000000000000000000", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "nonce": 0n, "number": 2n, "parentHash": "0xea9b82988f8ab3834ab4906a4d61f167cbe7e1d5e0124b092253600d710a2c26", "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "size": 612n, "stateRoot": "0xc3b31e08b8fb33599eafcc9e20d81bb2af09d26308e4aa3f46617b5839e03ff4", "timestamp": 1723908677n, "totalDifficulty": 5n, "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "uncles": []}

  182 |
  183 |     // have the left the original assertion above as a comment for additional context, this can be removed once this test is debugged. 
> 184 |     await expect(
      |           ^
  185 |       connector.invokeRawWeb3EthMethod({
  186 |         methodName: "getBlock",
  187 |       })

  at expect (node_modules/expect/build/index.js:113:15)
  at Object.<anonymous> (packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-invoke-web3-method-v1.test.ts:184:11)

Test Suites: 1 failed, 1 total
Tests: 1 failed, 6 passed, 7 total
Snapshots: 0 total
Time: 24.71 s, estimated 25 s
Ran all test suites matching /packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-invoke-web3-method-v1.test.ts/i.`

` FAIL packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-contract-deploy-and-invoke-using-keychain-v1.test.ts (68.848 s, 658 MB heap size)
Ethereum contract deploy and invoke using keychain tests
✓ setup ethereum connector (4245 ms)
✓ deploys contract using keychain (5071 ms)
✓ deploys contract using keychain with constructorArgs (5125 ms)
✓ deployContract without contractName should fail (163 ms)
✕ deployContract with additional parameters should fail (4204 ms)
✓ invoke Web3SigningCredentialType.GETHKEYCHAINPASSWORD (10386 ms)
✓ invoke Web3SigningCredentialType.None (5087 ms)
✓ runTransactionV1 without transaction config should fail (30 ms)
✓ invoke Web3SigningCredentialType.PrivateKeyHex (5171 ms)
✓ invoke Web3SigningCredentialType.CactiKeychainRef (4153 ms)
✓ invokeContractV1 without methodName should fail (27 ms)
✓ get prometheus exporter metrics (10 ms)

● Ethereum contract deploy and invoke using keychain tests › deployContract with additional parameters should fail

expect(received).rejects.toThrow()

Received promise resolved instead of rejected
Resolved to value: {"config": {"adapter": [Array], "data": "{\"contract\":{\"contractName\":\"HelloWorld\",\"keychainId\":\"e7536fa2-6c12-4726-aaef-ef8a71912f44\"},\"web3SigningCredential\":{\"ethAccount\":\"0x6a2ec8c50ba1a9ce47c52d1cb5b7136ee9d0ccc0\",\"secret\":\"\",\"type\":\"GETH_KEYCHAIN_PASSWORD\"},\"gas\":1000000,\"fake\":4}", "env": [Object], "headers": [AxiosHeaders], "maxBodyLength": -1, "maxContentLength": -1, "method": "post", "timeout": 0, "transformRequest": [Array], "transformResponse": [Array], "transitional": [Object], "url": "http://127.0.0.1:33569/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-ethereum/deploy-contract", "validateStatus": [Function validateStatus], "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN"}, "data": {"transactionReceipt": [Object]}, "headers": [Object], "request": {"_closed": false, "_contentLength": "245", "_defaultKeepAlive": true, "_ended": true, "_events": [Object], "_eventsCount": 7, "_hasBody": true, "_header": "POST /api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-ethereum/deploy-contract HTTP/1.1·
Accept: application/json, text/plain, */*·
Content-Type: application/json·
User-Agent: axios/1.7.2·
Content-Length: 245·
Accept-Encoding: gzip, compress, deflate, br·
Host: 127.0.0.1:33569·
Connection: close···
", "_headerSent": true, "_keepAliveTimeout": 0, "_last": true, "_maxListeners": undefined, "_onPendingData": [Function nop], "_redirectable": [Writable], "_removedConnection": false, "_removedContLen": false, "_removedTE": false, "_trailer": "", "aborted": false, "agent": [Agent], "chunkedEncoding": false, "destroyed": false, "finished": true, "host": "127.0.0.1", "insecureHTTPParser": undefined, "joinDuplicateHeaders": undefined, "maxHeaderSize": undefined, "maxHeadersCount": null, "maxRequestsOnConnectionReached": false, "method": "POST", "outputData": [Array], "outputSize": 0, "parser": null, "path": "/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-ethereum/deploy-contract", "protocol": "http:", "res": [IncomingMessage], "reusedSocket": false, "sendDate": false, "shouldKeepAlive": false, "socket": [Socket], "socketPath": undefined, "strictContentLength": false, "timeoutCb": null, "upgradeOrConnect": false, "useChunkedEncodingByDefault": true, "writable": true, Symbol(kCapture): false, Symbol(kBytesWritten): 0, Symbol(kNeedDrain): false, Symbol(corked): 0, Symbol(kOutHeaders): [Object], Symbol(errored): null, Symbol(kHighWaterMark): 16384, Symbol(kRejectNonStandardBodyWrites): false, Symbol(kUniqueHeaders): null}, "status": 200, "statusText": "OK"}

  280 |
  281 |     // have the left the original assertion above as a comment for additional context, this can be removed once this test is debugged. 
> 282 |     await expect(
      |           ^
  283 |       apiClient.deployContract({
  284 |         contract: {
  285 |           contractName: HelloWorldContractJson.contractName,

  at expect (node_modules/expect/build/index.js:113:15)
  at Object.<anonymous> (packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-contract-deploy-and-invoke-using-keychain-v1.test.ts:282:11)

Test Suites: 1 failed, 1 total
Tests: 1 failed, 11 passed, 12 total
Snapshots: 0 total
Time: 68.934 s, estimated 70 s
Ran all test suites matching /packages/cactus-plugin-ledger-connector-ethereum/src/test/typescript/integration/geth-contract-deploy-and-invoke-using-keychain-v1.test.ts/i.`

@ashnashahgrover ashnashahgrover added the bug Something isn't working label Aug 17, 2024
ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Aug 26, 2024
…tor-ethereum tests

Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any unexpected
Arguments are present, and if so throws an error
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Aug 26, 2024
…tor-ethereum tests

Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any
unexpected arguments are present, and if so throws an error.
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description.

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
@ashnashahgrover ashnashahgrover changed the title test(ethereum): fix broken validations in cactus-plugin-ledger-connector-ethereum tests test(ethereum): fix broken validations in ethereum plugin connector tests Aug 26, 2024
ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Aug 26, 2024
…ests

Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any
unexpected arguments are present, and if so throws an error.
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description.

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
@ashnashahgrover
Copy link
Contributor Author

This issue is a dependency of https://github.com/hyperledger/cacti/issues/3475

ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Aug 27, 2024
Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any
unexpected arguments are present, and if so throws an error.
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description.

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Aug 27, 2024
Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any
unexpected arguments are present, and if so throws an error.
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description.

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Aug 27, 2024
Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any
unexpected arguments are present, and if so throws an error.
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description.

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
ashnashahgrover added a commit to ashnashahgrover/cacti that referenced this issue Sep 21, 2024
Primary Changes
---------------
1. Added code to deployContract in plugin-ledger-connector-ethereum.ts that checks if any
unexpected arguments are present, and if so throws an error.
2. Modified test on line 169 in geth-invoke-web3-method-v1.test.ts so that required argument for
invokeRawWeb3EthMethod is missing as required by the test description.

Fixes hyperledger-cacti#3487

Signed-off-by: ashnashahgrover <ashnashahgrover777@gmail.com>
@adrianbatuto
Copy link
Contributor

adrianbatuto commented Nov 14, 2024

@jagpreetsinghsasan I tried to replicate the issue mentioned here on my machine and was unable to do so. Uploading here the evidence of the passing tests to close this issue.

geth-invoke-web3-method-v1.test.ts
image (8)
geth-contract-deploy-and-invoke-using-keychain-v1.test.ts
image (7)
geth-contract-deploy-and-invoke-using-json-object-v1.test.ts
image (6)

@jagpreetsinghsasan
Copy link
Contributor

We can close this ticket then @adrianbatuto
@petermetz shall we close it?

@petermetz
Copy link
Contributor

@jagpreetsinghsasan @adrianbatuto Did you test it on main or on the branch where @ashnashahgrover was working on the migration of the negative test case assertions? I think it only reproduced on the branch of Ashna ( https://github.com/hyperledger-cacti/cacti/pull/3496/files )

If you tried it on main, then please try it on the branch of ( https://github.com/hyperledger-cacti/cacti/pull/3496/files ) instead and let's see.
If you did try it on the branch ( https://github.com/hyperledger-cacti/cacti/pull/3496/files ) and it works then please submit a pull request with the refactored version of the assertions for the negative test cases and then we can close these issues down at the same time.

@adrianbatuto
Copy link
Contributor

adrianbatuto commented Nov 18, 2024

@jagpreetsinghsasan @adrianbatuto Did you test it on main or on the branch where @ashnashahgrover was working on the migration of the negative test case assertions? I think it only reproduced on the branch of Ashna ( https://github.com/hyperledger-cacti/cacti/pull/3496/files )

If you tried it on main, then please try it on the branch of ( https://github.com/hyperledger-cacti/cacti/pull/3496/files ) instead and let's see. If you did try it on the branch ( https://github.com/hyperledger-cacti/cacti/pull/3496/files ) and it works then please submit a pull request with the refactored version of the assertions for the negative test cases and then we can close these issues down at the same time.

@petermetz, I encountered the errors mentioned here while I was working on another ticket #3475 and updating the tests. I will look into this issue more.

@petermetz
Copy link
Contributor

@adrianbatuto Got it, thank you! Let me know how it went!

@adrianbatuto
Copy link
Contributor

Issue is blocked as per #3507

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants