2018-04-11 10:10:17 +00:00
|
|
|
package daemon
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2019-09-23 12:23:01 +00:00
|
|
|
"testing"
|
2018-04-11 10:10:17 +00:00
|
|
|
|
|
|
|
"github.com/docker/docker/api/types"
|
|
|
|
"github.com/docker/docker/api/types/swarm"
|
2020-02-07 13:39:24 +00:00
|
|
|
"gotest.tools/v3/assert"
|
2018-04-11 10:10:17 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// SecretConstructor defines a swarm secret constructor
|
|
|
|
type SecretConstructor func(*swarm.Secret)
|
|
|
|
|
|
|
|
// CreateSecret creates a secret given the specified spec
|
2019-09-23 12:23:01 +00:00
|
|
|
func (d *Daemon) CreateSecret(t testing.TB, secretSpec swarm.SecretSpec) string {
|
|
|
|
t.Helper()
|
2018-04-11 10:10:17 +00:00
|
|
|
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
|
2019-09-23 12:23:01 +00:00
|
|
|
func (d *Daemon) ListSecrets(t testing.TB) []swarm.Secret {
|
|
|
|
t.Helper()
|
2018-04-11 10:10:17 +00:00
|
|
|
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
|
2019-09-23 12:23:01 +00:00
|
|
|
func (d *Daemon) GetSecret(t testing.TB, id string) *swarm.Secret {
|
|
|
|
t.Helper()
|
2018-04-11 10:10:17 +00:00
|
|
|
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
|
2019-09-23 12:23:01 +00:00
|
|
|
func (d *Daemon) DeleteSecret(t testing.TB, id string) {
|
|
|
|
t.Helper()
|
2018-04-11 10:10:17 +00:00
|
|
|
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.
|
2019-09-23 12:23:01 +00:00
|
|
|
func (d *Daemon) UpdateSecret(t testing.TB, id string, f ...SecretConstructor) {
|
|
|
|
t.Helper()
|
2018-04-11 10:10:17 +00:00
|
|
|
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)
|
|
|
|
}
|