httputils_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package httputils
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "net/http"
  6. "net/http/httptest"
  7. "testing"
  8. "github.com/docker/docker/pkg/testutil"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/stretchr/testify/require"
  11. )
  12. func TestDownload(t *testing.T) {
  13. expected := "Hello, docker !"
  14. ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  15. fmt.Fprintf(w, expected)
  16. }))
  17. defer ts.Close()
  18. response, err := Download(ts.URL)
  19. if err != nil {
  20. t.Fatal(err)
  21. }
  22. actual, err := ioutil.ReadAll(response.Body)
  23. response.Body.Close()
  24. require.NoError(t, err)
  25. assert.Equal(t, expected, string(actual))
  26. }
  27. func TestDownload400Errors(t *testing.T) {
  28. expectedError := "Got HTTP status code >= 400: 403 Forbidden"
  29. ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  30. // 403
  31. http.Error(w, "something failed (forbidden)", http.StatusForbidden)
  32. }))
  33. defer ts.Close()
  34. // Expected status code = 403
  35. _, err := Download(ts.URL)
  36. assert.EqualError(t, err, expectedError)
  37. }
  38. func TestDownloadOtherErrors(t *testing.T) {
  39. _, err := Download("I'm not an url..")
  40. testutil.ErrorContains(t, err, "unsupported protocol scheme")
  41. }