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:
91
test/emoney/api/integration/graphql.test.ts
Normal file
91
test/emoney/api/integration/graphql.test.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* GraphQL API Integration Tests
|
||||
*/
|
||||
|
||||
import { describe, it, expect, beforeAll } from '@jest/globals';
|
||||
import { GraphQLClient } from 'graphql-request';
|
||||
|
||||
const GRAPHQL_URL = process.env.GRAPHQL_URL || 'http://localhost:4000/graphql';
|
||||
|
||||
describe('GraphQL API Integration Tests', () => {
|
||||
let client: GraphQLClient;
|
||||
|
||||
beforeAll(() => {
|
||||
client = new GraphQLClient(GRAPHQL_URL, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${process.env.ACCESS_TOKEN || 'test-token'}`,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
describe('Queries', () => {
|
||||
it('should query token', async () => {
|
||||
const query = `
|
||||
query GetToken($code: String!) {
|
||||
token(code: $code) {
|
||||
code
|
||||
address
|
||||
name
|
||||
symbol
|
||||
policy {
|
||||
lienMode
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const data = await client.request(query, { code: 'USDW' });
|
||||
expect(data).toHaveProperty('token');
|
||||
expect(data.token).toHaveProperty('code');
|
||||
});
|
||||
|
||||
it('should query triggers', async () => {
|
||||
const query = `
|
||||
query GetTriggers($filter: TriggerFilter, $paging: Paging) {
|
||||
triggers(filter: $filter, paging: $paging) {
|
||||
items {
|
||||
triggerId
|
||||
rail
|
||||
state
|
||||
}
|
||||
total
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const data = await client.request(query, {
|
||||
filter: { state: 'PENDING' },
|
||||
paging: { limit: 10, offset: 0 },
|
||||
});
|
||||
|
||||
expect(data).toHaveProperty('triggers');
|
||||
expect(data.triggers).toHaveProperty('items');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Mutations', () => {
|
||||
it('should deploy token via mutation', async () => {
|
||||
const mutation = `
|
||||
mutation DeployToken($input: DeployTokenInput!) {
|
||||
deployToken(input: $input) {
|
||||
code
|
||||
address
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const data = await client.request(mutation, {
|
||||
input: {
|
||||
name: 'Test Token',
|
||||
symbol: 'TEST',
|
||||
decimals: 18,
|
||||
issuer: '0x1234567890123456789012345678901234567890',
|
||||
},
|
||||
});
|
||||
|
||||
expect(data).toHaveProperty('deployToken');
|
||||
expect(data.deployToken).toHaveProperty('code');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user