Repository navigation
Expand file tree
/
Copy pathgenerate-reports.js
More file actions
68 lines (51 loc) · 2.35 KB
/
Copy pathgenerate-reports.js
File metadata and controls
68 lines (51 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/**
* Copyright IBM Corp. 2025
* Assisted by CursorAI
*/
const fs = require('fs');
const path = require('path');
// Import the compiled services
const { SchemaIndexService } = require('./out/services/SchemaIndexService');
const { FieldPolicyParser } = require('./out/services/fieldPolicyParser');
const { generateFieldAccessReportData } = require('./out/services/fieldAccessReport');
async function generateReports() {
const fixturesDir = path.join(__dirname, 'src/test/fixtures/field-policies');
const schemaDir = path.join(__dirname, 'src/test/fixtures/schema-sample');
// Set up schema index
const schemaIndex = new SchemaIndexService();
const schemaEntry = path.join(schemaDir, 'index.graphql');
await schemaIndex.scan(schemaEntry);
const policyParser = new FieldPolicyParser();
// Get all YAML fixture files
const fixtureFiles = fs.readdirSync(fixturesDir)
.filter(file => file.endsWith('.yaml'))
.map(file => file.replace('.yaml', ''));
console.log('\n=== FIELD ACCESS REPORT GENERATION ===\n');
for (const fixtureName of fixtureFiles) {
const configPath = path.join(fixturesDir, `${fixtureName}.yaml`);
const configContent = fs.readFileSync(configPath, 'utf8');
console.log(`\n--- ${fixtureName} ---`);
console.log(`Policy Config:`);
console.log(configContent);
try {
const report = await generateFieldAccessReportData(schemaIndex, policyParser, configContent);
console.log(`\nGenerated Report:`);
console.log(JSON.stringify(report, null, 2));
// Check if there's an existing expected report
const expectedReportPath = path.join(fixturesDir, `${fixtureName}.report.json`);
if (fs.existsSync(expectedReportPath)) {
const expectedReport = JSON.parse(fs.readFileSync(expectedReportPath, 'utf8'));
console.log(`\nExisting Expected Report:`);
console.log(JSON.stringify(expectedReport, null, 2));
console.log(`\nMatch: ${JSON.stringify(report) === JSON.stringify(expectedReport) ? 'YES' : 'NO'}`);
} else {
console.log(`\nNo existing expected report found for ${fixtureName}`);
}
} catch (error) {
console.error(`\nError generating report: ${error}`);
}
console.log(`\n${'='.repeat(50)}`);
}
console.log('\n=== END OF REPORT GENERATION ===\n');
}
generateReports().catch(console.error);