From cbad08de1be3b9db2a13730945930bfc7d5b87a8 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Thu, 12 Sep 2024 13:07:04 -0700 Subject: [PATCH] test: ibc-mocks decoding --- packages/orchestration/test/ibc-mocks.test.ts | 92 +++++++++++------- .../test/snapshots/ibc-mocks.test.ts.md | 23 +++++ .../test/snapshots/ibc-mocks.test.ts.snap | Bin 0 -> 602 bytes 3 files changed, 80 insertions(+), 35 deletions(-) create mode 100644 packages/orchestration/test/snapshots/ibc-mocks.test.ts.md create mode 100644 packages/orchestration/test/snapshots/ibc-mocks.test.ts.snap diff --git a/packages/orchestration/test/ibc-mocks.test.ts b/packages/orchestration/test/ibc-mocks.test.ts index 6703d7ffa5a..b970e0511d9 100644 --- a/packages/orchestration/test/ibc-mocks.test.ts +++ b/packages/orchestration/test/ibc-mocks.test.ts @@ -7,6 +7,10 @@ import { MsgDelegate, MsgDelegateResponse, } from '@agoric/cosmic-proto/cosmos/staking/v1beta1/tx.js'; +import { + CosmosQuery, + CosmosResponse, +} from '@agoric/cosmic-proto/icq/v1/packet.js'; import { test } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { buildMsgErrorString, @@ -14,6 +18,7 @@ import { buildQueryPacketString, buildQueryResponseString, buildTxPacketString, + parseOutgoingTxPacket, } from '../tools/ibc-mocks.js'; test('buildMsgResponseString matches observed values in e2e testing', t => { @@ -49,47 +54,64 @@ test('buildQueryResponseString matches observed values in e2e testing', t => { }); test('build Tx Packet', t => { - t.is( - buildTxPacketString([ - MsgDelegate.toProtoMsg({ - amount: { - denom: 'uatom', - amount: '10', - }, - delegatorAddress: 'cosmos1test', - validatorAddress: 'cosmosvaloper1test', - }), - ]), - 'eyJ0eXBlIjoxLCJkYXRhIjoiQ2xVS0l5OWpiM050YjNNdWMzUmhhMmx1Wnk1Mk1XSmxkR0V4TGsxelowUmxiR1ZuWVhSbEVpNEtDMk52YzIxdmN6RjBaWE4wRWhKamIzTnRiM04yWVd4dmNHVnlNWFJsYzNRYUN3b0ZkV0YwYjIwU0FqRXciLCJtZW1vIjoiIn0=', - ); + const obj = { + amount: { + denom: 'uatom', + amount: '10', + }, + delegatorAddress: 'cosmos1test', + validatorAddress: 'cosmosvaloper1test', + }; + const encoded = buildTxPacketString([MsgDelegate.toProtoMsg(obj)]); + t.snapshot(encoded); + + const parsed = parseOutgoingTxPacket(encoded); + const decoded = MsgDelegate.decode(parsed.messages[0].value); + t.deepEqual(decoded, obj); }); test('build Query Packet', t => { - t.is( - buildQueryPacketString([ - QueryBalanceRequest.toProtoMsg({ - address: 'cosmos1test', - denom: 'uatom', - }), - ]), - 'eyJkYXRhIjoiQ2pvS0ZBb0xZMjl6Ylc5ek1YUmxjM1FTQlhWaGRHOXRFaUl2WTI5emJXOXpMbUpoYm1zdWRqRmlaWFJoTVM1UmRXVnllUzlDWVd4aGJtTmwiLCJtZW1vIjoiIn0=', + const obj = { + address: 'cosmos1test', + denom: 'uatom', + }; + const b64 = buildQueryPacketString([QueryBalanceRequest.toProtoMsg(obj)]); + t.snapshot(b64); + + const { data } = JSON.parse(atob(b64)); + const decodedQuery = CosmosQuery.decode(Buffer.from(data, 'base64')); + const decodedRequest = QueryBalanceRequest.decode( + decodedQuery.requests[0].data, ); + t.deepEqual(decodedRequest, obj); }); -test('build QueryDelegatorDelegationsResponse', t => { - t.is( - buildQueryResponseString(QueryDelegatorDelegationsResponse, { - delegationResponses: [ - { - delegation: { - delegatorAddress: 'cosmos1test', - validatorAddress: 'cosmosvaloper1test', - shares: '1000000', - }, - balance: { denom: 'uatom', amount: '1000000' }, +test('build Query Response', t => { + const obj = { + delegationResponses: [ + { + delegation: { + delegatorAddress: 'cosmos1test', + validatorAddress: 'cosmosvaloper1test', + shares: '1000000', }, - ], - }), - 'eyJyZXN1bHQiOiJleUprWVhSaElqb2lRMnhSZVZWbmNGRkRhbmRMUXpKT2RtTXlNWFpqZWtZd1dsaE9NRVZvU21waU0wNTBZak5PTWxsWGVIWmpSMVo1VFZoU2JHTXpVV0ZIVkVWM1RVUkJkMDFFUVhkTlJFRjNUVVJCZDAxRVFYZE5SRUYzVFVSQmQwMUVRVk5GUVc5R1pGZEdNR0l5TUZOQ2VrVjNUVVJCZDAxRVFUMGlmUT09In0=', + balance: { denom: 'uatom', amount: '1000000' }, + }, + ], + }; + const encoded = buildQueryResponseString( + QueryDelegatorDelegationsResponse, + obj, ); + t.snapshot(encoded); + + const { result } = JSON.parse(atob(encoded)); + const { data } = JSON.parse(atob(result)); + const cosmosResponse = CosmosResponse.decode(Buffer.from(data, 'base64')); + const decodedResponseKey = cosmosResponse.responses[0].key; + + t.deepEqual(QueryDelegatorDelegationsResponse.decode(decodedResponseKey), { + ...obj, + pagination: undefined, + }); }); diff --git a/packages/orchestration/test/snapshots/ibc-mocks.test.ts.md b/packages/orchestration/test/snapshots/ibc-mocks.test.ts.md new file mode 100644 index 00000000000..3c44283847e --- /dev/null +++ b/packages/orchestration/test/snapshots/ibc-mocks.test.ts.md @@ -0,0 +1,23 @@ +# Snapshot report for `test/ibc-mocks.test.ts` + +The actual snapshot is saved in `ibc-mocks.test.ts.snap`. + +Generated by [AVA](https://avajs.dev). + +## build Tx Packet + +> Snapshot 1 + + 'eyJ0eXBlIjoxLCJkYXRhIjoiQ2xVS0l5OWpiM050YjNNdWMzUmhhMmx1Wnk1Mk1XSmxkR0V4TGsxelowUmxiR1ZuWVhSbEVpNEtDMk52YzIxdmN6RjBaWE4wRWhKamIzTnRiM04yWVd4dmNHVnlNWFJsYzNRYUN3b0ZkV0YwYjIwU0FqRXciLCJtZW1vIjoiIn0=' + +## build Query Packet + +> Snapshot 1 + + 'eyJkYXRhIjoiQ2pvS0ZBb0xZMjl6Ylc5ek1YUmxjM1FTQlhWaGRHOXRFaUl2WTI5emJXOXpMbUpoYm1zdWRqRmlaWFJoTVM1UmRXVnllUzlDWVd4aGJtTmwiLCJtZW1vIjoiIn0=' + +## build Query Response + +> Snapshot 1 + + 'eyJyZXN1bHQiOiJleUprWVhSaElqb2lRMnhSZVZWbmNGRkRhbmRMUXpKT2RtTXlNWFpqZWtZd1dsaE9NRVZvU21waU0wNTBZak5PTWxsWGVIWmpSMVo1VFZoU2JHTXpVV0ZIVkVWM1RVUkJkMDFFUVhkTlJFRjNUVVJCZDAxRVFYZE5SRUYzVFVSQmQwMUVRVk5GUVc5R1pGZEdNR0l5TUZOQ2VrVjNUVVJCZDAxRVFUMGlmUT09In0=' diff --git a/packages/orchestration/test/snapshots/ibc-mocks.test.ts.snap b/packages/orchestration/test/snapshots/ibc-mocks.test.ts.snap new file mode 100644 index 0000000000000000000000000000000000000000..0464dbf7c877dfffdac8847030b5dd166065c870 GIT binary patch literal 602 zcmV-g0;T;yRzV{R#lN8Xpc&YSeH)Y%mquO5<} z%KNgbleR0GzWef&Wl5hzzuwL+XVYE0o4tSYbC#cclt&BgRn2&R>#I1Tg;zD@)*2y1 z+TMt^B*;c_6$F_eXKspum=TLwVWMypno&^%bLMtquA70Iv7}f&3Mj&K1#PhEmqgiC zeD=o71lP1$Bw{rms3`6dPn0ogn=!5V5E2*>Z@b3kJrd`OX0fZ`#pyn!QU zPorIVf9v;B;N#TOtI@}Q_`_fP_Ax)4UiE)};r}-IpPAcZh~y$gqa>BSj`hyY6^^+X zD}o)i)rCl0y52<8Nw~HI^X%OC(I#q1%G)M3_?!v4r$#5j@f!vNb3-GjwdQBNoQ#R< z_sk5h8T#i2ns;qeclm#c_~P;fb`(GakOOqBh=#MlWJJYm|9K!d@N z4Y&L?i&_9AJy0MBroff2$kK5*6pCrzp;f>E{9C#FG*WP4xw1pb<1;uAZq0Te94IK; o<*>6UZe6*`0*bWFxZG?lIKaz1C$2V}p_^&8Kl@5E^#KC_01=fc0{{R3 literal 0 HcmV?d00001