Files
smom-dbis-138/test/emoney/api/integration/rest-api.test.ts
defiQUG 76aa419320 feat: bridges, PMM, flash workflow, token-aggregation, and deployment docs
- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault.
- Token-aggregation service routes, planner, chain config, relay env templates.
- Config snapshots and multi-chain deployment markdown updates.
- gitignore services/btc-intake/dist/ (tsc output); do not track dist.

Run forge build && forge test before deploy (large solc graph).

Made-with: Cursor
2026-04-07 23:40:52 -07:00

106 lines
3.0 KiB
TypeScript

/**
* REST API Integration Tests
*/
import { describe, it, expect, beforeAll, afterAll } from '@jest/globals';
import axios from 'axios';
const BASE_URL = process.env.API_URL || 'http://localhost:3000';
const API_KEY = process.env.API_KEY || 'test-key';
const runIntegration = process.env.RUN_EMONEY_API_INTEGRATION === '1';
const describeIfConfigured = runIntegration ? describe : describe.skip;
describeIfConfigured('REST API Integration Tests', () => {
let accessToken: string;
beforeAll(async () => {
accessToken = process.env.ACCESS_TOKEN || 'test-token';
});
describe('Token Operations', () => {
it('should deploy a token', async () => {
const response = await axios.post(
`${BASE_URL}/v1/tokens`,
{
name: 'Test Token',
symbol: 'TEST',
decimals: 18,
issuer: '0x1234567890123456789012345678901234567890',
},
{
headers: {
Authorization: `Bearer ${accessToken}`,
'Idempotency-Key': `test-${Date.now()}`,
},
}
);
expect(response.status).toBe(201);
expect(response.data).toHaveProperty('code');
expect(response.data).toHaveProperty('address');
});
it('should list tokens', async () => {
const response = await axios.get(`${BASE_URL}/v1/tokens`, {
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
expect(response.status).toBe(200);
expect(response.data).toHaveProperty('items');
expect(Array.isArray(response.data.items)).toBe(true);
});
});
describe('Lien Operations', () => {
it('should place a lien', async () => {
const response = await axios.post(
`${BASE_URL}/v1/liens`,
{
debtor: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
amount: '1000000000000000000',
priority: 1,
reasonCode: 'DEBT_ENFORCEMENT',
},
{
headers: {
Authorization: `Bearer ${accessToken}`,
},
}
);
expect(response.status).toBe(201);
expect(response.data).toHaveProperty('lienId');
});
});
describe('ISO-20022 Operations', () => {
it('should submit outbound message', async () => {
const response = await axios.post(
`${BASE_URL}/v1/iso/outbound`,
{
msgType: 'pacs.008',
instructionId: `0x${'1'.repeat(64)}`,
payloadHash: `0x${'a'.repeat(64)}`,
payload: '<Document>...</Document>',
rail: 'FEDWIRE',
token: '0x1234567890123456789012345678901234567890',
amount: '1000000000000000000',
accountRefId: `0x${'b'.repeat(64)}`,
counterpartyRefId: `0x${'c'.repeat(64)}`,
},
{
headers: {
Authorization: `Bearer ${accessToken}`,
'Idempotency-Key': `test-${Date.now()}`,
},
}
);
expect(response.status).toBe(201);
expect(response.data).toHaveProperty('triggerId');
});
});
});