openai_ws_ops_failure_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package service
  2. import (
  3. "net/http"
  4. "testing"
  5. "github.com/gin-gonic/gin"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestMarkOpenAIWSClientVisibleFailure_ResponseFailedNestedError(t *testing.T) {
  9. c, _ := gin.CreateTestContext(nil)
  10. markOpenAIWSClientVisibleFailure(c, "response.failed", []byte(`{"type":"response.failed","response":{"error":{"type":"invalid_request_error","code":"context_length_exceeded","message":"too long","status_code":400}}}`))
  11. got, ok := GetOpsStreamError(c)
  12. require.True(t, ok)
  13. require.True(t, got.CountTowardsSLA)
  14. require.Equal(t, http.StatusBadRequest, got.IntendedStatus)
  15. require.Equal(t, "invalid_request_error", got.ErrType)
  16. require.Equal(t, "context_length_exceeded", got.Code)
  17. require.Equal(t, "too long", got.Message)
  18. }
  19. func TestMarkOpenAIWSClientVisibleFailure_ErrorAndSuccessBoundary(t *testing.T) {
  20. t.Run("error", func(t *testing.T) {
  21. c, _ := gin.CreateTestContext(nil)
  22. markOpenAIWSClientVisibleFailure(c, "error", []byte(`{"type":"error","error":{"type":"rate_limit_error","code":"rate_limit_exceeded","message":"slow down"}}`))
  23. got, ok := GetOpsStreamError(c)
  24. require.True(t, ok)
  25. require.Equal(t, http.StatusTooManyRequests, got.IntendedStatus)
  26. })
  27. t.Run("completed does not mark", func(t *testing.T) {
  28. c, _ := gin.CreateTestContext(nil)
  29. markOpenAIWSClientVisibleFailure(c, "response.completed", []byte(`{"type":"response.completed"}`))
  30. _, ok := GetOpsStreamError(c)
  31. require.False(t, ok)
  32. })
  33. }
  34. func TestSetOpsUpstreamModelStoresOnlyTrimmedModelSlug(t *testing.T) {
  35. c, _ := gin.CreateTestContext(nil)
  36. SetOpsUpstreamModel(c, " gpt-5.6-sol ")
  37. value, ok := c.Get(OpsUpstreamModelKey)
  38. require.True(t, ok)
  39. require.Equal(t, "gpt-5.6-sol", value)
  40. SetOpsUpstreamModel(c, " ")
  41. value, ok = c.Get(OpsUpstreamModelKey)
  42. require.True(t, ok)
  43. require.Equal(t, "gpt-5.6-sol", value)
  44. ClearOpsUpstreamModel(c)
  45. value, ok = c.Get(OpsUpstreamModelKey)
  46. require.True(t, ok)
  47. require.Equal(t, "", value)
  48. }