From 5309e460b8627167d2b2aaecbd5d8f047348748c Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Sat, 7 Mar 2020 11:23:17 +0100 Subject: [PATCH 1/3] Add remaining fields to NodeInfoResponse --- packages/sdk/src/restclient.spec.ts | 29 +++++++++++++++++++++++++++-- packages/sdk/src/restclient.ts | 29 +++++++++++++++++++++++++++-- packages/sdk/src/testutils.spec.ts | 1 + packages/sdk/types/restclient.d.ts | 28 ++++++++++++++++++++++++++-- 4 files changed, 81 insertions(+), 6 deletions(-) diff --git a/packages/sdk/src/restclient.spec.ts b/packages/sdk/src/restclient.spec.ts index 09e13e63..8007a285 100644 --- a/packages/sdk/src/restclient.spec.ts +++ b/packages/sdk/src/restclient.spec.ts @@ -22,6 +22,7 @@ import { tendermintAddressMatcher, tendermintIdMatcher, tendermintOptionalIdMatcher, + tendermintShortHashMatcher, wasmdEnabled, wasmdEndpoint, } from "./testutils.spec"; @@ -296,8 +297,32 @@ describe("RestClient", () => { it("works", async () => { pendingWithoutWasmd(); const client = new RestClient(wasmdEndpoint); - const info = await client.nodeInfo(); - expect(info.node_info.network).toEqual(defaultNetworkId); + const { node_info, application_version } = await client.nodeInfo(); + + expect(node_info).toEqual( + jasmine.objectContaining({ + protocol_version: { p2p: "7", block: "10", app: "0" }, + listen_addr: "tcp://0.0.0.0:26656", + network: defaultNetworkId, + version: "0.33.0", + channels: "4020212223303800", + moniker: defaultNetworkId, + other: { tx_index: "on", rpc_address: "tcp://0.0.0.0:26657" }, + }), + ); + expect(node_info.id).toMatch(tendermintShortHashMatcher); + + expect(application_version).toEqual( + jasmine.objectContaining({ + name: "wasm", + server_name: "wasmd", + client_name: "wasmcli", + build_tags: "netgo,ledger", + }), + ); + expect(application_version.version).toMatch(/^0\.7\.[0-9]+$/); + expect(application_version.commit).toMatch(tendermintShortHashMatcher); + expect(application_version.go).toMatch(/^go version go1\.[0-9]+\.[0-9]+ linux\/amd64$/); }); }); diff --git a/packages/sdk/src/restclient.ts b/packages/sdk/src/restclient.ts index 3a3b24c6..2909323b 100644 --- a/packages/sdk/src/restclient.ts +++ b/packages/sdk/src/restclient.ts @@ -15,12 +15,37 @@ export interface CosmosSdkAccount { readonly sequence: number; } -interface NodeInfo { +export interface NodeInfo { + readonly protocol_version: { + readonly p2p: string; + readonly block: string; + readonly app: string; + }; + readonly id: string; + readonly listen_addr: string; readonly network: string; + readonly version: string; + readonly channels: string; + readonly moniker: string; + readonly other: { + readonly tx_index: string; + readonly rpc_address: string; + }; } -interface NodeInfoResponse { +export interface ApplicationVersion { + readonly name: string; + readonly server_name: string; + readonly client_name: string; + readonly version: string; + readonly commit: string; + readonly build_tags: string; + readonly go: string; +} + +export interface NodeInfoResponse { readonly node_info: NodeInfo; + readonly application_version: ApplicationVersion; } export interface BlockId { diff --git a/packages/sdk/src/testutils.spec.ts b/packages/sdk/src/testutils.spec.ts index 5eba32fa..9e530522 100644 --- a/packages/sdk/src/testutils.spec.ts +++ b/packages/sdk/src/testutils.spec.ts @@ -59,6 +59,7 @@ export function makeRandomAddress(): string { export const tendermintIdMatcher = /^[0-9A-F]{64}$/; export const tendermintOptionalIdMatcher = /^([0-9A-F]{64}|)$/; export const tendermintAddressMatcher = /^[0-9A-F]{40}$/; +export const tendermintShortHashMatcher = /^[0-9a-f]{40}$/; // https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki#bech32 export const bech32AddressMatcher = /^[\x21-\x7e]{1,83}1[02-9ac-hj-np-z]{38}$/; diff --git a/packages/sdk/types/restclient.d.ts b/packages/sdk/types/restclient.d.ts index e1dd8191..efe9cdb5 100644 --- a/packages/sdk/types/restclient.d.ts +++ b/packages/sdk/types/restclient.d.ts @@ -8,11 +8,35 @@ export interface CosmosSdkAccount { readonly account_number: number; readonly sequence: number; } -interface NodeInfo { +export interface NodeInfo { + readonly protocol_version: { + readonly p2p: string; + readonly block: string; + readonly app: string; + }; + readonly id: string; + readonly listen_addr: string; readonly network: string; + readonly version: string; + readonly channels: string; + readonly moniker: string; + readonly other: { + readonly tx_index: string; + readonly rpc_address: string; + }; } -interface NodeInfoResponse { +export interface ApplicationVersion { + readonly name: string; + readonly server_name: string; + readonly client_name: string; + readonly version: string; + readonly commit: string; + readonly build_tags: string; + readonly go: string; +} +export interface NodeInfoResponse { readonly node_info: NodeInfo; + readonly application_version: ApplicationVersion; } export interface BlockId { readonly hash: string; From c7c1002c3dd8420b50dcdab614a5b43a96b5f227 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Sat, 7 Mar 2020 11:30:38 +0100 Subject: [PATCH 2/3] Add support for prerelease versions --- packages/sdk/src/restclient.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/restclient.spec.ts b/packages/sdk/src/restclient.spec.ts index 8007a285..4ed864f3 100644 --- a/packages/sdk/src/restclient.spec.ts +++ b/packages/sdk/src/restclient.spec.ts @@ -320,7 +320,7 @@ describe("RestClient", () => { build_tags: "netgo,ledger", }), ); - expect(application_version.version).toMatch(/^0\.7\.[0-9]+$/); + expect(application_version.version).toMatch(/^0\.7\.[0-9]+(-[a-zA-Z0-9._]+)?$/); expect(application_version.commit).toMatch(tendermintShortHashMatcher); expect(application_version.go).toMatch(/^go version go1\.[0-9]+\.[0-9]+ linux\/amd64$/); }); From dba3cbe69af9fc68984e87670a66581c5e17f523 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Sat, 7 Mar 2020 21:11:52 +0100 Subject: [PATCH 3/3] Move pattern matching into object equality check --- packages/sdk/src/restclient.spec.ts | 43 +++++++++++++---------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/packages/sdk/src/restclient.spec.ts b/packages/sdk/src/restclient.spec.ts index 4ed864f3..de177f7c 100644 --- a/packages/sdk/src/restclient.spec.ts +++ b/packages/sdk/src/restclient.spec.ts @@ -299,30 +299,25 @@ describe("RestClient", () => { const client = new RestClient(wasmdEndpoint); const { node_info, application_version } = await client.nodeInfo(); - expect(node_info).toEqual( - jasmine.objectContaining({ - protocol_version: { p2p: "7", block: "10", app: "0" }, - listen_addr: "tcp://0.0.0.0:26656", - network: defaultNetworkId, - version: "0.33.0", - channels: "4020212223303800", - moniker: defaultNetworkId, - other: { tx_index: "on", rpc_address: "tcp://0.0.0.0:26657" }, - }), - ); - expect(node_info.id).toMatch(tendermintShortHashMatcher); - - expect(application_version).toEqual( - jasmine.objectContaining({ - name: "wasm", - server_name: "wasmd", - client_name: "wasmcli", - build_tags: "netgo,ledger", - }), - ); - expect(application_version.version).toMatch(/^0\.7\.[0-9]+(-[a-zA-Z0-9._]+)?$/); - expect(application_version.commit).toMatch(tendermintShortHashMatcher); - expect(application_version.go).toMatch(/^go version go1\.[0-9]+\.[0-9]+ linux\/amd64$/); + expect(node_info).toEqual({ + protocol_version: { p2p: "7", block: "10", app: "0" }, + id: jasmine.stringMatching(tendermintShortHashMatcher), + listen_addr: "tcp://0.0.0.0:26656", + network: defaultNetworkId, + version: "0.33.0", + channels: "4020212223303800", + moniker: defaultNetworkId, + other: { tx_index: "on", rpc_address: "tcp://0.0.0.0:26657" }, + }); + expect(application_version).toEqual({ + name: "wasm", + server_name: "wasmd", + client_name: "wasmcli", + version: jasmine.stringMatching(/^0\.7\.[0-9]+(-[a-zA-Z0-9._]+)?$/), + commit: jasmine.stringMatching(tendermintShortHashMatcher), + build_tags: "netgo,ledger", + go: jasmine.stringMatching(/^go version go1\.[0-9]+\.[0-9]+ linux\/amd64$/), + }); }); });