service_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package httpc
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestNamedService_Do(t *testing.T) {
  9. svr := httptest.NewServer(http.RedirectHandler("/foo", http.StatusMovedPermanently))
  10. defer svr.Close()
  11. req, err := http.NewRequest(http.MethodGet, svr.URL, nil)
  12. assert.Nil(t, err)
  13. service := NewService("foo")
  14. _, err = service.Do(req)
  15. // too many redirects
  16. assert.NotNil(t, err)
  17. }
  18. func TestNamedService_Get(t *testing.T) {
  19. svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  20. w.Header().Set("foo", r.Header.Get("foo"))
  21. }))
  22. defer svr.Close()
  23. service := NewService("foo", func(r *http.Request) *http.Request {
  24. r.Header.Set("foo", "bar")
  25. return r
  26. })
  27. resp, err := service.Get(svr.URL)
  28. assert.Nil(t, err)
  29. assert.Equal(t, http.StatusOK, resp.StatusCode)
  30. assert.Equal(t, "bar", resp.Header.Get("foo"))
  31. }
  32. func TestNamedService_Post(t *testing.T) {
  33. svr := httptest.NewServer(http.NotFoundHandler())
  34. defer svr.Close()
  35. service := NewService("foo")
  36. _, err := service.Post("tcp://bad request", "application/json", nil)
  37. assert.NotNil(t, err)
  38. resp, err := service.Post(svr.URL, "application/json", nil)
  39. assert.Nil(t, err)
  40. assert.Equal(t, http.StatusNotFound, resp.StatusCode)
  41. }