secret.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package daemon
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/docker/docker/api/types"
  6. "github.com/docker/docker/api/types/swarm"
  7. "gotest.tools/v3/assert"
  8. )
  9. // SecretConstructor defines a swarm secret constructor
  10. type SecretConstructor func(*swarm.Secret)
  11. // CreateSecret creates a secret given the specified spec
  12. func (d *Daemon) CreateSecret(t testing.TB, secretSpec swarm.SecretSpec) string {
  13. t.Helper()
  14. cli := d.NewClientT(t)
  15. defer cli.Close()
  16. scr, err := cli.SecretCreate(context.Background(), secretSpec)
  17. assert.NilError(t, err)
  18. return scr.ID
  19. }
  20. // ListSecrets returns the list of the current swarm secrets
  21. func (d *Daemon) ListSecrets(t testing.TB) []swarm.Secret {
  22. t.Helper()
  23. cli := d.NewClientT(t)
  24. defer cli.Close()
  25. secrets, err := cli.SecretList(context.Background(), types.SecretListOptions{})
  26. assert.NilError(t, err)
  27. return secrets
  28. }
  29. // GetSecret returns a swarm secret identified by the specified id
  30. func (d *Daemon) GetSecret(t testing.TB, id string) *swarm.Secret {
  31. t.Helper()
  32. cli := d.NewClientT(t)
  33. defer cli.Close()
  34. secret, _, err := cli.SecretInspectWithRaw(context.Background(), id)
  35. assert.NilError(t, err)
  36. return &secret
  37. }
  38. // DeleteSecret removes the swarm secret identified by the specified id
  39. func (d *Daemon) DeleteSecret(t testing.TB, id string) {
  40. t.Helper()
  41. cli := d.NewClientT(t)
  42. defer cli.Close()
  43. err := cli.SecretRemove(context.Background(), id)
  44. assert.NilError(t, err)
  45. }
  46. // UpdateSecret updates the swarm secret identified by the specified id
  47. // Currently, only label update is supported.
  48. func (d *Daemon) UpdateSecret(t testing.TB, id string, f ...SecretConstructor) {
  49. t.Helper()
  50. cli := d.NewClientT(t)
  51. defer cli.Close()
  52. secret := d.GetSecret(t, id)
  53. for _, fn := range f {
  54. fn(secret)
  55. }
  56. err := cli.SecretUpdate(context.Background(), secret.ID, secret.Version, secret.Spec)
  57. assert.NilError(t, err)
  58. }