12 "github.com/docker/docker/api/types"
13 "github.com/docker/docker/api/types/filters"
14 "github.com/docker/docker/api/types/swarm"
15 "github.com/stretchr/testify/assert"
16 "golang.org/x/net/context"
19 func TestSecretListUnsupported(t *testing.T) {
22 client: &http.Client{},
24 _, err := client.SecretList(context.Background(), types.SecretListOptions{})
25 assert.EqualError(t, err, `"secret list" requires API version 1.25, but the Docker daemon API version is 1.24`)
28 func TestSecretListError(t *testing.T) {
31 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")),
34 _, err := client.SecretList(context.Background(), types.SecretListOptions{})
35 if err == nil || err.Error() != "Error response from daemon: Server error" {
36 t.Fatalf("expected a Server Error, got %v", err)
40 func TestSecretList(t *testing.T) {
41 expectedURL := "/v1.25/secrets"
43 filters := filters.NewArgs()
44 filters.Add("label", "label1")
45 filters.Add("label", "label2")
47 listCases := []struct {
48 options types.SecretListOptions
49 expectedQueryParams map[string]string
52 options: types.SecretListOptions{},
53 expectedQueryParams: map[string]string{
58 options: types.SecretListOptions{
61 expectedQueryParams: map[string]string{
62 "filters": `{"label":{"label1":true,"label2":true}}`,
66 for _, listCase := range listCases {
69 client: newMockClient(func(req *http.Request) (*http.Response, error) {
70 if !strings.HasPrefix(req.URL.Path, expectedURL) {
71 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL)
73 query := req.URL.Query()
74 for key, expected := range listCase.expectedQueryParams {
75 actual := query.Get(key)
76 if actual != expected {
77 return nil, fmt.Errorf("%s not set in URL query properly. Expected '%s', got %s", key, expected, actual)
80 content, err := json.Marshal([]swarm.Secret{
91 return &http.Response{
92 StatusCode: http.StatusOK,
93 Body: ioutil.NopCloser(bytes.NewReader(content)),
98 secrets, err := client.SecretList(context.Background(), listCase.options)
102 if len(secrets) != 2 {
103 t.Fatalf("expected 2 secrets, got %v", secrets)