const axios = require('axios');
const baseURL = 'https://umbrellacost.com';
async function testAPI() {
console.log('='.repeat(80));
console.log('Testing Umbrella Cost Public Pricing API');
console.log('='.repeat(80));
// Test 1: Provider Cost endpoint
console.log('\n1. Testing /provider-cost endpoint with AWS EC2');
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 structure:', Object.keys(response.data));
if (Array.isArray(response.data)) {
console.log('Response is array, length:', response.data.length);
console.log('First item:', JSON.stringify(response.data[0], null, 2));
} else {
console.log('Response:', JSON.stringify(response.data, null, 2));
}
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 2: Instance endpoint
console.log('\n2. Testing /instance endpoint for specific instance type');
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
console.log('\n3. Testing /instance endpoint for RDS instance (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('Response:', JSON.stringify(response.data, null, 2));
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 4: Instance family types
console.log('\n4. Testing /instance-family-types endpoint');
try {
const response = await axios.get(`${baseURL}/instance-family-types/AmazonEC2/General`, {
timeout: 10000
});
console.log('✅ Success!');
console.log('Response structure:', typeof response.data);
if (Array.isArray(response.data)) {
console.log('Array length:', response.data.length);
console.log('First 5 items:', response.data.slice(0, 5));
} else {
console.log('Response:', JSON.stringify(response.data, null, 2));
}
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 5: Region prices
console.log('\n5. Testing /region-prices endpoint');
try {
const response = await axios.get(`${baseURL}/region-prices/AWS/AmazonEC2/t2.micro`, {
timeout: 10000
});
console.log('✅ Success!');
if (Array.isArray(response.data)) {
console.log('Response is array, length:', response.data.length);
console.log('First 3 regions:', JSON.stringify(response.data.slice(0, 3), null, 2));
} else {
console.log('Response:', JSON.stringify(response.data, null, 2));
}
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 6: Azure SQL Database
console.log('\n6. Testing Azure SQL Database');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'Azure',
serviceCode: 'AzureSQLDatabase',
regionCode: 'eastus'
},
timeout: 10000
});
console.log('✅ Success!');
if (Array.isArray(response.data)) {
console.log('Response is array, length:', response.data.length);
console.log('First 3 items:', JSON.stringify(response.data.slice(0, 3), null, 2));
} else {
console.log('Response:', JSON.stringify(response.data, null, 2));
}
} catch (error) {
console.log('❌ Error:', error.response?.status, error.message);
}
// Test 7: Search or filter endpoint
console.log('\n7. Testing if there\'s a search endpoint');
try {
const response = await axios.get(`${baseURL}/search`, {
params: {
query: 'r5.xlarge'
},
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 8: Last update
console.log('\n8. Testing /last-update endpoint');
try {
const response = await axios.get(`${baseURL}/last-update`, {
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 9: Try provider-cost with search/filter params
console.log('\n9. Testing /provider-cost with additional filter params');
try {
const response = await axios.get(`${baseURL}/provider-cost`, {
params: {
provider: 'AWS',
serviceCode: 'AmazonRDS',
regionCode: 'us-east-1',
instanceType: 'db.r5.xlarge'
},
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 10: Check if there's an API endpoint discovery
console.log('\n10. Testing root endpoint for API documentation');
try {
const response = await axios.get(`${baseURL}/api`, {
timeout: 10000
});
console.log('✅ Success!');
console.log('Response:', response.data);
} 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);