cosmjs-util/packages/faucet-client/src/faucetclient.spec.ts
2020-10-14 13:11:28 +02:00

61 lines
2.1 KiB
TypeScript

import { FaucetClient } from "./faucetclient";
function pendingWithoutFaucet(): void {
if (!process.env.FAUCET_ENABLED) {
pending("Set FAUCET_ENABLED to enable tests that need a faucet");
}
}
describe("FaucetClient", () => {
const faucetUrl = "http://localhost:8000";
const primaryToken = "ucosm";
const secondaryToken = "ustake";
const defaultAddress = "cosmos14qemq0vw6y3gc3u3e0aty2e764u4gs5le3hada";
it("can be constructed", () => {
// http
expect(new FaucetClient("http://localhost:8000")).toBeTruthy();
expect(new FaucetClient("http://localhost:8000/")).toBeTruthy();
expect(new FaucetClient("http://localhost")).toBeTruthy();
expect(new FaucetClient("http://localhost/")).toBeTruthy();
// https
expect(new FaucetClient("https://localhost:8000")).toBeTruthy();
expect(new FaucetClient("https://localhost:8000/")).toBeTruthy();
expect(new FaucetClient("https://localhost")).toBeTruthy();
expect(new FaucetClient("https://localhost/")).toBeTruthy();
});
it("can be used to credit a wallet", async () => {
pendingWithoutFaucet();
const faucet = new FaucetClient(faucetUrl);
await faucet.credit(defaultAddress, primaryToken);
});
it("can be used to credit a wallet with a different token", async () => {
pendingWithoutFaucet();
const faucet = new FaucetClient(faucetUrl);
await faucet.credit(defaultAddress, secondaryToken);
});
it("throws for invalid ticker", async () => {
pendingWithoutFaucet();
const faucet = new FaucetClient(faucetUrl);
await faucet.credit(defaultAddress, "ETH").then(
() => fail("must not resolve"),
(error) => expect(error).toMatch(/token is not available/i),
);
});
it("throws for invalid address", async () => {
pendingWithoutFaucet();
const faucet = new FaucetClient(faucetUrl);
for (const address of ["be5cc2cc05db2cdb4313c18306a5157291cfdcd1", "1234L"]) {
await faucet.credit(address, primaryToken).then(
() => fail("must not resolve"),
(error) => expect(error).toMatch(/address is not in the expected format for this chain/i),
);
}
});
});