/** * 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'; describe('REST API Integration Tests', () => { let accessToken: string; beforeAll(async () => { // TODO: Get OAuth2 token // accessToken = await getAccessToken(); }); 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: '...', 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'); }); }); });