From c6b8b9a39d612f376edc6013e37787fb375acb47 Mon Sep 17 00:00:00 2001 From: Jakub Ptak Date: Tue, 22 Nov 2022 12:48:36 +0100 Subject: [PATCH 1/2] Make actualFee nullable in GatewayProvider --- .../types/transactions/TransactionReceipt.kt | 4 +-- .../starknet/account/StandardAccountTest.kt | 2 +- .../kotlin/starknet/provider/ProviderTest.kt | 35 +++++++++++++++++-- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/lib/src/main/kotlin/com/swmansion/starknet/data/types/transactions/TransactionReceipt.kt b/lib/src/main/kotlin/com/swmansion/starknet/data/types/transactions/TransactionReceipt.kt index e37471a8f..8b02a3470 100644 --- a/lib/src/main/kotlin/com/swmansion/starknet/data/types/transactions/TransactionReceipt.kt +++ b/lib/src/main/kotlin/com/swmansion/starknet/data/types/transactions/TransactionReceipt.kt @@ -34,7 +34,7 @@ enum class TransactionStatus { @Serializable sealed class TransactionReceipt { abstract val hash: Felt - abstract val actualFee: Felt + abstract val actualFee: Felt? abstract val isPending: Boolean abstract val type: TransactionReceiptType abstract val status: TransactionStatus @@ -75,7 +75,7 @@ data class GatewayTransactionReceipt( override val hash: Felt, @JsonNames("actual_fee") - override val actualFee: Felt, + override val actualFee: Felt? = null, @JsonNames("block_hash") override val blockHash: Felt? = null, diff --git a/lib/src/test/kotlin/starknet/account/StandardAccountTest.kt b/lib/src/test/kotlin/starknet/account/StandardAccountTest.kt index 567c25abe..5c080a73f 100644 --- a/lib/src/test/kotlin/starknet/account/StandardAccountTest.kt +++ b/lib/src/test/kotlin/starknet/account/StandardAccountTest.kt @@ -202,7 +202,7 @@ class StandardAccountTest { val receipt = provider.getTransactionReceipt(result.transactionHash).send() - assertTrue(receipt.actualFee < maxFee) + assertTrue(receipt.actualFee!! < maxFee) } @ParameterizedTest diff --git a/lib/src/test/kotlin/starknet/provider/ProviderTest.kt b/lib/src/test/kotlin/starknet/provider/ProviderTest.kt index b3916dac4..d55d1f0b0 100644 --- a/lib/src/test/kotlin/starknet/provider/ProviderTest.kt +++ b/lib/src/test/kotlin/starknet/provider/ProviderTest.kt @@ -746,7 +746,7 @@ class ProviderTest { @Test fun `get sync information node synced`() { - val mocked_response = """ + val mockedResponse = """ { "id": 0, "jsonrpc": "2.0", @@ -761,7 +761,7 @@ class ProviderTest { } """.trimIndent() val httpService = mock { - on { send(any()) } doReturn HttpResponse(true, 200, mocked_response) + on { send(any()) } doReturn HttpResponse(true, 200, mockedResponse) } val provider = JsonRpcProvider(devnetClient.rpcUrl, StarknetChainId.TESTNET, httpService) val request = provider.getSyncing() @@ -776,4 +776,35 @@ class ProviderTest { assertEquals(Felt.fromHex("0x10"), response.highestBlockHash) assertEquals(10, response.highestBlockNumber) } + + @Test + fun `received gateway receipt`() { + // There is no way for us to recreate this behaviour as devnet processes txs right away + val httpService = mock { + on { send(any()) } doReturn HttpResponse( + true, + 200, + """ + { + "status": "RECEIVED", + "transaction_hash": "0x334da4f63cc6309ba2429a70f103872ab0ae82cf8d9a73b845184a4713cada5", + "l2_to_l1_messages": [], + "events": [] + } + """.trimIndent(), + ) + } + val provider = GatewayProvider.makeTestnetClient(httpService) + val receipt = provider.getTransactionReceipt( + Felt.fromHex("0x334da4f63cc6309ba2429a70f103872ab0ae82cf8d9a73b845184a4713cada5"), + ).send() as GatewayTransactionReceipt + + assertEquals(Felt.fromHex("0x334da4f63cc6309ba2429a70f103872ab0ae82cf8d9a73b845184a4713cada5"), receipt.hash) + assertEquals(TransactionStatus.PENDING, receipt.status) + assertEquals(emptyList(), receipt.messagesToL1) + assertEquals(emptyList(), receipt.events) + assertNull(receipt.messageToL2) + assertNull(receipt.actualFee) + assertNull(receipt.failureReason) + } } From ad65696c1d85b30ea5172dd685e01011e40bcf5e Mon Sep 17 00:00:00 2001 From: Jakub Ptak Date: Tue, 22 Nov 2022 12:50:34 +0100 Subject: [PATCH 2/2] Update gateway receipt test --- lib/src/test/kotlin/starknet/provider/ProviderTest.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/src/test/kotlin/starknet/provider/ProviderTest.kt b/lib/src/test/kotlin/starknet/provider/ProviderTest.kt index d55d1f0b0..4b4d08561 100644 --- a/lib/src/test/kotlin/starknet/provider/ProviderTest.kt +++ b/lib/src/test/kotlin/starknet/provider/ProviderTest.kt @@ -779,6 +779,7 @@ class ProviderTest { @Test fun `received gateway receipt`() { + val hash = Felt.fromHex("0x334da4f63cc6309ba2429a70f103872ab0ae82cf8d9a73b845184a4713cada5") // There is no way for us to recreate this behaviour as devnet processes txs right away val httpService = mock { on { send(any()) } doReturn HttpResponse( @@ -795,11 +796,9 @@ class ProviderTest { ) } val provider = GatewayProvider.makeTestnetClient(httpService) - val receipt = provider.getTransactionReceipt( - Felt.fromHex("0x334da4f63cc6309ba2429a70f103872ab0ae82cf8d9a73b845184a4713cada5"), - ).send() as GatewayTransactionReceipt + val receipt = provider.getTransactionReceipt(hash).send() as GatewayTransactionReceipt - assertEquals(Felt.fromHex("0x334da4f63cc6309ba2429a70f103872ab0ae82cf8d9a73b845184a4713cada5"), receipt.hash) + assertEquals(hash, receipt.hash) assertEquals(TransactionStatus.PENDING, receipt.status) assertEquals(emptyList(), receipt.messagesToL1) assertEquals(emptyList(), receipt.events)