From b55e25e540c10a3425d87589220f194fd069ee95 Mon Sep 17 00:00:00 2001 From: waleedcodes <110061477+waleedcodes@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:26:57 +0500 Subject: [PATCH 1/3] test(workflow): scaffold demo workflow integration test suite --- tests/demoWorkflow.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 tests/demoWorkflow.test.ts diff --git a/tests/demoWorkflow.test.ts b/tests/demoWorkflow.test.ts new file mode 100644 index 0000000..7d84180 --- /dev/null +++ b/tests/demoWorkflow.test.ts @@ -0,0 +1,14 @@ +import * as path from 'node:path'; +import { describe, expect, it } from 'vitest'; +import { ProofCodeEngine } from '../src/engine/proofCodeEngine'; + +describe('Killer Workflow Demo Fixture', () => { + it('should analyze the demo app and detect all high risks, impact, and rule violations', async () => { + const demoDir = path.resolve(__dirname, '../examples/demo-app'); + const engine = new ProofCodeEngine(demoDir); + + const report = await engine.verify(); + + expect(report).toBeDefined(); + expect(report.verdict).toBe('BLOCKED'); + expect(report.summary.highRiskCount).toBeGreaterThanOrEqual(1); From a49f78f1df9192ee90b807c1948ae03fe1060418 Mon Sep 17 00:00:00 2001 From: waleedcodes <110061477+waleedcodes@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:26:57 +0500 Subject: [PATCH 2/3] test(workflow): execute ProofCodeEngine over demo-app fixture --- tests/demoWorkflow.test.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/demoWorkflow.test.ts b/tests/demoWorkflow.test.ts index 7d84180..3f7b502 100644 --- a/tests/demoWorkflow.test.ts +++ b/tests/demoWorkflow.test.ts @@ -12,3 +12,19 @@ describe('Killer Workflow Demo Fixture', () => { expect(report).toBeDefined(); expect(report.verdict).toBe('BLOCKED'); expect(report.summary.highRiskCount).toBeGreaterThanOrEqual(1); + + // Verify SQL injection detection + const sqlRisk = report.risks.find((r) => r.ruleId === 'PC-SEC-001'); + expect(sqlRisk).toBeDefined(); + expect(sqlRisk?.file).toContain('login/route.ts'); + + // Verify Missing Authorization in API route + const authRisk = report.risks.find( + (r) => r.ruleId === 'PC-AUTH-001' && r.file.includes('orders') + ); + expect(authRisk).toBeDefined(); + + // Verify Rule Violations + const passwordHashViolation = report.rules.find((r) => + r.rule.description.includes('passwordHash') && r.status === 'VIOLATION' + ); From 42c8eca01115910a9c6f56c38099cb3201a41e65 Mon Sep 17 00:00:00 2001 From: waleedcodes <110061477+waleedcodes@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:26:57 +0500 Subject: [PATCH 3/3] test(workflow): assert BLOCKED verdict, risk findings, and rule violations --- tests/demoWorkflow.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/demoWorkflow.test.ts b/tests/demoWorkflow.test.ts index 3f7b502..c32eb64 100644 --- a/tests/demoWorkflow.test.ts +++ b/tests/demoWorkflow.test.ts @@ -28,3 +28,14 @@ describe('Killer Workflow Demo Fixture', () => { const passwordHashViolation = report.rules.find((r) => r.rule.description.includes('passwordHash') && r.status === 'VIOLATION' ); + expect(passwordHashViolation).toBeDefined(); + + // Verify Impact Analysis + const changedUserSymbol = report.impact.changedSymbols.find( + (s) => s.symbolName === 'getUser' + ); + expect(changedUserSymbol).toBeDefined(); + expect(changedUserSymbol?.callers.length).toBeGreaterThanOrEqual(3); + expect(report.impact.untestedCallersCount).toBeGreaterThan(0); + }); +});