const axios = require('axios');
const baseURL = 'https://aws-pricing.umbrellacost.io';
async function testAPI() {
console.log('='.repeat(80));
console.log('Testing CORRECT Umbrella Pricing API');
console.log(`Base URL: ${baseURL}`);
console.log('='.repeat(80));
// Test 1: Provider Cost endpoint - AWS EC2
console.log('\n1. Testing /provider-cost - AWS EC2 in us-east-1');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'AWS',
serviceCode: 'AmazonEC2',
regionCode: 'us-east-1'
},
timeout: 10000
});
console.log('âś… Success!');
console.log(`Response type: ${Array.isArray(response.data) ? 'Array' : typeof response.data}`);
console.log(`Items count: ${response.data.length}`);
console.log('First 3 items:', JSON.stringify(response.data.slice(0, 3), null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 2: Specific instance - t2.micro
console.log('\n2. Testing /instance/AWS/AmazonEC2/t2.micro');
try {
const response = await axios.get(`${baseURL}/instance/AWS/AmazonEC2/t2.micro`, {
params: { region: 'us-east-1' },
timeout: 10000
});
console.log('âś… Success!');
console.log('Response:', JSON.stringify(response.data, null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 3: RDS instance - db.r5.xlarge
console.log('\n3. Testing /instance/AWS/AmazonRDS/db.r5.xlarge');
try {
const response = await axios.get(`${baseURL}/instance/AWS/AmazonRDS/db.r5.xlarge`, {
params: { region: 'us-east-1' },
timeout: 10000
});
console.log('âś… Success!');
console.log('Instance data found!');
console.log('Keys:', Object.keys(response.data));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 4: Instance family types - t3 family
console.log('\n4. Testing /instance-family-types/AmazonEC2/t3');
try {
const response = await axios.get(`${baseURL}/instance-family-types/AmazonEC2/t3`, {
timeout: 10000
});
console.log('âś… Success!');
console.log(`Found ${response.data.length} instance types in t3 family`);
console.log('First 5:', JSON.stringify(response.data.slice(0, 5), null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 5: Region prices for t2.micro
console.log('\n5. Testing /region-prices/AWS/AmazonEC2/t2.micro');
try {
const response = await axios.get(`${baseURL}/region-prices/AWS/AmazonEC2/t2.micro`, {
timeout: 10000
});
console.log('âś… Success!');
console.log(`Found pricing for ${response.data.length} regions`);
console.log('First 3 regions:', JSON.stringify(response.data.slice(0, 3), null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 6: Azure SQL Database
console.log('\n6. Testing /provider-cost - Azure SQL Database');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'Azure',
serviceCode: 'AzureSQLDatabase',
regionCode: 'eastus'
},
timeout: 10000
});
console.log('âś… Success!');
console.log(`Found ${response.data.length} Azure SQL Database options`);
console.log('First 3:', JSON.stringify(response.data.slice(0, 3), null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 7: Last update
console.log('\n7. Testing /last-update');
try {
const response = await axios.get(`${baseURL}/last-update`, {
timeout: 10000
});
console.log('âś… Success!');
console.log('Last update:', JSON.stringify(response.data, null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
console.log('\n' + '='.repeat(80));
console.log('Testing Complete!');
console.log('='.repeat(80));
}
testAPI().catch(console.error);