postchain-client
Version:
Client library for accessing a Postchain node through REST.
108 lines • 6.64 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { AnchoringStatus, ResponseStatus } from "../../../src/blockchainClient/enums";
import { CONFIGURED_POLL_COUNT, CONFIGURED_POLL_INTERVAL, mockAnchoringTransaction, mockBuffer, mockClusterAnchoringConfirmationResponse, mockStringBlockchainRid, mockSystemAnchoringConfirmationResponse, mockThirtyTwoBytesBuffer, mockTransactionReceipts, } from "../../common/mocks";
import * as utils from "../../../src/blockchainClient/utils";
import { getTestsClient } from "../../common/setups";
let client;
describe("getTransactionConfirmationLevel", () => {
beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
client = yield getTestsClient({
dappStatusPolling: utils.setStatusPolling({
interval: CONFIGURED_POLL_INTERVAL,
count: CONFIGURED_POLL_COUNT,
}),
});
}));
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
jest.clearAllMocks();
jest.spyOn(utils, "getAnchoringClientAndSystemChainRid").mockResolvedValue({
anchoringClient: client,
systemAnchoringChainBridString: mockStringBlockchainRid,
});
}));
afterEach(() => {
jest.restoreAllMocks();
});
it("returns an error with status FailedAnchoring when cluster anchoring chain confirmation failed", () => __awaiter(void 0, void 0, void 0, function* () {
const getTransactionStatusSpy = jest.spyOn(client, "getTransactionStatus").mockResolvedValue({
statusCode: 200,
status: ResponseStatus.Confirmed,
});
const getClusterAnchoringTransactionConfirmationSpy = jest
.spyOn(client, "getClusterAnchoringTransactionConfirmation")
.mockResolvedValue(AnchoringStatus.FailedAnchoring);
const confirmationLevel = yield client.getTransactionConfirmationLevel(mockThirtyTwoBytesBuffer);
expect(confirmationLevel).toEqual({
status: AnchoringStatus.FailedAnchoring,
statusCode: 400,
transactionRid: mockThirtyTwoBytesBuffer,
});
expect(getTransactionStatusSpy).toHaveBeenCalledTimes(1);
expect(getClusterAnchoringTransactionConfirmationSpy).toHaveBeenCalledTimes(1);
}));
it("returns Waiting status for Dapp confirmation", () => __awaiter(void 0, void 0, void 0, function* () {
const getTransactionStatusSpy = jest.spyOn(client, "getTransactionStatus").mockResolvedValue({
statusCode: 200,
status: ResponseStatus.Waiting,
});
const confirmationLevel = yield client.getTransactionConfirmationLevel(mockBuffer);
expect(confirmationLevel).toEqual(mockTransactionReceipts.waiting);
expect(getTransactionStatusSpy).toHaveBeenCalledTimes(1);
}));
it("returns Confirmed status for Dapp confirmation", () => __awaiter(void 0, void 0, void 0, function* () {
const getTransactionStatusSpy = jest.spyOn(client, "getTransactionStatus").mockResolvedValue({
statusCode: 200,
status: ResponseStatus.Confirmed,
});
const getClusterAnchoringTransactionConfirmationSpy = jest
.spyOn(client, "getClusterAnchoringTransactionConfirmation")
.mockResolvedValue(AnchoringStatus.NotAnchored);
const confirmationLevel = yield client.getTransactionConfirmationLevel(mockBuffer);
expect(confirmationLevel).toEqual(mockTransactionReceipts.confirmed);
expect(getTransactionStatusSpy).toHaveBeenCalledTimes(1);
expect(getClusterAnchoringTransactionConfirmationSpy).toHaveBeenCalledTimes(1);
}));
it("returns Anchoring Transaction for Cluster Anchoring Chain confirmation", () => __awaiter(void 0, void 0, void 0, function* () {
const getTransactionStatusSpy = jest.spyOn(client, "getTransactionStatus").mockResolvedValue({
statusCode: 200,
status: ResponseStatus.Confirmed,
});
const getClusterAnchoringTransactionConfirmationSpy = jest
.spyOn(client, "getClusterAnchoringTransactionConfirmation")
.mockResolvedValue(mockAnchoringTransaction);
const getSystemAnchoringTransactionConfirmationSpy = jest
.spyOn(client, "getSystemAnchoringTransactionConfirmation")
.mockResolvedValue(null);
const confirmationLevel = yield client.getTransactionConfirmationLevel(mockBuffer);
expect(confirmationLevel).toEqual(mockClusterAnchoringConfirmationResponse);
expect(getTransactionStatusSpy).toHaveBeenCalledTimes(1);
expect(getClusterAnchoringTransactionConfirmationSpy).toHaveBeenCalledTimes(1);
expect(getSystemAnchoringTransactionConfirmationSpy).toHaveBeenCalledTimes(1);
}));
it("returns Anchoring Transaction for System Anchoring Chain confirmation", () => __awaiter(void 0, void 0, void 0, function* () {
const getTransactionStatusSpy = jest.spyOn(client, "getTransactionStatus").mockResolvedValue({
statusCode: 200,
status: ResponseStatus.Confirmed,
});
const getClusterAnchoringTransactionConfirmationSpy = jest
.spyOn(client, "getClusterAnchoringTransactionConfirmation")
.mockResolvedValue(mockAnchoringTransaction);
const getSystemAnchoringTransactionConfirmationSpy = jest
.spyOn(client, "getSystemAnchoringTransactionConfirmation")
.mockResolvedValue(mockAnchoringTransaction);
const confirmationLevel = yield client.getTransactionConfirmationLevel(mockBuffer);
expect(confirmationLevel).toEqual(mockSystemAnchoringConfirmationResponse);
expect(getTransactionStatusSpy).toHaveBeenCalledTimes(1);
expect(getClusterAnchoringTransactionConfirmationSpy).toHaveBeenCalledTimes(1);
expect(getSystemAnchoringTransactionConfirmationSpy).toHaveBeenCalledTimes(1);
}));
});
//# sourceMappingURL=getTransactionConfirmationLevel.test.js.map