From 3ffe5597a1ae36c2b8627ec1eecfcade6f3c5f4f Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Fri, 28 Feb 2020 12:49:40 +0100 Subject: [PATCH] Let CodeDetails extend Code --- packages/sdk/src/cosmwasmclient.spec.ts | 17 ++++++++++++++--- packages/sdk/src/cosmwasmclient.ts | 14 ++++++++++---- packages/sdk/types/cosmwasmclient.d.ts | 4 ++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/packages/sdk/src/cosmwasmclient.spec.ts b/packages/sdk/src/cosmwasmclient.spec.ts index de277060..5f130e65 100644 --- a/packages/sdk/src/cosmwasmclient.spec.ts +++ b/packages/sdk/src/cosmwasmclient.spec.ts @@ -4,7 +4,7 @@ import { Bech32, Encoding } from "@iov/encoding"; import { assert, sleep } from "@iov/utils"; import { ReadonlyDate } from "readonly-date"; -import { CosmWasmClient } from "./cosmwasmclient"; +import { Code, CosmWasmClient } from "./cosmwasmclient"; import { makeSignBytes } from "./encoding"; import { findAttribute } from "./logs"; import { Secp256k1Pen } from "./pen"; @@ -419,8 +419,19 @@ describe("CosmWasmClient", () => { pendingWithoutWasmd(); const client = new CosmWasmClient(httpUrl); const result = await client.getCodeDetails(1); - const checksum = new Sha256(result.wasm).digest(); - expect(checksum).toEqual(fromHex("aff8c8873d79d2153a8b9066a0683fec3c903669267eb806ffa831dcd4b3daae")); + + const expectedInfo: Code = { + id: 1, + checksum: "aff8c8873d79d2153a8b9066a0683fec3c903669267eb806ffa831dcd4b3daae", + source: undefined, + builder: undefined, + creator: faucet.address, + }; + + // check info + expect(result).toEqual(jasmine.objectContaining(expectedInfo)); + // check data + expect(new Sha256(result.data).digest()).toEqual(fromHex(expectedInfo.checksum)); }); }); diff --git a/packages/sdk/src/cosmwasmclient.ts b/packages/sdk/src/cosmwasmclient.ts index 411df6d4..0ea8ef77 100644 --- a/packages/sdk/src/cosmwasmclient.ts +++ b/packages/sdk/src/cosmwasmclient.ts @@ -58,9 +58,9 @@ export interface Code { readonly builder?: string; } -export interface CodeDetails { +export interface CodeDetails extends Code { /** The original wasm bytes */ - readonly wasm: Uint8Array; + readonly data: Uint8Array; } export interface Contract { @@ -208,9 +208,15 @@ export class CosmWasmClient { } public async getCodeDetails(codeId: number): Promise { - const result = await this.restClient.getCode(codeId); + // TODO: implement as one request when https://github.com/cosmwasm/wasmd/issues/90 is done + const [codeInfos, getCodeResult] = await Promise.all([this.getCodes(), this.restClient.getCode(codeId)]); + + const codeInfo = codeInfos.find(code => code.id === codeId); + if (!codeInfo) throw new Error("No code info found"); + return { - wasm: result, + ...codeInfo, + data: getCodeResult, }; } diff --git a/packages/sdk/types/cosmwasmclient.d.ts b/packages/sdk/types/cosmwasmclient.d.ts index f614a726..d001e6df 100644 --- a/packages/sdk/types/cosmwasmclient.d.ts +++ b/packages/sdk/types/cosmwasmclient.d.ts @@ -34,9 +34,9 @@ export interface Code { readonly source?: string; readonly builder?: string; } -export interface CodeDetails { +export interface CodeDetails extends Code { /** The original wasm bytes */ - readonly wasm: Uint8Array; + readonly data: Uint8Array; } export interface Contract { readonly address: string;