github.com/LazyboyChen7/engine@v17.12.1-ce-rc2+incompatible/client/network_prune_test.go (about) 1 package client 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "io/ioutil" 8 "net/http" 9 "strings" 10 "testing" 11 12 "github.com/docker/docker/api/types" 13 "github.com/docker/docker/api/types/filters" 14 "github.com/stretchr/testify/assert" 15 "golang.org/x/net/context" 16 ) 17 18 func TestNetworksPruneError(t *testing.T) { 19 client := &Client{ 20 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 21 version: "1.25", 22 } 23 24 filters := filters.NewArgs() 25 26 _, err := client.NetworksPrune(context.Background(), filters) 27 if err == nil || err.Error() != "Error response from daemon: Server error" { 28 t.Fatalf("expected a Server Error, got %v", err) 29 } 30 } 31 32 func TestNetworksPrune(t *testing.T) { 33 expectedURL := "/v1.25/networks/prune" 34 35 danglingFilters := filters.NewArgs() 36 danglingFilters.Add("dangling", "true") 37 38 noDanglingFilters := filters.NewArgs() 39 noDanglingFilters.Add("dangling", "false") 40 41 labelFilters := filters.NewArgs() 42 labelFilters.Add("dangling", "true") 43 labelFilters.Add("label", "label1=foo") 44 labelFilters.Add("label", "label2!=bar") 45 46 listCases := []struct { 47 filters filters.Args 48 expectedQueryParams map[string]string 49 }{ 50 { 51 filters: filters.Args{}, 52 expectedQueryParams: map[string]string{ 53 "until": "", 54 "filter": "", 55 "filters": "", 56 }, 57 }, 58 { 59 filters: danglingFilters, 60 expectedQueryParams: map[string]string{ 61 "until": "", 62 "filter": "", 63 "filters": `{"dangling":{"true":true}}`, 64 }, 65 }, 66 { 67 filters: noDanglingFilters, 68 expectedQueryParams: map[string]string{ 69 "until": "", 70 "filter": "", 71 "filters": `{"dangling":{"false":true}}`, 72 }, 73 }, 74 { 75 filters: labelFilters, 76 expectedQueryParams: map[string]string{ 77 "until": "", 78 "filter": "", 79 "filters": `{"dangling":{"true":true},"label":{"label1=foo":true,"label2!=bar":true}}`, 80 }, 81 }, 82 } 83 for _, listCase := range listCases { 84 client := &Client{ 85 client: newMockClient(func(req *http.Request) (*http.Response, error) { 86 if !strings.HasPrefix(req.URL.Path, expectedURL) { 87 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 88 } 89 query := req.URL.Query() 90 for key, expected := range listCase.expectedQueryParams { 91 actual := query.Get(key) 92 assert.Equal(t, expected, actual) 93 } 94 content, err := json.Marshal(types.NetworksPruneReport{ 95 NetworksDeleted: []string{"network_id1", "network_id2"}, 96 }) 97 if err != nil { 98 return nil, err 99 } 100 return &http.Response{ 101 StatusCode: http.StatusOK, 102 Body: ioutil.NopCloser(bytes.NewReader(content)), 103 }, nil 104 }), 105 version: "1.25", 106 } 107 108 report, err := client.NetworksPrune(context.Background(), listCase.filters) 109 assert.NoError(t, err) 110 assert.Len(t, report.NetworksDeleted, 2) 111 } 112 }