/
mustreets
/
CreateTransactions
Обзор
Документация
Войти
/
mustreets
/
CreateTransactions
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
test/wallet/CreateTransaction.flow.test.ts
81 строка
3 KB
Slava
Initialize project with essential configurations and structures
14 май 2026, 22:23
14 май 2026, 22:23
a89cd26
Код
Авторство
О чём код?
import { describe, expect, it, vi } from "vitest"; import { CreateTransaction } from "../../libJS/wallet/class.CreateTransaction"; import { type ITransactionSnapshot,Wallet } from "../../libJS/wallet/types"; import { createFailingSkProvider, createSoftwareProvider, createValidValueTransfer, defaultSendTransactionMock, } from "../helpers/mockProvider"; describe("CreateTransaction lifecycle", () => { it("verifyTransaction completes and returns cipher payload", async () => { const reporter = { log: vi.fn(), track: vi.fn() }; const tx = new CreateTransaction({ provider: createSoftwareProvider(reporter as never), reporter: reporter as never, sendTransaction: defaultSendTransactionMock(), value: createValidValueTransfer(), wallet: Wallet.SOFTWARE_WALLET, }); const result = await tx.verifyTransaction(); expect(result.cipherTransaction.signature).toMatch(/^signed_with_/); expect(reporter.track).toHaveBeenCalledWith( "transaction_verify_complete", expect.objectContaining({ wallet: Wallet.SOFTWARE_WALLET }), ); }); it("signTransaction sends cipher transaction", async () => { const send = defaultSendTransactionMock(); const tx = new CreateTransaction({ provider: createSoftwareProvider(undefined), sendTransaction: send, value: createValidValueTransfer(), wallet: Wallet.SOFTWARE_WALLET, }); await tx.signTransaction(); expect(send).toHaveBeenCalledTimes(1); expect(send.mock.calls[0][0]).toMatchObject({ body: { value: expect.any(Object) }, id: expect.any(String), }); }); it("throws when snapshot is expired before signing", async () => { const send = defaultSendTransactionMock(); const tx = new CreateTransaction({ provider: createSoftwareProvider(undefined), sendTransaction: send, value: createValidValueTransfer(), wallet: Wallet.SOFTWARE_WALLET, }); const expired: ITransactionSnapshot = { expiresAt: Date.now() - 1, payloadHash: "hash", timestamp: Date.now() - 2, transaction_id: "tid", value: createValidValueTransfer(), wallet: Wallet.SOFTWARE_WALLET, }; vi.spyOn(tx, "createSnapshot").mockReturnValueOnce(Object.freeze(expired)); await expect(tx.signTransaction()).rejects.toThrow(/expired/i); expect(send).not.toHaveBeenCalled(); }); it("does not send when private key source fails (resilience)", async () => { const send = defaultSendTransactionMock(); const reporter = { log: vi.fn(), track: vi.fn() }; const tx = new CreateTransaction({ provider: createFailingSkProvider(reporter as never), reporter: reporter as never, sendTransaction: send, value: createValidValueTransfer(), wallet: Wallet.HARDWARE_WALLET, }); await expect(tx.signTransaction()).rejects.toThrow(/nfc_connection_lost/); expect(send).not.toHaveBeenCalled(); }); });