error_test.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package service
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/types"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestResetStatusCode(t *testing.T) {
  8. t.Parallel()
  9. testCases := []struct {
  10. name string
  11. statusCode int
  12. statusCodeConfig string
  13. expectedCode int
  14. }{
  15. {
  16. name: "map string value",
  17. statusCode: 429,
  18. statusCodeConfig: `{"429":"503"}`,
  19. expectedCode: 503,
  20. },
  21. {
  22. name: "map int value",
  23. statusCode: 429,
  24. statusCodeConfig: `{"429":503}`,
  25. expectedCode: 503,
  26. },
  27. {
  28. name: "skip invalid string value",
  29. statusCode: 429,
  30. statusCodeConfig: `{"429":"bad-code"}`,
  31. expectedCode: 429,
  32. },
  33. {
  34. name: "skip status code 200",
  35. statusCode: 200,
  36. statusCodeConfig: `{"200":503}`,
  37. expectedCode: 200,
  38. },
  39. }
  40. for _, tc := range testCases {
  41. tc := tc
  42. t.Run(tc.name, func(t *testing.T) {
  43. t.Parallel()
  44. newAPIError := &types.NewAPIError{
  45. StatusCode: tc.statusCode,
  46. }
  47. ResetStatusCode(newAPIError, tc.statusCodeConfig)
  48. require.Equal(t, tc.expectedCode, newAPIError.StatusCode)
  49. })
  50. }
  51. }