| 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) |
| } |