compose_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package convert
  2. import (
  3. "testing"
  4. "github.com/docker/docker/api/types"
  5. "github.com/docker/docker/api/types/network"
  6. composetypes "github.com/docker/docker/cli/compose/types"
  7. "github.com/docker/docker/pkg/testutil/assert"
  8. "github.com/docker/docker/pkg/testutil/tempfile"
  9. )
  10. func TestNamespaceScope(t *testing.T) {
  11. scoped := Namespace{name: "foo"}.Scope("bar")
  12. assert.Equal(t, scoped, "foo_bar")
  13. }
  14. func TestAddStackLabel(t *testing.T) {
  15. labels := map[string]string{
  16. "something": "labeled",
  17. }
  18. actual := AddStackLabel(Namespace{name: "foo"}, labels)
  19. expected := map[string]string{
  20. "something": "labeled",
  21. LabelNamespace: "foo",
  22. }
  23. assert.DeepEqual(t, actual, expected)
  24. }
  25. func TestNetworks(t *testing.T) {
  26. namespace := Namespace{name: "foo"}
  27. serviceNetworks := map[string]struct{}{
  28. "normal": {},
  29. "outside": {},
  30. "default": {},
  31. "attachablenet": {},
  32. }
  33. source := networkMap{
  34. "normal": composetypes.NetworkConfig{
  35. Driver: "overlay",
  36. DriverOpts: map[string]string{
  37. "opt": "value",
  38. },
  39. Ipam: composetypes.IPAMConfig{
  40. Driver: "driver",
  41. Config: []*composetypes.IPAMPool{
  42. {
  43. Subnet: "10.0.0.0",
  44. },
  45. },
  46. },
  47. Labels: map[string]string{
  48. "something": "labeled",
  49. },
  50. },
  51. "outside": composetypes.NetworkConfig{
  52. External: composetypes.External{
  53. External: true,
  54. Name: "special",
  55. },
  56. },
  57. "attachablenet": composetypes.NetworkConfig{
  58. Driver: "overlay",
  59. Attachable: true,
  60. },
  61. }
  62. expected := map[string]types.NetworkCreate{
  63. "default": {
  64. Labels: map[string]string{
  65. LabelNamespace: "foo",
  66. },
  67. },
  68. "normal": {
  69. Driver: "overlay",
  70. IPAM: &network.IPAM{
  71. Driver: "driver",
  72. Config: []network.IPAMConfig{
  73. {
  74. Subnet: "10.0.0.0",
  75. },
  76. },
  77. },
  78. Options: map[string]string{
  79. "opt": "value",
  80. },
  81. Labels: map[string]string{
  82. LabelNamespace: "foo",
  83. "something": "labeled",
  84. },
  85. },
  86. "attachablenet": {
  87. Driver: "overlay",
  88. Attachable: true,
  89. Labels: map[string]string{
  90. LabelNamespace: "foo",
  91. },
  92. },
  93. }
  94. networks, externals := Networks(namespace, source, serviceNetworks)
  95. assert.DeepEqual(t, networks, expected)
  96. assert.DeepEqual(t, externals, []string{"special"})
  97. }
  98. func TestSecrets(t *testing.T) {
  99. namespace := Namespace{name: "foo"}
  100. secretText := "this is the first secret"
  101. secretFile := tempfile.NewTempFile(t, "convert-secrets", secretText)
  102. defer secretFile.Remove()
  103. source := map[string]composetypes.SecretConfig{
  104. "one": {
  105. File: secretFile.Name(),
  106. Labels: map[string]string{"monster": "mash"},
  107. },
  108. "ext": {
  109. External: composetypes.External{
  110. External: true,
  111. },
  112. },
  113. }
  114. specs, err := Secrets(namespace, source)
  115. assert.NilError(t, err)
  116. assert.Equal(t, len(specs), 1)
  117. secret := specs[0]
  118. assert.Equal(t, secret.Name, "foo_one")
  119. assert.DeepEqual(t, secret.Labels, map[string]string{
  120. "monster": "mash",
  121. LabelNamespace: "foo",
  122. })
  123. assert.DeepEqual(t, secret.Data, []byte(secretText))
  124. }