Skip to content

Commit b593232

Browse files
committed
Fix build fail
1 parent 0a2e17e commit b593232

4 files changed

Lines changed: 48 additions & 8 deletions

File tree

audit-service/handlers/data_exchange_event.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"net/http"
77
"strconv"
8+
"strings"
89
"time"
910

1011
"github.com/gov-dx-sandbox/audit-service/models"
@@ -41,6 +42,13 @@ func (h *DataExchangeEventHandler) CreateDataExchangeEvent(w http.ResponseWriter
4142
// Create event
4243
event, err := h.DataExchangeEventService.CreateDataExchangeEvent(r.Context(), &req)
4344
if err != nil {
45+
// Check for validation errors
46+
errMsg := err.Error()
47+
if strings.Contains(errMsg, "required") || strings.Contains(errMsg, "invalid") {
48+
http.Error(w, fmt.Sprintf("Invalid request: %v", err), http.StatusBadRequest)
49+
return
50+
}
51+
4452
http.Error(w, fmt.Sprintf("Failed to create event log: %v", err), http.StatusInternalServerError)
4553
return
4654
}

audit-service/main.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
"github.com/gov-dx-sandbox/audit-service/handlers"
1515
"github.com/gov-dx-sandbox/audit-service/middleware"
16+
"github.com/gov-dx-sandbox/audit-service/models"
1617
"github.com/gov-dx-sandbox/audit-service/services"
1718
)
1819

@@ -50,6 +51,20 @@ func main() {
5051
os.Exit(1)
5152
}
5253

54+
// Enable pgcrypto extension for UUID generation
55+
if err := gormDB.Exec("CREATE EXTENSION IF NOT EXISTS pgcrypto").Error; err != nil {
56+
slog.Error("Failed to enable pgcrypto extension", "error", err)
57+
os.Exit(1)
58+
}
59+
60+
// Auto-migrate database schema
61+
slog.Info("Running database migrations...")
62+
if err := gormDB.AutoMigrate(&models.DataExchangeEvent{}, &models.ManagementEvent{}); err != nil {
63+
slog.Error("Failed to migrate database", "error", err)
64+
os.Exit(1)
65+
}
66+
slog.Info("Database migrations completed successfully")
67+
5368
// Initialize services
5469
dataExchangeEventService := services.NewDataExchangeEventService(gormDB)
5570
managementEventService := services.NewManagementEventService(gormDB)

audit-service/services/data_exchange_event.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@ func (s *DataExchangeEventService) CreateDataExchangeEvent(ctx context.Context,
3535
return nil, fmt.Errorf("invalid status: %s. Must be success or failure", req.Status)
3636
}
3737

38+
// Validate required fields
39+
if req.ApplicationID == "" {
40+
return nil, fmt.Errorf("applicationId is required")
41+
}
42+
if req.SchemaID == "" {
43+
return nil, fmt.Errorf("schemaId is required")
44+
}
45+
if len(req.RequestedData) == 0 {
46+
return nil, fmt.Errorf("requestedData is required")
47+
}
48+
3849
// Create the event record
3950
event := &models.DataExchangeEvent{
4051
Timestamp: timestamp,

tests/integration/audit/audit_test.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ func TestAudit_FilterByStatus(t *testing.T) {
231231

232232
// Filter by success status
233233
params := url.Values{}
234-
params.Add("transaction_status", "SUCCESS")
234+
params.Add("status", "success")
235235
resp, err = http.Get(auditBaseURL + "/api/data-exchange-events?" + params.Encode())
236236
require.NoError(t, err)
237237
defer resp.Body.Close()
@@ -461,13 +461,19 @@ func TestAudit_DatabaseVerification(t *testing.T) {
461461
func TestAudit_CreateManagementEvent(t *testing.T) {
462462
timestamp := time.Now().UTC().Format(time.RFC3339)
463463
createReq := map[string]interface{}{
464-
"timestamp": timestamp,
465-
"eventType": "schema_created",
466-
"userId": "test-user-123",
467-
"resourceType": "schema",
468-
"resourceId": "test-schema-123",
469-
"action": "create",
470-
"details": map[string]interface{}{
464+
"timestamp": timestamp,
465+
"eventType": "CREATE",
466+
"status": "success",
467+
"actor": map[string]interface{}{
468+
"type": "USER",
469+
"id": "test-user-123",
470+
"role": "ADMIN",
471+
},
472+
"target": map[string]interface{}{
473+
"resource": "SCHEMAS",
474+
"resourceId": "test-schema-123",
475+
},
476+
"metadata": map[string]interface{}{
471477
"schemaName": "Test Schema",
472478
},
473479
}

0 commit comments

Comments
 (0)