audit-go/audit/api/test_data.go
2024-07-16 16:13:29 +02:00

193 lines
4.6 KiB
Go

package api
import (
"google.golang.org/protobuf/types/known/wrapperspb"
"time"
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
"github.com/google/uuid"
"google.golang.org/protobuf/types/known/structpb"
"google.golang.org/protobuf/types/known/timestamppb"
)
func NewOrganizationAuditEvent(
customization *func(
*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier,
)) (
*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier,
) {
auditEvent := &auditV1.AuditEvent{
SequenceNumber: wrapperspb.Int64(0),
EventName: "ORGANIZATION_CREATED",
EventTimeStamp: timestamppb.New(time.Now()),
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
Initiator: &auditV1.Principal{
Id: uuid.NewString(),
},
}
identifier := uuid.New()
routingIdentifier := &RoutingIdentifier{
Identifier: identifier,
Type: RoutingIdentifierTypeOrganization,
}
objectIdentifier := &auditV1.ObjectIdentifier{
Identifier: identifier.String(),
Type: auditV1.ObjectType_OBJECT_TYPE_ORGANIZATION,
}
if customization != nil {
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
}
return auditEvent, routingIdentifier, objectIdentifier
}
func NewOrganizationAuditEventWithDetails() (*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier) {
customization := func(event *auditV1.AuditEvent,
routingIdentifier *RoutingIdentifier,
objectIdentifier *auditV1.ObjectIdentifier) {
userAgent := "firefox"
parameters, _ := structpb.NewStruct(map[string]any{"parameter1": "value"})
body, _ := structpb.NewStruct(map[string]any{"body": "value"})
event.Request = &auditV1.RequestDetails{
Endpoint: "/test",
SourceIpAddress: "127.0.0.1",
UserAgent: &userAgent,
Parameters: parameters,
Body: body,
Headers: []*auditV1.RequestHeader{
{
Key: "header1",
Value: "value",
},
},
}
email := "test@example.com"
event.Principals = []*auditV1.Principal{
{
Id: "id",
Email: &email,
},
}
details, _ := structpb.NewStruct(map[string]interface{}{
"detail": "value",
})
event.Details = details
result, _ := structpb.NewStruct(map[string]interface{}{
"result": "value",
})
event.Result = result
}
return NewOrganizationAuditEvent(&customization)
}
func NewFolderAuditEvent(
customization *func(
*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier,
)) (
*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier,
) {
auditEvent := &auditV1.AuditEvent{
SequenceNumber: wrapperspb.Int64(0),
EventName: "FOLDER_CREATED",
EventTimeStamp: timestamppb.New(time.Now()),
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
Initiator: &auditV1.Principal{
Id: uuid.NewString(),
},
}
routingIdentifier := &RoutingIdentifier{
Identifier: uuid.New(),
Type: RoutingIdentifierTypeOrganization,
}
objectIdentifier := &auditV1.ObjectIdentifier{
Identifier: uuid.New().String(),
Type: auditV1.ObjectType_OBJECT_TYPE_FOLDER,
}
if customization != nil {
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
}
return auditEvent, routingIdentifier, objectIdentifier
}
func NewProjectAuditEvent(
customization *func(
*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier,
)) (
*auditV1.AuditEvent,
*RoutingIdentifier,
*auditV1.ObjectIdentifier,
) {
auditEvent := &auditV1.AuditEvent{
SequenceNumber: wrapperspb.Int64(0),
EventName: "PROJECT_CREATED",
EventTimeStamp: timestamppb.New(time.Now()),
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
Initiator: &auditV1.Principal{
Id: uuid.NewString(),
},
}
identifier := uuid.New()
routingIdentifier := &RoutingIdentifier{
Identifier: identifier,
Type: RoutingIdentifierTypeProject,
}
objectIdentifier := &auditV1.ObjectIdentifier{
Identifier: identifier.String(),
Type: auditV1.ObjectType_OBJECT_TYPE_PROJECT,
}
if customization != nil {
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
}
return auditEvent, routingIdentifier, objectIdentifier
}
func NewSystemAuditEvent(
customization *func(*auditV1.AuditEvent)) *auditV1.AuditEvent {
auditEvent := &auditV1.AuditEvent{
SequenceNumber: wrapperspb.Int64(0),
EventName: "SYSTEM_CHANGED",
EventTimeStamp: timestamppb.New(time.Now()),
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
Initiator: &auditV1.Principal{
Id: uuid.NewString(),
},
}
if customization != nil {
(*customization)(auditEvent)
}
return auditEvent
}