mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-04-18 22:04:45 +08:00
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
"github.com/stretchr/testify/require"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestIsolateOpenAISessionID(t *testing.T) {
|
||
|
|
t.Run("empty_raw_returns_empty", func(t *testing.T) {
|
||
|
|
assert.Equal(t, "", isolateOpenAISessionID(1, ""))
|
||
|
|
assert.Equal(t, "", isolateOpenAISessionID(1, " "))
|
||
|
|
})
|
||
|
|
|
||
|
|
t.Run("deterministic", func(t *testing.T) {
|
||
|
|
a := isolateOpenAISessionID(42, "sess_abc123")
|
||
|
|
b := isolateOpenAISessionID(42, "sess_abc123")
|
||
|
|
assert.Equal(t, a, b)
|
||
|
|
})
|
||
|
|
|
||
|
|
t.Run("different_apiKeyID_different_result", func(t *testing.T) {
|
||
|
|
a := isolateOpenAISessionID(1, "same_session")
|
||
|
|
b := isolateOpenAISessionID(2, "same_session")
|
||
|
|
require.NotEqual(t, a, b, "不同 API Key 使用相同 session_id 应产生不同隔离值")
|
||
|
|
})
|
||
|
|
|
||
|
|
t.Run("different_raw_different_result", func(t *testing.T) {
|
||
|
|
a := isolateOpenAISessionID(1, "session_a")
|
||
|
|
b := isolateOpenAISessionID(1, "session_b")
|
||
|
|
require.NotEqual(t, a, b)
|
||
|
|
})
|
||
|
|
|
||
|
|
t.Run("format_is_16_hex_chars", func(t *testing.T) {
|
||
|
|
result := isolateOpenAISessionID(99, "test_session")
|
||
|
|
assert.Len(t, result, 16, "应为 16 字符的 hex 字符串")
|
||
|
|
for _, ch := range result {
|
||
|
|
assert.True(t, (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f'),
|
||
|
|
"应仅包含 hex 字符: %c", ch)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
t.Run("zero_apiKeyID_still_works", func(t *testing.T) {
|
||
|
|
result := isolateOpenAISessionID(0, "session")
|
||
|
|
assert.NotEmpty(t, result)
|
||
|
|
// apiKeyID=0 与 apiKeyID=1 应产生不同结果
|
||
|
|
other := isolateOpenAISessionID(1, "session")
|
||
|
|
assert.NotEqual(t, result, other)
|
||
|
|
})
|
||
|
|
}
|