// Mock implementation for audit trail components
export class MockTestOutcomeAuditor {
private testOutcomes: any[] = [];
private activeTests: Map<string, any> = new Map();
public startTest(testExecution: any): string {
const testId = testExecution.testId;
this.activeTests.set(testId, testExecution);
return `mock-event-${Date.now()}`;
}
public completeTest(testId: string, status: string, summary?: string): string {
const testExecution = this.activeTests.get(testId);
if (testExecution) {
this.testOutcomes.push({
testId,
testName: testExecution.testName,
testSuite: testExecution.testSuite,
status,
startTime: testExecution.startTime,
endTime: Date.now(),
duration: Date.now() - testExecution.startTime,
summary,
correlationId: testExecution.correlationId
});
this.activeTests.delete(testId);
}
return `mock-event-${Date.now()}`;
}
public logTestDecision(decision: any): string {
return `mock-event-${Date.now()}`;
}
public logTestOutcome(outcome: any): string {
return `mock-event-${Date.now()}`;
}
public logTestMetrics(metrics: any): string {
return `mock-event-${Date.now()}`;
}
public logTestFailure(testId: string, error: Error, context?: any, correlationId?: string): string {
return `mock-event-${Date.now()}`;
}
public getTestEvents(testId: string): any[] {
return [];
}
public getTestEventsByCorrelation(correlationId: string): any[] {
return [];
}
public getActiveTests(): any[] {
return Array.from(this.activeTests.values());
}
public getTestSummary(testId: string): any {
return {
testId,
totalEvents: 0
};
}
public getTestOutcomes(): any[] {
return this.testOutcomes;
}
public async exportTestOutcomes(filters?: any): Promise<any[]> {
return this.testOutcomes;
}
}
export class MockAuditTrailService {
private static instance: MockAuditTrailService;
private events: any[] = [];
public static getInstance(): MockAuditTrailService {
if (!MockAuditTrailService.instance) {
MockAuditTrailService.instance = new MockAuditTrailService();
}
return MockAuditTrailService.instance;
}
public logEvent(type: string, message: string, severity: string, context: any, data: any): string {
const eventId = `mock-event-${Date.now()}`;
this.events.push({
id: eventId,
type,
message,
severity,
context,
data,
timestamp: Date.now()
});
return eventId;
}
public getAllEvents(): any[] {
return this.events;
}
public getEventsByCorrelationId(correlationId: string): any[] {
return this.events.filter(event => event.context.correlationId === correlationId);
}
public generateCorrelationId(): string {
return `mock-correlation-${Date.now()}`;
}
public queryAuditTrail(filters: any): any[] {
return this.events;
}
public async exportAuditTrail(filters?: any): Promise<any[]> {
return this.events;
}
public generateAuditReport(filters?: any): any {
return {
totalEvents: this.events.length,
events: this.events
};
}
}
export class MockAgentDecisionLogger {
public logDecision(decision: any): string {
return `mock-event-${Date.now()}`;
}
public getDecisions(agentId?: string): any[] {
return [];
}
public async exportDecisions(filters?: any): Promise<any[]> {
return [];
}
}
export class MockTransactionTraceLogger {
public logTransactionStart(transaction: any): string {
return `mock-event-${Date.now()}`;
}
public logTransactionStep(transactionId: string, step: any): string {
return `mock-event-${Date.now()}`;
}
public logTransactionComplete(transactionId: string, result: any): string {
return `mock-event-${Date.now()}`;
}
public logTransactionError(transactionId: string, error: Error): string {
return `mock-event-${Date.now()}`;
}
public getTraces(transactionId?: string): any[] {
return [];
}
public async exportTraces(filters?: any): Promise<any[]> {
return [];
}
}
// Export the mock classes
export const TestOutcomeAuditor = MockTestOutcomeAuditor;
export const AuditTrailService = MockAuditTrailService;
export const AgentDecisionLogger = MockAgentDecisionLogger;
export const TransactionTraceLogger = MockTransactionTraceLogger;