package api import ( "context" auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1" "github.com/bufbuild/protovalidate-go" ) // MockAuditApi is an implementation of AuditApi that does nothing and has no dependency to external systems. type MockAuditApi struct { validator *ProtobufValidator } func NewMockAuditApi() (*AuditApi, error) { validator, err := protovalidate.New() if err != nil { return nil, err } var protobufValidator ProtobufValidator = validator var auditApi AuditApi = &MockAuditApi{validator: &protobufValidator} return &auditApi, nil } // Log implements AuditApi.Log. // Validates and serializes the event but doesn't send it. func (a *MockAuditApi) Log( _ context.Context, event *auditV1.AuditEvent, visibility auditV1.Visibility, routingIdentifier *RoutingIdentifier, objectIdentifier *auditV1.ObjectIdentifier, ) error { _, err := a.ValidateAndSerialize(event, visibility, routingIdentifier, objectIdentifier) return err } // ValidateAndSerialize implements AuditApi.ValidateAndSerialize func (a *MockAuditApi) ValidateAndSerialize( event *auditV1.AuditEvent, visibility auditV1.Visibility, routingIdentifier *RoutingIdentifier, objectIdentifier *auditV1.ObjectIdentifier, ) (SerializedPayload, error) { routableEvent, err := validateAndSerializePartially(a.validator, event, visibility, routingIdentifier, objectIdentifier) if err != nil { return nil, err } return serializeToProtobufMessage(routableEvent) } // Send implements AuditApi.Send func (a *MockAuditApi) Send(context.Context, *RoutingIdentifier, *SerializedPayload) error { return nil }