Skip to main content
Glama
ops.spec.js8.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const codecimpl_1 = require("./generated/codecimpl"); const ops_1 = require("./ops"); const testhelpers_spec_1 = require("./testhelpers.spec"); describe("doHash", () => { it("sha256 hashes food", () => { // echo -n food | sha256sum const hash = (0, ops_1.doHash)(codecimpl_1.ics23.HashOp.SHA256, (0, testhelpers_spec_1.toAscii)("food")); expect(hash).toEqual((0, testhelpers_spec_1.fromHex)("c1f026582fe6e8cb620d0c85a72fe421ddded756662a8ec00ed4c297ad10676b")); }); it("sha512 hashes food", () => { // echo -n food | sha512sum const hash = (0, ops_1.doHash)(codecimpl_1.ics23.HashOp.SHA512, (0, testhelpers_spec_1.toAscii)("food")); expect(hash).toEqual((0, testhelpers_spec_1.fromHex)("c235548cfe84fc87678ff04c9134e060cdcd7512d09ed726192151a995541ed8db9fda5204e72e7ac268214c322c17787c70530513c59faede52b7dd9ce64331")); }); it("ripemd160 hashes food", () => { // echo -n food | openssl dgst -rmd160 -hex | cut -d' ' -f2 const hash = (0, ops_1.doHash)(codecimpl_1.ics23.HashOp.RIPEMD160, (0, testhelpers_spec_1.toAscii)("food")); expect(hash).toEqual((0, testhelpers_spec_1.fromHex)("b1ab9988c7c7c5ec4b2b291adfeeee10e77cdd46")); }); it("'bitcoin' hashes food", () => { // echo -n c1f026582fe6e8cb620d0c85a72fe421ddded756662a8ec00ed4c297ad10676b | xxd -r -p | openssl dgst -rmd160 -hex const hash = (0, ops_1.doHash)(codecimpl_1.ics23.HashOp.BITCOIN, (0, testhelpers_spec_1.toAscii)("food")); expect(hash).toEqual((0, testhelpers_spec_1.fromHex)("0bcb587dfb4fc10b36d57f2bba1878f139b75d24")); }); }); describe("applyLeaf", () => { it("hashes foobar", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256 }; const key = (0, testhelpers_spec_1.toAscii)("foo"); const value = (0, testhelpers_spec_1.toAscii)("bar"); // echo -n foobar | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("hashes foobaz with sha-512", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA512 }; const key = (0, testhelpers_spec_1.toAscii)("foo"); const value = (0, testhelpers_spec_1.toAscii)("baz"); // echo -n foobaz | sha512sum const expected = (0, testhelpers_spec_1.fromHex)("4f79f191298ec7461d60136c60f77c2ae8ddd85dbf6168bb925092d51bfb39b559219b39ae5385ba04946c87f64741385bef90578ea6fe6dac85dbf7ad3f79e1"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("hashes food with sha-512/256", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA512_256 }; const key = (0, testhelpers_spec_1.toAscii)("fo"); const value = (0, testhelpers_spec_1.toAscii)("od"); const expected = (0, testhelpers_spec_1.fromHex)("5b3a452a6acbf1fc1e553a40c501585d5bd3cca176d562e0a0e19a3c43804e88"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("hashes foobar (different breakpoint)", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256 }; const key = (0, testhelpers_spec_1.toAscii)("f"); const value = (0, testhelpers_spec_1.toAscii)("oobar"); // echo -n foobar | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("hashes with length prefix", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, length: codecimpl_1.ics23.LengthOp.VAR_PROTO, }; // echo -n food | xxd -ps const key = (0, testhelpers_spec_1.toAscii)("food"); // 04666f6f64 const value = (0, testhelpers_spec_1.toAscii)("some longer text"); // 10736f6d65206c6f6e6765722074657874 // echo -n 04666f6f6410736f6d65206c6f6e6765722074657874 | xxd -r -p | sha256sum -b const expected = (0, testhelpers_spec_1.fromHex)("b68f5d298e915ae1753dd333da1f9cf605411a5f2e12516be6758f365e6db265"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("hashes with length prefix (fixed 32-bit little-endian encoding)", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, length: codecimpl_1.ics23.LengthOp.FIXED32_LITTLE, }; // echo -n food | xxd -ps const key = (0, testhelpers_spec_1.toAscii)("food"); // 04000000666f6f64 const value = (0, testhelpers_spec_1.toAscii)("some longer text"); // 10000000736f6d65206c6f6e6765722074657874 // echo -n 04000000666f6f6410000000736f6d65206c6f6e6765722074657874 | xxd -r -p | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("c853652437be02501c674744bf2a2b45d92a0a9f29c4b1044010fb3e2d43a949"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("hashes with prehash and length prefix", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, length: codecimpl_1.ics23.LengthOp.VAR_PROTO, prehashValue: codecimpl_1.ics23.HashOp.SHA256, }; const key = (0, testhelpers_spec_1.toAscii)("food"); // 04666f6f64 // echo -n yet another long string | sha256sum const value = (0, testhelpers_spec_1.toAscii)("yet another long string"); // 20a48c2d4f67b9f80374938535285ed285819d8a5a8fc1fccd1e3244e437cf290d // echo -n 04666f6f6420a48c2d4f67b9f80374938535285ed285819d8a5a8fc1fccd1e3244e437cf290d | xxd -r -p | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("87e0483e8fb624aef2e2f7b13f4166cda485baa8e39f437c83d74c94bedb148f"); expect((0, ops_1.applyLeaf)(op, key, value)).toEqual(expected); }); it("requires key", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, }; const key = (0, testhelpers_spec_1.toAscii)("food"); const value = (0, testhelpers_spec_1.toAscii)(""); expect(() => (0, ops_1.applyLeaf)(op, key, value)).toThrow(); }); it("requires value", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, }; const key = (0, testhelpers_spec_1.toAscii)(""); const value = (0, testhelpers_spec_1.toAscii)("time"); expect(() => (0, ops_1.applyLeaf)(op, key, value)).toThrow(); }); }); describe("applyInner", () => { it("hash child with prefix and suffix", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, prefix: (0, testhelpers_spec_1.fromHex)("0123456789"), suffix: (0, testhelpers_spec_1.fromHex)("deadbeef"), }; const child = (0, testhelpers_spec_1.fromHex)("00cafe00"); // echo -n 012345678900cafe00deadbeef | xxd -r -p | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("0339f76086684506a6d42a60da4b5a719febd4d96d8b8d85ae92849e3a849a5e"); expect((0, ops_1.applyInner)(op, child)).toEqual(expected); }); it("requies child", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, prefix: (0, testhelpers_spec_1.fromHex)("0123456789"), suffix: (0, testhelpers_spec_1.fromHex)("deadbeef"), }; expect(() => (0, ops_1.applyInner)(op, (0, testhelpers_spec_1.fromHex)(""))).toThrow(); }); it("hash child with only prefix", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, prefix: (0, testhelpers_spec_1.fromHex)("00204080a0c0e0"), }; const child = (0, testhelpers_spec_1.fromHex)("ffccbb997755331100"); // echo -n 00204080a0c0e0ffccbb997755331100 | xxd -r -p | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("45bece1678cf2e9f4f2ae033e546fc35a2081b2415edcb13121a0e908dca1927"); expect((0, ops_1.applyInner)(op, child)).toEqual(expected); }); it("hash child with only suffix", () => { const op = { hash: codecimpl_1.ics23.HashOp.SHA256, suffix: (0, testhelpers_spec_1.toAscii)(" just kidding!"), }; const child = (0, testhelpers_spec_1.toAscii)("this is a sha256 hash, really...."); // echo -n 'this is a sha256 hash, really.... just kidding!' | sha256sum const expected = (0, testhelpers_spec_1.fromHex)("79ef671d27e42a53fba2201c1bbc529a099af578ee8a38df140795db0ae2184b"); expect((0, ops_1.applyInner)(op, child)).toEqual(expected); }); }); //# sourceMappingURL=ops.spec.js.map

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MyronKoch-dev/osmosis-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server