85 lines
2.0 KiB
Go
85 lines
2.0 KiB
Go
package model
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestLogOtherScopesAndMerges(t *testing.T) {
|
|
var other LogOther
|
|
|
|
assert.True(t, other.SetPublic("request_path", "/v1/chat/completions"))
|
|
other.MergePublic(map[string]any{
|
|
"zero": 0,
|
|
})
|
|
assert.True(t, other.SetAdmin("use_channel", []string{"channel-a"}))
|
|
other.MergeAdmin(map[string]any{
|
|
"rejected": false,
|
|
})
|
|
assert.True(t, other.SetRoot("upstream_request_id", "upstream-private"))
|
|
other.MergeRoot(map[string]any{
|
|
"generation": 0,
|
|
})
|
|
assert.True(t, other.SetAudit("method", "POST"))
|
|
other.MergeAudit(map[string]any{
|
|
"success": false,
|
|
})
|
|
|
|
require.JSONEq(t, `{
|
|
"request_path": "/v1/chat/completions",
|
|
"zero": 0,
|
|
"admin_info": {
|
|
"use_channel": ["channel-a"],
|
|
"rejected": false
|
|
},
|
|
"root_info": {
|
|
"upstream_request_id": "upstream-private",
|
|
"generation": 0
|
|
},
|
|
"audit_info": {
|
|
"method": "POST",
|
|
"success": false
|
|
}
|
|
}`, other.JSONString())
|
|
}
|
|
|
|
func TestLogOtherRejectsSensitivePublicFields(t *testing.T) {
|
|
other := NewLogOther()
|
|
|
|
for _, key := range []string{
|
|
"admin_info",
|
|
"root_info",
|
|
"audit_info",
|
|
"channel_id",
|
|
"channel_name",
|
|
"channel_type",
|
|
"reject_reason",
|
|
} {
|
|
assert.False(t, other.SetPublic(key, "must-not-leak"), key)
|
|
}
|
|
other.MergePublic(map[string]any{
|
|
"request_path": "/v1/responses",
|
|
"channel_name": "still-must-not-leak",
|
|
"admin_info": map[string]any{"secret": true},
|
|
})
|
|
|
|
require.JSONEq(t, `{"request_path":"/v1/responses"}`, other.JSONString())
|
|
require.JSONEq(t, `{}`, NewLogOther().JSONString())
|
|
}
|
|
|
|
func TestLogOtherJSONStringDoesNotMutateReceiver(t *testing.T) {
|
|
other := NewLogOther()
|
|
require.True(t, other.SetPublic("request_path", "/v1/chat/completions"))
|
|
require.True(t, other.SetAdmin("rejected", false))
|
|
|
|
before := other.Snapshot()
|
|
first := other.JSONString()
|
|
after := other.Snapshot()
|
|
second := other.JSONString()
|
|
|
|
require.Equal(t, before, after)
|
|
require.Equal(t, first, second)
|
|
}
|