Skip to content

Commit f955d2e

Browse files
committed
Migrates several swarm secrets from integration-cli to api tests
This fix migrates several swarm secrets from integration-cli to api tests Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
1 parent 3499557 commit f955d2e

File tree

1 file changed

+109
-1
lines changed

1 file changed

+109
-1
lines changed

integration/secret/secret_test.go

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
swarmtypes "github.com/docker/docker/api/types/swarm"
1010
"github.com/docker/docker/client"
1111
"github.com/docker/docker/integration/internal/swarm"
12+
"github.com/docker/docker/internal/testutil"
1213
"github.com/gotestyourself/gotestyourself/skip"
1314
"github.com/stretchr/testify/assert"
1415
"github.com/stretchr/testify/require"
@@ -35,7 +36,7 @@ func TestSecretInspect(t *testing.T) {
3536

3637
secret, _, err = client.SecretInspectWithRaw(context.Background(), testName)
3738
require.NoError(t, err)
38-
assert.Equal(t, secret.ID, secretID)
39+
assert.Equal(t, secretID, secretID)
3940
}
4041

4142
func TestSecretList(t *testing.T) {
@@ -124,3 +125,110 @@ func createSecret(ctx context.Context, t *testing.T, client client.APIClient, na
124125
assert.NotEqual(t, secret.ID, "")
125126
return secret.ID
126127
}
128+
129+
func TestSecretsCreate(t *testing.T) {
130+
skip.If(t, testEnv.DaemonInfo.OSType != "linux")
131+
132+
defer setupTest(t)()
133+
d := swarm.NewSwarm(t, testEnv)
134+
defer d.Stop(t)
135+
client, err := client.NewClientWithOpts(client.WithHost((d.Sock())))
136+
require.NoError(t, err)
137+
138+
ctx := context.Background()
139+
140+
testName := "test_secret"
141+
createSecret(ctx, t, client, testName, []byte("TESTINGDATA"), nil)
142+
require.NoError(t, err)
143+
144+
// create an already existin secret, daemon should return a status code of 409
145+
_, err = client.SecretCreate(ctx, swarmtypes.SecretSpec{
146+
Annotations: swarmtypes.Annotations{
147+
Name: testName,
148+
},
149+
Data: []byte("TESTINGDATA"),
150+
})
151+
testutil.ErrorContains(t, err, "already exists")
152+
}
153+
154+
func TestSecretsDelete(t *testing.T) {
155+
skip.If(t, testEnv.DaemonInfo.OSType != "linux")
156+
157+
defer setupTest(t)()
158+
d := swarm.NewSwarm(t, testEnv)
159+
defer d.Stop(t)
160+
client, err := client.NewClientWithOpts(client.WithHost((d.Sock())))
161+
require.NoError(t, err)
162+
163+
ctx := context.Background()
164+
165+
testName := "test_secret"
166+
secretID := createSecret(ctx, t, client, testName, []byte("TESTINGDATA"), nil)
167+
require.NoError(t, err)
168+
169+
insp, _, err := client.SecretInspectWithRaw(ctx, secretID)
170+
require.NoError(t, err)
171+
assert.Equal(t, insp.ID, secretID)
172+
173+
err = client.SecretRemove(ctx, secretID)
174+
require.NoError(t, err)
175+
176+
_, _, err = client.SecretInspectWithRaw(ctx, secretID)
177+
testutil.ErrorContains(t, err, "No such secret")
178+
179+
err = client.SecretRemove(ctx, "non-existin")
180+
testutil.ErrorContains(t, err, "No such secret: non-existin")
181+
}
182+
183+
func TestSecretsUpdate(t *testing.T) {
184+
skip.If(t, testEnv.DaemonInfo.OSType != "linux")
185+
186+
defer setupTest(t)()
187+
d := swarm.NewSwarm(t, testEnv)
188+
defer d.Stop(t)
189+
client, err := client.NewClientWithOpts(client.WithHost((d.Sock())))
190+
require.NoError(t, err)
191+
192+
ctx := context.Background()
193+
194+
testName := "test_secret"
195+
secretID := createSecret(ctx, t, client, testName, []byte("TESTINGDATA"), nil)
196+
require.NoError(t, err)
197+
198+
insp, _, err := client.SecretInspectWithRaw(ctx, secretID)
199+
require.NoError(t, err)
200+
assert.Equal(t, insp.ID, secretID)
201+
202+
// test UpdateSecret with full ID
203+
insp.Spec.Labels = map[string]string{"test": "test1"}
204+
err = client.SecretUpdate(ctx, secretID, insp.Version, insp.Spec)
205+
require.NoError(t, err)
206+
207+
insp, _, err = client.SecretInspectWithRaw(ctx, secretID)
208+
require.NoError(t, err)
209+
assert.Equal(t, insp.Spec.Labels["test"], "test1")
210+
211+
// test UpdateSecret with full name
212+
insp.Spec.Labels = map[string]string{"test": "test2"}
213+
err = client.SecretUpdate(ctx, testName, insp.Version, insp.Spec)
214+
require.NoError(t, err)
215+
216+
insp, _, err = client.SecretInspectWithRaw(ctx, secretID)
217+
require.NoError(t, err)
218+
assert.Equal(t, insp.Spec.Labels["test"], "test2")
219+
220+
// test UpdateSecret with prefix ID
221+
insp.Spec.Labels = map[string]string{"test": "test3"}
222+
err = client.SecretUpdate(ctx, secretID[:1], insp.Version, insp.Spec)
223+
require.NoError(t, err)
224+
225+
insp, _, err = client.SecretInspectWithRaw(ctx, secretID)
226+
require.NoError(t, err)
227+
assert.Equal(t, insp.Spec.Labels["test"], "test3")
228+
229+
// test UpdateSecret in updating Data which is not supported in daemon
230+
// this test will produce an error in func UpdateSecret
231+
insp.Spec.Data = []byte("TESTINGDATA2")
232+
err = client.SecretUpdate(ctx, secretID, insp.Version, insp.Spec)
233+
testutil.ErrorContains(t, err, "only updates to Labels are allowed")
234+
}

0 commit comments

Comments
 (0)