opts_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package swarm
  2. import (
  3. "testing"
  4. "github.com/docker/docker/pkg/testutil/assert"
  5. "github.com/docker/engine-api/types/swarm"
  6. )
  7. func TestNodeAddrOptionSetHostAndPort(t *testing.T) {
  8. opt := NewNodeAddrOption("old:123")
  9. addr := "newhost:5555"
  10. assert.NilError(t, opt.Set(addr))
  11. assert.Equal(t, opt.Value(), addr)
  12. }
  13. func TestNodeAddrOptionSetHostOnly(t *testing.T) {
  14. opt := NewListenAddrOption()
  15. assert.NilError(t, opt.Set("newhost"))
  16. assert.Equal(t, opt.Value(), "newhost:2377")
  17. }
  18. func TestNodeAddrOptionSetHostOnlyIPv6(t *testing.T) {
  19. opt := NewListenAddrOption()
  20. assert.NilError(t, opt.Set("::1"))
  21. assert.Equal(t, opt.Value(), "[::1]:2377")
  22. }
  23. func TestNodeAddrOptionSetPortOnly(t *testing.T) {
  24. opt := NewListenAddrOption()
  25. assert.NilError(t, opt.Set(":4545"))
  26. assert.Equal(t, opt.Value(), "0.0.0.0:4545")
  27. }
  28. func TestNodeAddrOptionSetInvalidFormat(t *testing.T) {
  29. opt := NewListenAddrOption()
  30. assert.Error(t, opt.Set("http://localhost:4545"), "Invalid")
  31. }
  32. func TestAutoAcceptOptionSetWorker(t *testing.T) {
  33. opt := NewAutoAcceptOption()
  34. assert.NilError(t, opt.Set("worker"))
  35. assert.Equal(t, opt.values[WORKER], true)
  36. }
  37. func TestAutoAcceptOptionSetManager(t *testing.T) {
  38. opt := NewAutoAcceptOption()
  39. assert.NilError(t, opt.Set("manager"))
  40. assert.Equal(t, opt.values[MANAGER], true)
  41. }
  42. func TestAutoAcceptOptionSetInvalid(t *testing.T) {
  43. opt := NewAutoAcceptOption()
  44. assert.Error(t, opt.Set("bogus"), "must be one of")
  45. }
  46. func TestAutoAcceptOptionSetNone(t *testing.T) {
  47. opt := NewAutoAcceptOption()
  48. assert.NilError(t, opt.Set("none"))
  49. assert.Equal(t, opt.values[MANAGER], false)
  50. assert.Equal(t, opt.values[WORKER], false)
  51. }
  52. func TestAutoAcceptOptionSetConflict(t *testing.T) {
  53. opt := NewAutoAcceptOption()
  54. assert.NilError(t, opt.Set("manager"))
  55. assert.Error(t, opt.Set("none"), "value NONE is incompatible with MANAGER")
  56. opt = NewAutoAcceptOption()
  57. assert.NilError(t, opt.Set("none"))
  58. assert.Error(t, opt.Set("worker"), "value NONE is incompatible with WORKER")
  59. }
  60. func TestAutoAcceptOptionPoliciesDefault(t *testing.T) {
  61. opt := NewAutoAcceptOption()
  62. secret := "thesecret"
  63. policies := opt.Policies(&secret)
  64. assert.Equal(t, len(policies), 2)
  65. assert.Equal(t, policies[0], swarm.Policy{
  66. Role: WORKER,
  67. Autoaccept: true,
  68. Secret: &secret,
  69. })
  70. assert.Equal(t, policies[1], swarm.Policy{
  71. Role: MANAGER,
  72. Autoaccept: false,
  73. Secret: &secret,
  74. })
  75. }
  76. func TestAutoAcceptOptionPoliciesWithManager(t *testing.T) {
  77. opt := NewAutoAcceptOption()
  78. secret := "thesecret"
  79. assert.NilError(t, opt.Set("manager"))
  80. policies := opt.Policies(&secret)
  81. assert.Equal(t, len(policies), 2)
  82. assert.Equal(t, policies[0], swarm.Policy{
  83. Role: WORKER,
  84. Autoaccept: false,
  85. Secret: &secret,
  86. })
  87. assert.Equal(t, policies[1], swarm.Policy{
  88. Role: MANAGER,
  89. Autoaccept: true,
  90. Secret: &secret,
  91. })
  92. }
  93. func TestAutoAcceptOptionString(t *testing.T) {
  94. opt := NewAutoAcceptOption()
  95. assert.NilError(t, opt.Set("manager"))
  96. assert.NilError(t, opt.Set("worker"))
  97. repr := opt.String()
  98. assert.Contains(t, repr, "worker=true")
  99. assert.Contains(t, repr, "manager=true")
  100. }