n8n-bookstack-agent-tool
Version:
Comprehensive BookStack API integration tool for n8n AI Agent with MCP framework compatibility
132 lines ⢠6.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExportOperationsTester = void 0;
const index_js_1 = require("../index.js");
class ExportOperationsTester {
constructor() {
const config = {
baseUrl: 'https://wiki.l7cloud.io',
authType: 'bearer',
token: 'EnRkbVwqzNSyLaVo7olU8Wx8umGznKuE',
tokenSecret: 'TyaJ0JHAenwRIgScmsffrCeSIlon4fZ2',
timeout: 30000,
retryAttempts: 3,
retryDelay: 1000
};
this.tool = new index_js_1.BookStackN8nTool(config);
}
async runExportTests() {
console.log('\nš COMPREHENSIVE EXPORT OPERATIONS TESTS');
console.log('========================================');
await this.testBookExports();
await this.validateExportFormats();
console.log('\nā
Export operations tests completed');
}
async testBookExports() {
console.log('\nš Testing Book Export Operations...');
const exportFormats = [
{ command: 'exportBookHtml', format: 'HTML', expectedContent: '<html' },
{ command: 'exportBookPdf', format: 'PDF', expectedContent: '%PDF' },
{ command: 'exportBookMarkdown', format: 'Markdown', expectedContent: '#' },
{ command: 'exportBookPlaintext', format: 'Plain Text', expectedContent: '' }
];
const testBookIds = [4, 6, 7];
let successfulExports = 0;
let totalExports = 0;
for (const bookId of testBookIds) {
console.log(`\n Testing exports for Book ID ${bookId}:`);
for (const exportTest of exportFormats) {
totalExports++;
try {
console.log(` Testing ${exportTest.command}...`);
const result = await this.tool.execCommand(exportTest.command, { id: bookId });
if (result && typeof result === 'string') {
const contentLength = result.length;
const hasExpectedContent = exportTest.expectedContent ?
result.includes(exportTest.expectedContent) : true;
console.log(` ā
${exportTest.format}: Success (${contentLength} chars)`);
if (hasExpectedContent) {
console.log(` ā
Content validation: Contains expected ${exportTest.format} markers`);
}
else {
console.log(` ā ļø Content validation: Missing expected ${exportTest.format} markers`);
}
successfulExports++;
}
else {
console.log(` ā ļø ${exportTest.format}: Unexpected result type`);
}
}
catch (error) {
console.log(` ā ${exportTest.format}: ${error.message}`);
}
}
}
console.log(`\nš Export Summary: ${successfulExports}/${totalExports} exports successful`);
}
async validateExportFormats() {
console.log('\nš Validating Export Format Quality...');
try {
console.log(' Testing HTML export format validation...');
const htmlResult = await this.tool.execCommand('exportBookHtml', { id: 4 });
if (typeof htmlResult === 'string') {
const hasHtmlStructure = htmlResult.includes('<html') && htmlResult.includes('</html>');
const hasMetadata = htmlResult.includes('<title>') || htmlResult.includes('<meta');
const hasContent = htmlResult.length > 100;
console.log(` ā
HTML Structure: ${hasHtmlStructure ? 'Valid' : 'Invalid'}`);
console.log(` ā
Metadata: ${hasMetadata ? 'Present' : 'Missing'}`);
console.log(` ā
Content Length: ${hasContent ? 'Adequate' : 'Too short'} (${htmlResult.length} chars)`);
}
}
catch (error) {
console.log(` ā HTML validation failed: ${error.message}`);
}
try {
console.log(' Testing Markdown export format validation...');
const markdownResult = await this.tool.execCommand('exportBookMarkdown', { id: 4 });
if (typeof markdownResult === 'string') {
const hasMarkdownHeaders = markdownResult.includes('#');
const hasContent = markdownResult.length > 50;
const isPlainText = !markdownResult.includes('<html');
console.log(` ā
Markdown Headers: ${hasMarkdownHeaders ? 'Present' : 'Missing'}`);
console.log(` ā
Plain Text Format: ${isPlainText ? 'Valid' : 'Contains HTML'}`);
console.log(` ā
Content Length: ${hasContent ? 'Adequate' : 'Too short'} (${markdownResult.length} chars)`);
}
}
catch (error) {
console.log(` ā Markdown validation failed: ${error.message}`);
}
try {
console.log(' Testing PDF export format validation...');
const pdfResult = await this.tool.execCommand('exportBookPdf', { id: 4 });
if (typeof pdfResult === 'string') {
const isPdfFormat = pdfResult.startsWith('%PDF');
const hasContent = pdfResult.length > 1000;
console.log(` ā
PDF Header: ${isPdfFormat ? 'Valid' : 'Invalid'}`);
console.log(` ā
Content Size: ${hasContent ? 'Adequate' : 'Too small'} (${pdfResult.length} chars)`);
}
}
catch (error) {
console.log(` ā PDF validation failed: ${error.message}`);
}
try {
console.log(' Testing Plain Text export format validation...');
const textResult = await this.tool.execCommand('exportBookPlaintext', { id: 4 });
if (typeof textResult === 'string') {
const isPlainText = !textResult.includes('<') && !textResult.includes('%PDF');
const hasContent = textResult.length > 20;
console.log(` ā
Plain Text Format: ${isPlainText ? 'Valid' : 'Contains markup'}`);
console.log(` ā
Content Length: ${hasContent ? 'Adequate' : 'Too short'} (${textResult.length} chars)`);
}
}
catch (error) {
console.log(` ā Plain Text validation failed: ${error.message}`);
}
}
}
exports.ExportOperationsTester = ExportOperationsTester;
if (require.main === module) {
const tester = new ExportOperationsTester();
tester.runExportTests().catch(console.error);
}
//# sourceMappingURL=export-operations-test.js.map