From 62e1fa1243ba2167ddb23034a7bf5a221e9e7475 Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Fri, 9 Feb 2018 00:45:08 +0000 Subject: [PATCH 1/2] Remove docker_cli_secret_ls_test.go from integration-cli Signed-off-by: Yong Tang Upstream-commit: 42465784dcc61aa69b8fcefe4669d20422471fea Component: engine --- .../docker_cli_secret_ls_test.go | 125 ------------------ 1 file changed, 125 deletions(-) delete mode 100644 components/engine/integration-cli/docker_cli_secret_ls_test.go diff --git a/components/engine/integration-cli/docker_cli_secret_ls_test.go b/components/engine/integration-cli/docker_cli_secret_ls_test.go deleted file mode 100644 index f3201f7d7d..0000000000 --- a/components/engine/integration-cli/docker_cli_secret_ls_test.go +++ /dev/null @@ -1,125 +0,0 @@ -// +build !windows - -package main - -import ( - "strings" - - "github.com/docker/docker/api/types/swarm" - "github.com/docker/docker/integration-cli/checker" - "github.com/go-check/check" -) - -func (s *DockerSwarmSuite) TestSecretList(c *check.C) { - d := s.AddDaemon(c, true, true) - - testName0 := "test0" - testName1 := "test1" - - // create secret test0 - id0 := d.CreateSecret(c, swarm.SecretSpec{ - Annotations: swarm.Annotations{ - Name: testName0, - Labels: map[string]string{"type": "test"}, - }, - Data: []byte("TESTINGDATA0"), - }) - c.Assert(id0, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id0)) - - secret := d.GetSecret(c, id0) - c.Assert(secret.Spec.Name, checker.Equals, testName0) - - // create secret test1 - id1 := d.CreateSecret(c, swarm.SecretSpec{ - Annotations: swarm.Annotations{ - Name: testName1, - Labels: map[string]string{"type": "production"}, - }, - Data: []byte("TESTINGDATA1"), - }) - c.Assert(id1, checker.Not(checker.Equals), "", check.Commentf("secrets: %s", id1)) - - secret = d.GetSecret(c, id1) - c.Assert(secret.Spec.Name, checker.Equals, testName1) - - // test by command `docker secret ls` - out, err := d.Cmd("secret", "ls") - c.Assert(err, checker.IsNil, check.Commentf(out)) - c.Assert(strings.TrimSpace(out), checker.Contains, testName0) - c.Assert(strings.TrimSpace(out), checker.Contains, testName1) - - // test filter by name `docker secret ls --filter name=xxx` - args := []string{ - "secret", - "ls", - "--filter", - "name=test0", - } - out, err = d.Cmd(args...) - c.Assert(err, checker.IsNil, check.Commentf(out)) - - c.Assert(strings.TrimSpace(out), checker.Contains, testName0) - c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), testName1) - - // test filter by id `docker secret ls --filter id=xxx` - args = []string{ - "secret", - "ls", - "--filter", - "id=" + id1, - } - out, err = d.Cmd(args...) - c.Assert(err, checker.IsNil, check.Commentf(out)) - - c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), testName0) - c.Assert(strings.TrimSpace(out), checker.Contains, testName1) - - // test filter by label `docker secret ls --filter label=xxx` - args = []string{ - "secret", - "ls", - "--filter", - "label=type", - } - out, err = d.Cmd(args...) - c.Assert(err, checker.IsNil, check.Commentf(out)) - - c.Assert(strings.TrimSpace(out), checker.Contains, testName0) - c.Assert(strings.TrimSpace(out), checker.Contains, testName1) - - args = []string{ - "secret", - "ls", - "--filter", - "label=type=test", - } - out, err = d.Cmd(args...) - c.Assert(err, checker.IsNil, check.Commentf(out)) - - c.Assert(strings.TrimSpace(out), checker.Contains, testName0) - c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), testName1) - - args = []string{ - "secret", - "ls", - "--filter", - "label=type=production", - } - out, err = d.Cmd(args...) - c.Assert(err, checker.IsNil, check.Commentf(out)) - - c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), testName0) - c.Assert(strings.TrimSpace(out), checker.Contains, testName1) - - // test invalid filter `docker secret ls --filter noexisttype=xxx` - args = []string{ - "secret", - "ls", - "--filter", - "noexisttype=test0", - } - out, err = d.Cmd(args...) - c.Assert(err, checker.NotNil, check.Commentf(out)) - - c.Assert(strings.TrimSpace(out), checker.Contains, "Error response from daemon: Invalid filter 'noexisttype'") -} From 5072bc0df842973b32cf80035edb8bf0fc9b3f59 Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Fri, 9 Feb 2018 00:45:22 +0000 Subject: [PATCH 2/2] Migrate secret list tests from integration-cli to api tests This fix migrates secret list tests from integration-cli to api tests Signed-off-by: Yong Tang Upstream-commit: 9349c035831e09057bd039b8f677fa19d3354f73 Component: engine --- .../engine/integration/secret/secret_test.go | 103 ++++++++++++++++-- 1 file changed, 93 insertions(+), 10 deletions(-) diff --git a/components/engine/integration/secret/secret_test.go b/components/engine/integration/secret/secret_test.go index 922fd33028..566598db97 100644 --- a/components/engine/integration/secret/secret_test.go +++ b/components/engine/integration/secret/secret_test.go @@ -1,8 +1,11 @@ package secret import ( + "sort" "testing" + "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/filters" swarmtypes "github.com/docker/docker/api/types/swarm" "github.com/docker/docker/client" "github.com/docker/docker/integration/util/swarm" @@ -24,20 +27,100 @@ func TestSecretInspect(t *testing.T) { ctx := context.Background() testName := "test_secret" - secretResp, err := client.SecretCreate(ctx, swarmtypes.SecretSpec{ - Annotations: swarmtypes.Annotations{ - Name: testName, - }, - Data: []byte("TESTINGDATA"), - }) - require.NoError(t, err) - assert.NotEqual(t, secretResp.ID, "") + secretID := createSecret(ctx, t, client, testName, []byte("TESTINGDATA"), nil) - secret, _, err := client.SecretInspectWithRaw(context.Background(), secretResp.ID) + secret, _, err := client.SecretInspectWithRaw(context.Background(), secretID) require.NoError(t, err) assert.Equal(t, secret.Spec.Name, testName) secret, _, err = client.SecretInspectWithRaw(context.Background(), testName) require.NoError(t, err) - assert.Equal(t, secret.ID, secretResp.ID) + assert.Equal(t, secret.ID, secretID) +} + +func TestSecretList(t *testing.T) { + skip.If(t, testEnv.DaemonInfo.OSType != "linux") + + defer setupTest(t)() + d := swarm.NewSwarm(t, testEnv) + defer d.Stop(t) + client, err := client.NewClientWithOpts(client.WithHost((d.Sock()))) + require.NoError(t, err) + + ctx := context.Background() + + testName0 := "test0" + testName1 := "test1" + testNames := []string{testName0, testName1} + sort.Strings(testNames) + + // create secret test0 + createSecret(ctx, t, client, testName0, []byte("TESTINGDATA0"), map[string]string{"type": "test"}) + + // create secret test1 + secret1ID := createSecret(ctx, t, client, testName1, []byte("TESTINGDATA1"), map[string]string{"type": "production"}) + + names := func(entries []swarmtypes.Secret) []string { + values := []string{} + for _, entry := range entries { + values = append(values, entry.Spec.Name) + } + sort.Strings(values) + return values + } + + // test by `secret ls` + entries, err := client.SecretList(ctx, types.SecretListOptions{}) + require.NoError(t, err) + assert.Equal(t, names(entries), testNames) + + testCases := []struct { + filters filters.Args + expected []string + }{ + // test filter by name `secret ls --filter name=xxx` + { + filters: filters.NewArgs(filters.Arg("name", testName0)), + expected: []string{testName0}, + }, + // test filter by id `secret ls --filter id=xxx` + { + filters: filters.NewArgs(filters.Arg("id", secret1ID)), + expected: []string{testName1}, + }, + // test filter by label `secret ls --filter label=xxx` + { + filters: filters.NewArgs(filters.Arg("label", "type")), + expected: testNames, + }, + { + filters: filters.NewArgs(filters.Arg("label", "type=test")), + expected: []string{testName0}, + }, + { + filters: filters.NewArgs(filters.Arg("label", "type=production")), + expected: []string{testName1}, + }, + } + for _, tc := range testCases { + entries, err = client.SecretList(ctx, types.SecretListOptions{ + Filters: tc.filters, + }) + require.NoError(t, err) + assert.Equal(t, names(entries), tc.expected) + + } +} + +func createSecret(ctx context.Context, t *testing.T, client client.APIClient, name string, data []byte, labels map[string]string) string { + secret, err := client.SecretCreate(ctx, swarmtypes.SecretSpec{ + Annotations: swarmtypes.Annotations{ + Name: name, + Labels: labels, + }, + Data: data, + }) + require.NoError(t, err) + assert.NotEqual(t, secret.ID, "") + return secret.ID }