Skip to content

Commit 1f8a7ea

Browse files
committed
catch stray credential expiration consolewarn
1 parent 2310e1d commit 1f8a7ea

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

src/commands/verify.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
getSupportedNetworkNameFromId,
55
readJsonFile,
66
CaptureConsoleWarnAsync,
7+
CaptureConsoleWarn,
78
} from '../utils';
89
import {
910
getChainId,
@@ -76,8 +77,10 @@ const verifyW3CDocument = async (
7677
): Promise<{ result: VerificationFragment[]; warnings: unknown[][] }> => {
7778
signale.info('Verifying W3C document...');
7879

80+
const { result: isTransferable } = CaptureConsoleWarn(() => isTransferableRecord(signedVC));
81+
7982
// Non-transferable record: verify directly
80-
if (!isTransferableRecord(signedVC)) {
83+
if (!isTransferable) {
8184
return await CaptureConsoleWarnAsync(() => verifyDocument(signedVC));
8285
}
8386

src/utils/formatting.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,26 @@ export const getErrorMessage = function (error: unknown): string {
4040
}
4141
};
4242

43-
// Captures console.warn for an async function to handle expected console.warn. Restores original console.warn functionality after the function is executed.
43+
// Captures console.warn for a function to handle expected console.warn.
44+
// Restores original console.warn functionality after the function is executed.
45+
export const CaptureConsoleWarn= <T>(fn: () => T): { result: T; warnings: unknown[][] } => {
46+
const originalWarn = console.warn;
47+
const warnings: unknown[][] = [];
48+
49+
console.warn = (...args) => {
50+
warnings.push(args);
51+
};
52+
53+
try {
54+
const result = fn();
55+
return { result, warnings };
56+
} finally {
57+
console.warn = originalWarn;
58+
}
59+
}
60+
61+
// Async captures console.warn for an async function to handle expected console.warn.
62+
// Restores original console.warn functionality after the function is executed.
4463
export const CaptureConsoleWarnAsync = async <T>(fn: () => Promise<T>): Promise<{ result: T; warnings: unknown[][] }> => {
4564
const originalWarn = console.warn;
4665
const warnings: unknown[][] = [];

tests/main.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,13 +537,15 @@ describe('trustvc-cli', () => {
537537
let signaleSuccessSpy: MockedFunction<typeof signale.success>;
538538
let readJsonFileMock: MockedFunction<typeof utils.readJsonFile>;
539539
let CaptureConsoleWarnAsyncMock: MockedFunction<typeof utils.CaptureConsoleWarnAsync>;
540+
let CaptureConsoleWarnMock: MockedFunction<typeof utils.CaptureConsoleWarn>;
540541
let getSupportedNetworkMock: MockedFunction<typeof utils.getSupportedNetwork>;
541542
let getSupportedNetworkNameFromIdMock: MockedFunction<typeof utils.getSupportedNetworkNameFromId>;
542543

543544
const OA_V3_DNS_TXT_TOKEN_REGISTRY_FIXTURE = './tests/fixtures/verify/oa/3.0/signed_wrapped_oa_dns_txt_token_registry_v3.json';
544545
const W3C_REVOKED_DNS_DID_FIXTURE = './tests/fixtures/verify/w3c/revoked_ecdsa_w3c_verifiable_document_v2_0.json';
545546

546547
beforeEach(async () => {
548+
vi.clearAllMocks();
547549
vi.resetAllMocks();
548550

549551
signalWarnSpy = signale.warn as MockedFunction<typeof signale.warn>;
@@ -562,6 +564,9 @@ describe('trustvc-cli', () => {
562564

563565
CaptureConsoleWarnAsyncMock = utils.CaptureConsoleWarnAsync as MockedFunction<typeof utils.CaptureConsoleWarnAsync>;
564566
CaptureConsoleWarnAsyncMock.mockImplementation((fn: any) => actualUtils.CaptureConsoleWarnAsync(fn));
567+
568+
CaptureConsoleWarnMock = utils.CaptureConsoleWarn as MockedFunction<typeof utils.CaptureConsoleWarn>;
569+
CaptureConsoleWarnMock.mockImplementation((fn: any) => actualUtils.CaptureConsoleWarn(fn));
565570
});
566571

567572
it(
@@ -582,7 +587,6 @@ describe('trustvc-cli', () => {
582587
(prompts.input as any).mockResolvedValueOnce(W3C_REVOKED_DNS_DID_FIXTURE);
583588

584589
await verifyHandler();
585-
586590
expect(signaleSuccessSpy).toHaveBeenCalledWith('DOCUMENT_INTEGRITY: VALID');
587591
expect(signaleSuccessSpy).toHaveBeenCalledWith('ISSUER_IDENTITY: VALID');
588592
expect(signalWarnSpy).toHaveBeenCalledWith(expect.stringContaining('DOCUMENT_STATUS: INVALID [Document has been revoked.]'));

0 commit comments

Comments
 (0)