@xcapit/shelter-sdk
Version:
SDK for Shelter smart contracts on Stellar
67 lines (66 loc) • 3.61 kB
JavaScript
import { Keypair } from "shelter-sdk";
import { Shelter } from "./shelter";
import { FakeClient } from "../fake-client/fake-client";
import { contractAddressTxReponse, FakeServer, FakeStellarRpc, pollTxReponseNotFound, pollTxReponseSuccess, } from "../fixtures/fixtures";
import { Rpc } from "../rpc/rpc";
import { FakeSAC } from "../fake-sac/fake-sac";
import { FakePass } from "../pass/fake/fake-pass";
describe("Shelter", () => {
const steward = Keypair.random();
const newSteward = Keypair.random();
const fakeRpc = new Rpc(new FakeServer());
const client = new FakeClient({}, steward);
const recipient = Keypair.fromPublicKey("GASL6XDOK2TO6SCFTXFN2HQDAONLBID2GKX5TYBTHOWA7ZU7VRFZNHGM");
const shelterId = "CCQK3OJ5T4A5B4SDKQWH7PQKC5HMUZHIGUWF2INTKDQB32F3YPEW7L27";
const tokenContractId = "CCQK3OJ5T4A5B4SDKQWH7PQKC5HMUZHIGUWF2INTKDQB32F3YPEW7L27";
const expiration = BigInt(Math.floor(Date.now() / 1000) + 7200);
const amount = BigInt(1);
const _shelter = (aFakeServer = new FakeServer()) => (new Shelter(steward, new Rpc(aFakeServer, new FakeStellarRpc()), client));
test("new", () => {
expect(new Shelter(steward, fakeRpc, client)).toBeTruthy();
});
test("new connected", () => {
expect(Shelter.connected(steward, fakeRpc, shelterId)).toBeTruthy();
});
test("id", () => {
expect(_shelter().id()).toBeTruthy();
});
test("stewardId", async () => {
expect(await _shelter(new FakeServer(contractAddressTxReponse)).stewardId()).toEqual(steward.publicKey());
});
test("boundAid", async () => {
await expect(_shelter(new FakeServer(pollTxReponseSuccess)).boundAid(recipient.rawPublicKey(), tokenContractId, amount, expiration)).resolves.toBeUndefined();
});
test("update steward", async () => {
await expect(_shelter(new FakeServer(pollTxReponseSuccess)).updateSteward(newSteward)).resolves.toBeUndefined();
});
test("update release key", async () => {
await expect(_shelter(new FakeServer(pollTxReponseSuccess)).updateReleaseKey(steward.rawPublicKey())).resolves.toBeUndefined();
});
test("failed boundAid", async () => {
await expect(_shelter(new FakeServer(pollTxReponseNotFound)).boundAid(recipient.rawPublicKey(), tokenContractId, amount, expiration)).rejects.toThrow();
});
test("aidOf", async () => {
await expect(_shelter().aidOf(recipient.rawPublicKey(), tokenContractId)).resolves.toEqual(1);
});
test("update steward", async () => {
await expect(_shelter(new FakeServer(pollTxReponseSuccess)).boundAid(recipient.rawPublicKey(), tokenContractId, amount, expiration)).resolves.toBeUndefined();
});
test("withdraw", async () => {
const shelter = _shelter(new FakeServer(pollTxReponseSuccess));
shelter.gate().seal();
await expect(shelter.withdraw(new FakeSAC(), new FakePass())).resolves.toBeUndefined();
});
test("gate manipulation", async () => {
const shelter = _shelter(new FakeServer(pollTxReponseSuccess));
await expect(shelter.gate().guard()).resolves.toBeUndefined();
await expect(shelter.gate().open()).resolves.toBeUndefined();
await expect(shelter.gate().seal()).resolves.toBeUndefined();
});
test("gate manipulation failed", async () => {
const shelter = _shelter(new FakeServer(pollTxReponseNotFound));
await expect(shelter.gate().guard()).rejects.toThrow();
await expect(shelter.gate().open()).rejects.toThrow();
await expect(shelter.gate().seal()).rejects.toThrow();
});
});