Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

http_test.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package files_test
  2. import (
  3. "context"
  4. "io"
  5. "net/http"
  6. "net/http/httptest"
  7. "strings"
  8. "testing"
  9. "github.com/9seconds/mtg/v2/ipblocklist/files"
  10. "github.com/stretchr/testify/suite"
  11. )
  12. type HTTPTestSuite struct {
  13. suite.Suite
  14. httpClient *http.Client
  15. httpServer *httptest.Server
  16. ctx context.Context
  17. ctxCancel context.CancelFunc
  18. }
  19. func (suite *HTTPTestSuite) makeFile(path string) (files.File, error) {
  20. return files.NewHTTP(suite.httpClient, suite.httpServer.URL+"/"+path) //nolint: wrapcheck
  21. }
  22. func (suite *HTTPTestSuite) SetupSuite() {
  23. mux := http.NewServeMux()
  24. mux.Handle("/", http.FileServer(http.Dir("testdata")))
  25. suite.httpServer = httptest.NewServer(mux)
  26. suite.httpClient = suite.httpServer.Client()
  27. }
  28. func (suite *HTTPTestSuite) SetupTest() {
  29. suite.ctx, suite.ctxCancel = context.WithCancel(context.Background())
  30. }
  31. func (suite *HTTPTestSuite) TearDownTest() {
  32. suite.ctxCancel()
  33. suite.httpServer.CloseClientConnections()
  34. }
  35. func (suite *HTTPTestSuite) TearDownSuite() {
  36. suite.httpServer.Close()
  37. }
  38. func (suite *HTTPTestSuite) TestBadURL() {
  39. _, err := files.NewHTTP(suite.httpClient, "sdfsdf")
  40. suite.Error(err)
  41. }
  42. func (suite *HTTPTestSuite) TestBadSchema() {
  43. _, err := files.NewHTTP(suite.httpClient, "gopher://lala")
  44. suite.Error(err)
  45. }
  46. func (suite *HTTPTestSuite) TestNilHTTPClient() {
  47. _, err := files.NewHTTP(nil, "")
  48. suite.Error(err)
  49. }
  50. func (suite *HTTPTestSuite) TestAbsentFile() {
  51. file, err := suite.makeFile("absent")
  52. suite.NoError(err)
  53. _, err = file.Open(suite.ctx)
  54. suite.Error(err)
  55. }
  56. func (suite *HTTPTestSuite) TestOk() {
  57. file, err := suite.makeFile("readable")
  58. suite.NoError(err)
  59. readCloser, err := file.Open(suite.ctx)
  60. suite.NoError(err)
  61. defer readCloser.Close() //nolint: errcheck
  62. data, err := io.ReadAll(readCloser)
  63. suite.NoError(err)
  64. suite.Equal("Hooray!", strings.TrimSpace(string(data)))
  65. }
  66. func TestHTTP(t *testing.T) {
  67. t.Parallel()
  68. suite.Run(t, &HTTPTestSuite{})
  69. }