cosmjs-util/packages/faucet/src/api/requestparser.spec.ts
2020-09-17 17:03:42 +02:00

71 lines
2.7 KiB
TypeScript

import { RequestParser } from "./requestparser";
describe("RequestParser", () => {
it("can process valid credit request with denom", () => {
const body = { address: "abc", denom: "utkn" };
expect(RequestParser.parseCreditBody(body)).toEqual({ address: "abc", denom: "utkn" });
});
it("throws helpful error message when ticker is found", () => {
const oldBody = { address: "abc", ticker: "TKN" };
expect(() => RequestParser.parseCreditBody(oldBody)).toThrowError(
/The 'ticker' field was removed in CosmJS 0.23. Please use 'denom' instead./i,
);
const confusedBody = { address: "abc", ticker: "TKN", denom: "utkn" };
expect(() => RequestParser.parseCreditBody(confusedBody)).toThrowError(
/The 'ticker' field was removed in CosmJS 0.23. Please use 'denom' instead./i,
);
});
it("throws for invalid credit requests", () => {
// body not a dictionary
{
expect(() => RequestParser.parseCreditBody("foo")).toThrowError(/Request body must be a dictionary./i);
expect(() => RequestParser.parseCreditBody(null)).toThrowError(/Request body must be a dictionary./i);
expect(() => RequestParser.parseCreditBody(42)).toThrowError(/Request body must be a dictionary./i);
expect(() => RequestParser.parseCreditBody([])).toThrowError(/Request body must be a dictionary./i);
expect(() => RequestParser.parseCreditBody(true)).toThrowError(/Request body must be a dictionary./i);
expect(() => RequestParser.parseCreditBody(undefined)).toThrowError(
/Request body must be a dictionary./i,
);
}
// address unset
{
const body = { denom: "utkn" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'address' must be a string/i);
}
// address wrong type
{
const body = { address: true, denom: "utkn" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'address' must be a string/i);
}
// address empty
{
const body = { address: "", denom: "utkn" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'address' must not be empty/i);
}
// denom unset
{
const body = { address: "abc" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'denom' must be a string/i);
}
// denom wrong type
{
const body = { address: "abc", denom: true };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'denom' must be a string/i);
}
// denom empty
{
const body = { address: "abc", denom: "" };
expect(() => RequestParser.parseCreditBody(body)).toThrowError(/Property 'denom' must not be empty/i);
}
});
});