service_remove_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package client
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io/ioutil"
  6. "net/http"
  7. "strings"
  8. "testing"
  9. "github.com/stretchr/testify/assert"
  10. "golang.org/x/net/context"
  11. )
  12. func TestServiceRemoveError(t *testing.T) {
  13. client := &Client{
  14. client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")),
  15. }
  16. err := client.ServiceRemove(context.Background(), "service_id")
  17. assert.EqualError(t, err, "Error response from daemon: Server error")
  18. }
  19. func TestServiceRemoveNotFoundError(t *testing.T) {
  20. client := &Client{
  21. client: newMockClient(errorMock(http.StatusNotFound, "missing")),
  22. }
  23. err := client.ServiceRemove(context.Background(), "service_id")
  24. assert.EqualError(t, err, "Error: No such service: service_id")
  25. assert.True(t, IsErrNotFound(err))
  26. }
  27. func TestServiceRemove(t *testing.T) {
  28. expectedURL := "/services/service_id"
  29. client := &Client{
  30. client: newMockClient(func(req *http.Request) (*http.Response, error) {
  31. if !strings.HasPrefix(req.URL.Path, expectedURL) {
  32. return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL)
  33. }
  34. if req.Method != "DELETE" {
  35. return nil, fmt.Errorf("expected DELETE method, got %s", req.Method)
  36. }
  37. return &http.Response{
  38. StatusCode: http.StatusOK,
  39. Body: ioutil.NopCloser(bytes.NewReader([]byte("body"))),
  40. }, nil
  41. }),
  42. }
  43. err := client.ServiceRemove(context.Background(), "service_id")
  44. if err != nil {
  45. t.Fatal(err)
  46. }
  47. }