Unescape query parameters in legacy message converter

This commit is contained in:
Christian Schaible 2024-10-02 10:31:07 +02:00
parent e9bd1575aa
commit abab0eb0a4
3 changed files with 13 additions and 2 deletions

View file

@ -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
}

View file

@ -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

View file

@ -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() {