Files
q-blog/tests/utils/fetchMail.test.ts
greenflame089 0871c31b34 Add new tests
2025-08-21 18:51:12 -04:00

68 lines
1.7 KiB
TypeScript

import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
import { fetchAndEvaluateMail } from '@/utils/fetchMail';
const original = (global as any).qortalRequest;
beforeEach(() => {
(global as any).qortalRequest = vi.fn();
});
afterEach(() => {
(global as any).qortalRequest = original;
vi.restoreAllMocks();
});
const validDecrypted = {
title: 'Mail title',
createdAt: 1234,
version: 1,
attachments: [],
textContent: [],
generalData: {},
};
describe('fetchAndEvaluateMail', () => {
it('returns isValid=false when prerequisites fail', async () => {
// No owner
(global as any).qortalRequest = vi
.fn()
// FETCH_QDN_RESOURCE
.mockResolvedValueOnce('encrypted')
// GET_NAME_DATA
.mockResolvedValueOnce({});
const res = await fetchAndEvaluateMail({
user: 'u',
messageIdentifier: 'mid',
otherUser: 'other',
content: {},
});
expect(res.isValid).toBe(false);
});
it('returns mapped object when all checks pass', async () => {
const decryptedB64 = btoa(JSON.stringify(validDecrypted));
(global as any).qortalRequest = vi
.fn()
// FETCH_QDN_RESOURCE
.mockResolvedValueOnce('encrypted')
// GET_NAME_DATA
.mockResolvedValueOnce({ owner: 'ADDR' })
// GET_ACCOUNT_DATA
.mockResolvedValueOnce({ publicKey: 'PUB' })
// DECRYPT_DATA
.mockResolvedValueOnce(decryptedB64);
const res = await fetchAndEvaluateMail({
user: 'u',
messageIdentifier: 'mid',
otherUser: 'other',
content: {},
});
expect(res.isValid).toBe(true);
expect(res.id).toBe('mid');
expect(res.title).toBe('Mail title');
expect(res.createdAt).toBe(1234);
});
});