Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
This commit is contained in:
105
test/emoney/api/integration/rest-api.test.ts
Normal file
105
test/emoney/api/integration/rest-api.test.ts
Normal file
@@ -0,0 +1,105 @@
|
||||
/**
|
||||
* 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: '<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');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user