openai_gateway_endpoint_normalization_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package handler
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/Wei-Shaw/sub2api/internal/service"
  7. "github.com/gin-gonic/gin"
  8. "github.com/stretchr/testify/require"
  9. )
  10. // TestOpenAIUpstreamEndpoint_ViaGetUpstreamEndpoint verifies that the
  11. // unified GetUpstreamEndpoint helper produces the same results as the
  12. // former normalizedOpenAIUpstreamEndpoint for OpenAI platform requests.
  13. func TestOpenAIUpstreamEndpoint_ViaGetUpstreamEndpoint(t *testing.T) {
  14. gin.SetMode(gin.TestMode)
  15. tests := []struct {
  16. name string
  17. path string
  18. want string
  19. }{
  20. {
  21. name: "responses root maps to responses upstream",
  22. path: "/v1/responses",
  23. want: EndpointResponses,
  24. },
  25. {
  26. name: "responses compact keeps compact suffix",
  27. path: "/openai/v1/responses/compact",
  28. want: "/v1/responses/compact",
  29. },
  30. {
  31. name: "responses nested suffix preserved",
  32. path: "/openai/v1/responses/compact/detail",
  33. want: "/v1/responses/compact/detail",
  34. },
  35. {
  36. name: "non responses path uses platform fallback",
  37. path: "/v1/messages",
  38. want: EndpointResponses,
  39. },
  40. }
  41. for _, tt := range tests {
  42. t.Run(tt.name, func(t *testing.T) {
  43. rec := httptest.NewRecorder()
  44. c, _ := gin.CreateTestContext(rec)
  45. c.Request = httptest.NewRequest(http.MethodPost, tt.path, nil)
  46. got := GetUpstreamEndpoint(c, service.PlatformOpenAI)
  47. require.Equal(t, tt.want, got)
  48. })
  49. }
  50. }