Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

65 linhas
1.6 KiB

  1. package service
  2. import (
  3. "net/http"
  4. "testing"
  5. "time"
  6. "github.com/QuantumNous/new-api/common"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func preserveHTTPClientState(t *testing.T) {
  10. t.Helper()
  11. oldDefaultClient := httpClient
  12. oldTimeout := common.RelayTimeout
  13. proxyClientLock.Lock()
  14. oldProxyClients := proxyClients
  15. proxyClients = make(map[string]*http.Client)
  16. proxyClientLock.Unlock()
  17. t.Cleanup(func() {
  18. httpClient = oldDefaultClient
  19. common.RelayTimeout = oldTimeout
  20. proxyClientLock.Lock()
  21. proxyClients = oldProxyClients
  22. proxyClientLock.Unlock()
  23. })
  24. }
  25. func TestNewProxyHttpClientCachesHTTPProxyAndRejectsUnsupportedScheme(t *testing.T) {
  26. preserveHTTPClientState(t)
  27. common.RelayTimeout = 7
  28. first, err := NewProxyHttpClient("http://proxy.example:8080")
  29. require.NoError(t, err)
  30. second, err := NewProxyHttpClient("http://proxy.example:8080")
  31. require.NoError(t, err)
  32. require.Same(t, first, second)
  33. require.Equal(t, 7*time.Second, first.Timeout)
  34. _, err = NewProxyHttpClient("ftp://proxy.example:21")
  35. require.ErrorContains(t, err, "unsupported proxy scheme")
  36. }
  37. func TestNewProxyHttpClientReturnsInitializedDefaultClientForEmptyProxy(t *testing.T) {
  38. preserveHTTPClientState(t)
  39. defaultClient := &http.Client{}
  40. httpClient = defaultClient
  41. client, err := NewProxyHttpClient("")
  42. require.NoError(t, err)
  43. require.Same(t, defaultClient, client)
  44. }
  45. func TestInitHttpClientAppliesConfiguredTimeout(t *testing.T) {
  46. preserveHTTPClientState(t)
  47. common.RelayTimeout = 3
  48. InitHttpClient()
  49. require.NotNil(t, GetHttpClient())
  50. require.Equal(t, 3*time.Second, GetHttpClient().Timeout)
  51. require.NotNil(t, GetHttpClient().CheckRedirect)
  52. }