Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

65 wiersze
2.2 KiB

  1. package openai
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/common"
  5. "github.com/QuantumNous/new-api/dto"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func TestResponsesStreamEventErrorParsing(t *testing.T) {
  10. t.Run("standalone error event", func(t *testing.T) {
  11. data := `{"type":"error","error":{"type":"too_many_requests","code":"too_many_requests","message":"Too Many Requests","param":null}}`
  12. var streamResp dto.ResponsesStreamResponse
  13. err := common.UnmarshalJsonStr(data, &streamResp)
  14. require.NoError(t, err)
  15. assert.Equal(t, "error", streamResp.Type)
  16. assert.NotNil(t, streamResp.Error)
  17. oaiErr := dto.GetOpenAIError(streamResp.Error)
  18. require.NotNil(t, oaiErr)
  19. assert.Equal(t, "too_many_requests", oaiErr.Type)
  20. assert.Equal(t, "Too Many Requests", oaiErr.Message)
  21. })
  22. t.Run("response.failed event", func(t *testing.T) {
  23. data := `{"type":"response.failed","response":{"id":"test-id","status":"failed","error":{"type":"server_error","message":"Internal server error"}}}`
  24. var streamResp dto.ResponsesStreamResponse
  25. err := common.UnmarshalJsonStr(data, &streamResp)
  26. require.NoError(t, err)
  27. assert.Equal(t, "response.failed", streamResp.Type)
  28. require.NotNil(t, streamResp.Response)
  29. oaiErr := streamResp.Response.GetOpenAIError()
  30. require.NotNil(t, oaiErr)
  31. assert.Equal(t, "server_error", oaiErr.Type)
  32. })
  33. t.Run("response.error event with error in response object", func(t *testing.T) {
  34. data := `{"type":"response.error","response":{"id":"test-id","status":"failed","error":{"type":"invalid_request_error","message":"Invalid model"}}}`
  35. var streamResp dto.ResponsesStreamResponse
  36. err := common.UnmarshalJsonStr(data, &streamResp)
  37. require.NoError(t, err)
  38. assert.Equal(t, "response.error", streamResp.Type)
  39. oaiErr := streamResp.Response.GetOpenAIError()
  40. require.NotNil(t, oaiErr)
  41. assert.Equal(t, "invalid_request_error", oaiErr.Type)
  42. })
  43. t.Run("normal event has no error", func(t *testing.T) {
  44. data := `{"type":"response.output_text.delta","delta":"hello"}`
  45. var streamResp dto.ResponsesStreamResponse
  46. err := common.UnmarshalJsonStr(data, &streamResp)
  47. require.NoError(t, err)
  48. assert.Equal(t, "response.output_text.delta", streamResp.Type)
  49. assert.Nil(t, streamResp.Error)
  50. })
  51. }