#!/usr/bin/env node
const https = require('https');
async function makeHttpRequest(hostname, path, method = 'GET', headers = {}, postData = null) {
return new Promise((resolve, reject) => {
const options = {
hostname,
path,
method,
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Debug-Test/1.0',
...headers
}
};
const req = https.request(options, (res) => {
let responseBody = '';
res.on('data', (chunk) => responseBody += chunk);
res.on('end', () => {
try {
const parsedBody = responseBody ? JSON.parse(responseBody) : null;
resolve({
statusCode: res.statusCode,
headers: res.headers,
body: parsedBody,
rawBody: responseBody
});
} catch (error) {
resolve({
statusCode: res.statusCode,
headers: res.headers,
body: null,
rawBody: responseBody
});
}
});
});
req.on('error', (error) => reject(error));
req.setTimeout(10000, () => {
req.destroy();
reject(new Error('Request timeout'));
});
req.end();
});
}
async function testApiCall() {
console.log('🧪 Testing Simple API Call After Authentication');
console.log('================================================');
// First authenticate
const authResponse = await makeHttpRequest(
'api.umbrellacost.io',
'/api/v1/users/signin',
'POST',
{},
{
username: 'david+saola@umbrellacost.com',
password: 'Dsamsung1!'
}
);
if (postData && method === 'POST') {
const data = JSON.stringify(postData);
options.headers['Content-Length'] = Buffer.byteLength(data);
}
if (!authResponse.body?.jwtToken) {
console.log('❌ Authentication failed');
return;
}
console.log('✅ Authentication successful');
const jwtToken = authResponse.body.jwtToken;
// Test a simple API call - /users endpoint
console.log('\n🔍 Testing /users endpoint...');
try {
const userResponse = await makeHttpRequest(
'api.umbrellacost.io',
'/api/v1/users',
'GET',
{
'Authorization': jwtToken,
'Content-Type': 'application/json'
}
);
console.log('📥 Users response status:', userResponse.statusCode);
console.log('📥 Users response size:', userResponse.rawBody.length);
console.log('📥 Users response (first 500 chars):', userResponse.rawBody.substring(0, 500));
} catch (error) {
console.log('❌ Users endpoint error:', error.message);
}
// Test budgets endpoint with simple parameters
console.log('\n🔍 Testing /budgets/v2/i/ endpoint...');
try {
const budgetResponse = await makeHttpRequest(
'api.umbrellacost.io',
'/api/v1/budgets/v2/i/?only_metadata=true',
'GET',
{
'Authorization': jwtToken,
'Content-Type': 'application/json'
}
);
console.log('📥 Budget response status:', budgetResponse.statusCode);
console.log('📥 Budget response size:', budgetResponse.rawBody.length);
console.log('📥 Budget response (first 500 chars):', budgetResponse.rawBody.substring(0, 500));
} catch (error) {
console.log('❌ Budget endpoint error:', error.message);
}
}
testApiCall().catch(console.error);