diff --git a/audit/api/api_legacy_converter.go b/audit/api/api_legacy_converter.go index c639460..5fc1a5c 100644 --- a/audit/api/api_legacy_converter.go +++ b/audit/api/api_legacy_converter.go @@ -64,9 +64,13 @@ func convertAndSerializeIntoLegacyFormat( *event.ProtoPayload.RequestMetadata.RequestAttributes.Query != "" { parameters = map[string]interface{}{} + unescapedQuery, err := url.QueryUnescape(*event.ProtoPayload.RequestMetadata.RequestAttributes.Query) + if err != nil { + return nil, err + } parsedUrl, err := url.Parse(fmt.Sprintf("%s?%s", event.ProtoPayload.RequestMetadata.RequestAttributes.Path, - *event.ProtoPayload.RequestMetadata.RequestAttributes.Query)) + unescapedQuery)) if err != nil { return nil, err } diff --git a/audit/api/api_legacy_dynamic_test.go b/audit/api/api_legacy_dynamic_test.go index 553ea0e..b694b7f 100644 --- a/audit/api/api_legacy_dynamic_test.go +++ b/audit/api/api_legacy_dynamic_test.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "log/slog" + "net/url" "os" "testing" "time" @@ -355,6 +356,8 @@ func TestDynamicLegacyAuditApi(t *testing.T) { // Instantiate test data event, objectIdentifier := NewOrganizationAuditEvent(nil) + escapedQuery := url.QueryEscape("param=value") + event.ProtoPayload.RequestMetadata.RequestAttributes.Query = &escapedQuery // Log the event to solace visibility := auditV1.Visibility_VISIBILITY_PUBLIC diff --git a/audit/api/api_legacy_test.go b/audit/api/api_legacy_test.go index dfa4283..6f046e7 100644 --- a/audit/api/api_legacy_test.go +++ b/audit/api/api_legacy_test.go @@ -359,6 +359,8 @@ func TestLegacyAuditApi(t *testing.T) { // Instantiate test data event, objectIdentifier := NewOrganizationAuditEvent(nil) + escapedQuery := url.QueryEscape("param=value") + event.ProtoPayload.RequestMetadata.RequestAttributes.Query = &escapedQuery // Log the event to solace visibility := auditV1.Visibility_VISIBILITY_PUBLIC @@ -462,9 +464,11 @@ func validateSentMessageWithDetails( *event.ProtoPayload.RequestMetadata.RequestAttributes.Query != "" { parameters = map[string]interface{}{} + unescapedQuery, err := url.QueryUnescape(*event.ProtoPayload.RequestMetadata.RequestAttributes.Query) + assert.NoError(t, err) parsedUrl, err := url.Parse(fmt.Sprintf("%s?%s", event.ProtoPayload.RequestMetadata.RequestAttributes.Path, - *event.ProtoPayload.RequestMetadata.RequestAttributes.Query)) + unescapedQuery)) assert.NoError(t, err) for k, v := range parsedUrl.Query() {