#!/usr/bin/env node
/**
* Test the plain-sub-users API directly through our local server/client
*/
// Import our local modules from dist
const path = require('path');
const projectRoot = path.resolve(__dirname, '../..');
const { UmbrellaDualAuth } = require(path.join(projectRoot, 'dist/dual-auth.js'));
const { UmbrellaApiClient } = require(path.join(projectRoot, 'dist/api-client.js'));
async function testLocalPlainSubUsers() {
console.log('🔍 Testing plain-sub-users API through local client...\n');
const baseURL = 'https://api.umbrellacost.io/api/v1';
try {
// Step 1: Set up dual auth
console.log('1️⃣ Setting up authentication...');
const dualAuth = new UmbrellaDualAuth(baseURL);
// Try Cognito authentication first
const authResult = await dualAuth.authenticateCognito('david+allcloud@umbrellacost.com', 'UmbrellaCost2024!');
if (!authResult.Authorization) {
throw new Error('Authentication failed');
}
console.log(`✅ Authentication successful`);
console.log(` Authorization: ${authResult.Authorization.substring(0, 50)}...`);
// Step 2: Set up API client
console.log('\n2️⃣ Setting up API client...');
const apiClient = new UmbrellaApiClient(baseURL);
apiClient.setAuthToken(authResult);
console.log('✅ API client configured');
// Step 3: Test plain-sub-users WITHOUT additional parameters
console.log('\n3️⃣ Testing /users/plain-sub-users (no special parameters)...');
try {
const response1 = await apiClient.makeDirectRequest('/users/plain-sub-users');
console.log(`✅ Request succeeded`);
console.log(` Success: ${response1.success}`);
console.log(` Data:`, JSON.stringify(response1.data, null, 2));
} catch (error) {
console.log(`❌ Request failed: ${error.message}`);
}
console.log('\n' + '='.repeat(80) + '\n');
// Step 4: Test plain-sub-users WITH isPpApplied in parameters
console.log('4️⃣ Testing /users/plain-sub-users with isPpApplied: true in params...');
try {
const response2 = await apiClient.makeDirectRequest('/users/plain-sub-users', {
isPpApplied: true
});
console.log(`✅ Request succeeded`);
console.log(` Success: ${response2.success}`);
console.log(` Data:`, JSON.stringify(response2.data, null, 2));
} catch (error) {
console.log(`❌ Request failed: ${error.message}`);
}
console.log('\n' + '='.repeat(80) + '\n');
// Step 5: Test plain-sub-users WITH isPpApplied: false in parameters
console.log('5️⃣ Testing /users/plain-sub-users with isPpApplied: false in params...');
try {
const response3 = await apiClient.makeDirectRequest('/users/plain-sub-users', {
isPpApplied: false
});
console.log(`✅ Request succeeded`);
console.log(` Success: ${response3.success}`);
console.log(` Data:`, JSON.stringify(response3.data, null, 2));
} catch (error) {
console.log(`❌ Request failed: ${error.message}`);
}
console.log('\n' + '='.repeat(80) + '\n');
// Step 6: Test plain-sub-users with customer_account_key (MSP mode)
console.log('6️⃣ Testing /users/plain-sub-users with customer_account_key (MSP mode)...');
try {
const response4 = await apiClient.makeDirectRequest('/users/plain-sub-users', {
customer_account_key: '22676', // Bank Leumi account
isPpApplied: true
});
console.log(`✅ Request succeeded`);
console.log(` Success: ${response4.success}`);
console.log(` Data:`, JSON.stringify(response4.data, null, 2));
} catch (error) {
console.log(`❌ Request failed: ${error.message}`);
}
} catch (error) {
console.error('💥 Test failed:', error.message);
if (error.response) {
console.error(' Status:', error.response.status);
console.error(' Data:', error.response.data);
}
}
}
// Run the test
testLocalPlainSubUsers().catch(console.error);