openai_gateway_service_session_isolation_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package service
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestIsolateOpenAISessionID(t *testing.T) {
  8. t.Run("empty_raw_returns_empty", func(t *testing.T) {
  9. assert.Equal(t, "", isolateOpenAISessionID(1, ""))
  10. assert.Equal(t, "", isolateOpenAISessionID(1, " "))
  11. })
  12. t.Run("deterministic", func(t *testing.T) {
  13. a := isolateOpenAISessionID(42, "sess_abc123")
  14. b := isolateOpenAISessionID(42, "sess_abc123")
  15. assert.Equal(t, a, b)
  16. })
  17. t.Run("different_apiKeyID_different_result", func(t *testing.T) {
  18. a := isolateOpenAISessionID(1, "same_session")
  19. b := isolateOpenAISessionID(2, "same_session")
  20. require.NotEqual(t, a, b, "不同 API Key 使用相同 session_id 应产生不同隔离值")
  21. })
  22. t.Run("different_raw_different_result", func(t *testing.T) {
  23. a := isolateOpenAISessionID(1, "session_a")
  24. b := isolateOpenAISessionID(1, "session_b")
  25. require.NotEqual(t, a, b)
  26. })
  27. t.Run("format_is_16_hex_chars", func(t *testing.T) {
  28. result := isolateOpenAISessionID(99, "test_session")
  29. assert.Len(t, result, 16, "应为 16 字符的 hex 字符串")
  30. for _, ch := range result {
  31. assert.True(t, (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f'),
  32. "应仅包含 hex 字符: %c", ch)
  33. }
  34. })
  35. t.Run("zero_apiKeyID_still_works", func(t *testing.T) {
  36. result := isolateOpenAISessionID(0, "session")
  37. assert.NotEmpty(t, result)
  38. // apiKeyID=0 与 apiKeyID=1 应产生不同结果
  39. other := isolateOpenAISessionID(1, "session")
  40. assert.NotEqual(t, result, other)
  41. })
  42. }