// Test script for createPage functionality
const axios = require('axios');
const BASE_URL = 'http://localhost:3001';
const AUTH = { username: 'admin', password: 'admin' };
async function testCreatePage() {
console.log('๐งช Testing createPage functionality...');
try {
// 1. Get available templates
console.log('\n1. Getting available templates...');
const templatesResponse = await axios.post(
`${BASE_URL}/api/methods/getAvailableTemplates`,
{ path: '/content/we-retail/us/en' },
{ auth: AUTH }
);
if (!templatesResponse.data.success) {
console.error('โ Failed to get templates:', templatesResponse.data.error);
return;
}
const templates = templatesResponse.data.data.availableTemplates;
console.log(`โ
Found ${templates.length} templates`);
if (templates.length === 0) {
console.error('โ No templates available for testing');
return;
}
const template = templates[0].path;
console.log(`๐ Using template: ${template}`);
// 2. Create a test page
console.log('\n2. Creating test page...');
const pageName = `test-page-${Date.now()}`;
const createResponse = await axios.post(
`${BASE_URL}/api/methods/createPage`,
{
parentPath: '/content/we-retail/us/en',
title: 'Test Page',
name: pageName,
template: template
},
{ auth: AUTH }
);
if (!createResponse.data.success) {
console.error('โ Failed to create page:', createResponse.data.error);
return;
}
const pagePath = createResponse.data.data.pagePath;
console.log(`โ
Page created successfully at: ${pagePath}`);
console.log(`โ
Template used: ${createResponse.data.data.templateUsed}`);
console.log(`โ
jcr:content created: ${createResponse.data.data.jcrContentCreated}`);
console.log(`โ
Page accessible: ${createResponse.data.data.pageAccessible}`);
// 3. Verify page structure
console.log('\n3. Verifying page structure...');
const pageStructure = createResponse.data.data.pageStructure;
if (pageStructure && pageStructure['jcr:content']) {
console.log('โ
Page has proper jcr:content node');
const content = pageStructure['jcr:content'];
console.log(` - jcr:primaryType: ${content['jcr:primaryType']}`);
console.log(` - jcr:title: ${content['jcr:title']}`);
console.log(` - cq:template: ${content['cq:template']}`);
// Check for protected properties that should be set by the repository
if (content['jcr:created']) {
console.log(` - jcr:created: ${content['jcr:created']}`);
}
if (content['jcr:createdBy']) {
console.log(` - jcr:createdBy: ${content['jcr:createdBy']}`);
}
} else {
console.error('โ Page does not have proper structure');
}
console.log('\nโ
Test completed successfully!');
} catch (error) {
console.error('โ Test failed with error:', error.message);
if (error.response) {
console.error('Response status:', error.response.status);
console.error('Response data:', error.response.data);
}
}
}
// Run the test
testCreatePage().catch(console.error);