anchor/tests/program-common.spec.ts

57 lines
1.7 KiB
TypeScript

import BN from "bn.js";
import bs58 from "bs58";
import { PublicKey } from "@solana/web3.js";
import { translateAddress } from "../src/program/common";
describe("program/common", () => {
describe("translateAddress", () => {
it("should accept a valid string address", () => {
const address = "11111111111111111111111111111111";
const func = () => translateAddress(address);
expect(func).not.toThrow();
const output = func();
expect(output).toBeInstanceOf(PublicKey);
expect(new PublicKey(address).equals(output)).toBeTruthy();
});
it("should accept a PublicKey address", () => {
const publicKey = new PublicKey("11111111111111111111111111111111");
const func = () => translateAddress(publicKey);
expect(func).not.toThrow();
const output = func();
expect(output).toBeInstanceOf(PublicKey);
expect(new PublicKey(publicKey).equals(output)).toBe(true);
});
it("should accept an object with a PublicKey shape { _bn }", () => {
const obj = {
_bn: new BN(bs58.decode("11111111111111111111111111111111")),
} as any as PublicKey;
const func = () => translateAddress(obj);
expect(func).not.toThrow();
const output = func();
expect(output).toBeInstanceOf(PublicKey);
expect(new PublicKey(obj).equals(output)).toBe(true);
});
it("should not accept an invalid string address", () => {
const invalid = "invalid";
const func = () => translateAddress(invalid);
expect(func).toThrow();
});
it("should not accept an invalid object", () => {
const invalid = {} as PublicKey;
const func = () => translateAddress(invalid);
expect(func).toThrow();
});
});
});