gemini_isstream_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package dto
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/gin-gonic/gin"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestGeminiChatRequest_IsStream(t *testing.T) {
  10. gin.SetMode(gin.TestMode)
  11. tests := []struct {
  12. name string
  13. path string
  14. query string
  15. expected bool
  16. }{
  17. {
  18. name: "streamGenerateContent without alt=sse",
  19. path: "/v1beta/models/gemini-2.0-flash:streamGenerateContent",
  20. query: "key=sk-xxx",
  21. expected: true,
  22. },
  23. {
  24. name: "streamGenerateContent with alt=sse",
  25. path: "/v1beta/models/gemini-2.0-flash:streamGenerateContent",
  26. query: "alt=sse&key=sk-xxx",
  27. expected: true,
  28. },
  29. {
  30. name: "generateContent without alt=sse",
  31. path: "/v1beta/models/gemini-2.0-flash:generateContent",
  32. query: "key=sk-xxx",
  33. expected: false,
  34. },
  35. {
  36. name: "generateContent with alt=sse",
  37. path: "/v1beta/models/gemini-2.0-flash:generateContent",
  38. query: "alt=sse",
  39. expected: true,
  40. },
  41. {
  42. name: "GenerateContent capitalized",
  43. path: "/v1beta/models/gemini-2.0-flash:GenerateContent",
  44. query: "key=sk-xxx",
  45. expected: false,
  46. },
  47. {
  48. name: "embedding path",
  49. path: "/v1beta/models/gemini-2.0-flash:embedContent",
  50. query: "",
  51. expected: false,
  52. },
  53. }
  54. for _, tt := range tests {
  55. t.Run(tt.name, func(t *testing.T) {
  56. w := httptest.NewRecorder()
  57. c, _ := gin.CreateTestContext(w)
  58. url := tt.path
  59. if tt.query != "" {
  60. url += "?" + tt.query
  61. }
  62. c.Request, _ = http.NewRequest("POST", url, nil)
  63. req := &GeminiChatRequest{}
  64. assert.Equal(t, tt.expected, req.IsStream(c))
  65. })
  66. }
  67. }