61 lines
2.0 KiB
Go
61 lines
2.0 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPrepareOpsRequestBodyForQueue_EmptyBody(t *testing.T) {
|
|
requestBodyJSON, truncated, requestBodyBytes := PrepareOpsRequestBodyForQueue(nil)
|
|
require.Nil(t, requestBodyJSON)
|
|
require.False(t, truncated)
|
|
require.Nil(t, requestBodyBytes)
|
|
}
|
|
|
|
func TestPrepareOpsRequestBodyForQueue_InvalidJSON(t *testing.T) {
|
|
raw := []byte("{invalid-json")
|
|
requestBodyJSON, truncated, requestBodyBytes := PrepareOpsRequestBodyForQueue(raw)
|
|
require.Nil(t, requestBodyJSON)
|
|
require.False(t, truncated)
|
|
require.NotNil(t, requestBodyBytes)
|
|
require.Equal(t, len(raw), *requestBodyBytes)
|
|
}
|
|
|
|
func TestPrepareOpsRequestBodyForQueue_RedactSensitiveFields(t *testing.T) {
|
|
raw := []byte(`{
|
|
"model":"claude-3-5-sonnet-20241022",
|
|
"api_key":"sk-test-123",
|
|
"headers":{"authorization":"Bearer secret-token"},
|
|
"messages":[{"role":"user","content":"hello"}]
|
|
}`)
|
|
|
|
requestBodyJSON, truncated, requestBodyBytes := PrepareOpsRequestBodyForQueue(raw)
|
|
require.NotNil(t, requestBodyJSON)
|
|
require.NotNil(t, requestBodyBytes)
|
|
require.False(t, truncated)
|
|
require.Equal(t, len(raw), *requestBodyBytes)
|
|
|
|
var body map[string]any
|
|
require.NoError(t, json.Unmarshal([]byte(*requestBodyJSON), &body))
|
|
require.Equal(t, "[REDACTED]", body["api_key"])
|
|
headers, ok := body["headers"].(map[string]any)
|
|
require.True(t, ok)
|
|
require.Equal(t, "[REDACTED]", headers["authorization"])
|
|
}
|
|
|
|
func TestPrepareOpsRequestBodyForQueue_LargeBodyTruncated(t *testing.T) {
|
|
largeMsg := strings.Repeat("x", opsMaxStoredRequestBodyBytes*2)
|
|
raw := []byte(`{"model":"claude-3-5-sonnet-20241022","messages":[{"role":"user","content":"` + largeMsg + `"}]}`)
|
|
|
|
requestBodyJSON, truncated, requestBodyBytes := PrepareOpsRequestBodyForQueue(raw)
|
|
require.NotNil(t, requestBodyJSON)
|
|
require.NotNil(t, requestBodyBytes)
|
|
require.True(t, truncated)
|
|
require.Equal(t, len(raw), *requestBodyBytes)
|
|
require.LessOrEqual(t, len(*requestBodyJSON), opsMaxStoredRequestBodyBytes)
|
|
require.Contains(t, *requestBodyJSON, "request_body_truncated")
|
|
}
|