| package daemon | |
| import ( | |
| "context" | |
| "testing" | |
| "github.com/docker/docker/api/types" | |
| "github.com/docker/docker/api/types/swarm" | |
| "gotest.tools/v3/assert" | |
| ) | |
| // SecretConstructor defines a swarm secret constructor | |
| type SecretConstructor func(*swarm.Secret) | |
| // CreateSecret creates a secret given the specified spec | |
| func (d *Daemon) CreateSecret(t testing.TB, secretSpec swarm.SecretSpec) string { | |
| t.Helper() | |
| cli := d.NewClientT(t) | |
| defer cli.Close() | |
| scr, err := cli.SecretCreate(context.Background(), secretSpec) | |
| assert.NilError(t, err) | |
| return scr.ID | |
| } | |
| // ListSecrets returns the list of the current swarm secrets | |
| func (d *Daemon) ListSecrets(t testing.TB) []swarm.Secret { | |
| t.Helper() | |
| cli := d.NewClientT(t) | |
| defer cli.Close() | |
| secrets, err := cli.SecretList(context.Background(), types.SecretListOptions{}) | |
| assert.NilError(t, err) | |
| return secrets | |
| } | |
| // GetSecret returns a swarm secret identified by the specified id | |
| func (d *Daemon) GetSecret(t testing.TB, id string) *swarm.Secret { | |
| t.Helper() | |
| cli := d.NewClientT(t) | |
| defer cli.Close() | |
| secret, _, err := cli.SecretInspectWithRaw(context.Background(), id) | |
| assert.NilError(t, err) | |
| return &secret | |
| } | |
| // DeleteSecret removes the swarm secret identified by the specified id | |
| func (d *Daemon) DeleteSecret(t testing.TB, id string) { | |
| t.Helper() | |
| cli := d.NewClientT(t) | |
| defer cli.Close() | |
| err := cli.SecretRemove(context.Background(), id) | |
| assert.NilError(t, err) | |
| } | |
| // UpdateSecret updates the swarm secret identified by the specified id | |
| // Currently, only label update is supported. | |
| func (d *Daemon) UpdateSecret(t testing.TB, id string, f ...SecretConstructor) { | |
| t.Helper() | |
| cli := d.NewClientT(t) | |
| defer cli.Close() | |
| secret := d.GetSecret(t, id) | |
| for _, fn := range f { | |
| fn(secret) | |
| } | |
| err := cli.SecretUpdate(context.Background(), secret.ID, secret.Version, secret.Spec) | |
| assert.NilError(t, err) | |
| } |