const axios = require('axios');
const baseURL = 'https://aws-pricing.umbrellacost.io';
async function testPricingTools() {
console.log('='.repeat(80));
console.log('Testing Corrected Pricing API Implementation');
console.log(`Base URL: ${baseURL}`);
console.log('='.repeat(80));
// Test 1: get_instance_pricing - AWS EC2 t2.micro
console.log('\n1. Testing get_instance_pricing - AWS EC2 t2.micro in us-east-1');
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 2: get_instance_pricing - AWS RDS db.r5.xlarge
console.log('\n2. Testing get_instance_pricing - AWS RDS db.r5.xlarge in us-east-1');
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));
console.log('Sample data:', JSON.stringify(response.data, null, 2).substring(0, 500));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 3: compare_regional_pricing - t2.micro
console.log('\n3. Testing compare_regional_pricing - AWS EC2 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 4: get_pricing_last_update
console.log('\n4. Testing get_pricing_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);
}
// Test 5: Azure SQL Database instance
console.log('\n5. Testing Azure SQL Database - Basic tier');
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`);
// Look for r5.xlarge equivalent
const sqlInstanceEquivalent = response.data.find(item =>
item.instanceType && (
item.instanceType.includes('S3') ||
item.instanceType.includes('P2') ||
item.instanceType.includes('GP_Gen5_4')
)
);
if (sqlInstanceEquivalent) {
console.log('Found equivalent to db.r5.xlarge:', JSON.stringify(sqlInstanceEquivalent, null, 2));
} else {
console.log('Sample instances:', JSON.stringify(response.data.slice(0, 3), 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));
}
testPricingTools().catch(console.error);