/acceptance/openstack/keymanager/v1/containers_test.go

https://github.com/gophercloud/gophercloud · Go · 214 lines · 169 code · 44 blank · 1 comment · 20 complexity · ce26556d811f632e6be69e0c29a56e40 MD5 · raw file

  1. // +build acceptance keymanager containers
  2. package v1
  3. import (
  4. "testing"
  5. "github.com/gophercloud/gophercloud/acceptance/clients"
  6. "github.com/gophercloud/gophercloud/acceptance/tools"
  7. "github.com/gophercloud/gophercloud/openstack/keymanager/v1/containers"
  8. "github.com/gophercloud/gophercloud/openstack/keymanager/v1/secrets"
  9. th "github.com/gophercloud/gophercloud/testhelper"
  10. )
  11. func TestGenericContainersCRUD(t *testing.T) {
  12. clients.SkipRelease(t, "stable/mitaka")
  13. clients.SkipRelease(t, "stable/newton")
  14. clients.SkipRelease(t, "stable/queens")
  15. client, err := clients.NewKeyManagerV1Client()
  16. th.AssertNoErr(t, err)
  17. payload := tools.RandomString("SUPERSECRET-", 8)
  18. secret, err := CreateSecretWithPayload(t, client, payload)
  19. th.AssertNoErr(t, err)
  20. secretID, err := ParseID(secret.SecretRef)
  21. th.AssertNoErr(t, err)
  22. defer DeleteSecret(t, client, secretID)
  23. payload1 := tools.RandomString("SUPERSECRET-", 8)
  24. secret1, err := CreateSecretWithPayload(t, client, payload1)
  25. th.AssertNoErr(t, err)
  26. secretID1, err := ParseID(secret1.SecretRef)
  27. th.AssertNoErr(t, err)
  28. defer DeleteSecret(t, client, secretID1)
  29. container, err := CreateGenericContainer(t, client, secret)
  30. th.AssertNoErr(t, err)
  31. containerID, err := ParseID(container.ContainerRef)
  32. th.AssertNoErr(t, err)
  33. defer DeleteContainer(t, client, containerID)
  34. err = ReplaceGenericContainerSecretRef(t, client, container, secret, secret1)
  35. th.AssertNoErr(t, err)
  36. allPages, err := containers.List(client, nil).AllPages()
  37. th.AssertNoErr(t, err)
  38. allContainers, err := containers.ExtractContainers(allPages)
  39. th.AssertNoErr(t, err)
  40. var found bool
  41. for _, v := range allContainers {
  42. if v.ContainerRef == container.ContainerRef {
  43. found = true
  44. }
  45. }
  46. th.AssertEquals(t, found, true)
  47. }
  48. func TestCertificateContainer(t *testing.T) {
  49. clients.SkipRelease(t, "stable/mitaka")
  50. clients.SkipRelease(t, "stable/newton")
  51. clients.SkipRelease(t, "stable/queens")
  52. client, err := clients.NewKeyManagerV1Client()
  53. th.AssertNoErr(t, err)
  54. pass := tools.RandomString("", 16)
  55. priv, cert, err := CreateCertificate(t, pass)
  56. th.AssertNoErr(t, err)
  57. private, err := CreatePrivateSecret(t, client, priv)
  58. th.AssertNoErr(t, err)
  59. secretID, err := ParseID(private.SecretRef)
  60. th.AssertNoErr(t, err)
  61. defer DeleteSecret(t, client, secretID)
  62. payload, err := secrets.GetPayload(client, secretID, nil).Extract()
  63. th.AssertNoErr(t, err)
  64. t.Logf("Private Payload: %s", string(payload))
  65. certificate, err := CreateCertificateSecret(t, client, cert)
  66. th.AssertNoErr(t, err)
  67. secretID, err = ParseID(certificate.SecretRef)
  68. th.AssertNoErr(t, err)
  69. defer DeleteSecret(t, client, secretID)
  70. payload, err = secrets.GetPayload(client, secretID, nil).Extract()
  71. th.AssertNoErr(t, err)
  72. t.Logf("Certificate Payload: %s", string(payload))
  73. passphrase, err := CreatePassphraseSecret(t, client, pass)
  74. th.AssertNoErr(t, err)
  75. secretID, err = ParseID(passphrase.SecretRef)
  76. th.AssertNoErr(t, err)
  77. defer DeleteSecret(t, client, secretID)
  78. payload, err = secrets.GetPayload(client, secretID, nil).Extract()
  79. th.AssertNoErr(t, err)
  80. t.Logf("Passphrase Payload: %s", string(payload))
  81. container, err := CreateCertificateContainer(t, client, passphrase, private, certificate)
  82. th.AssertNoErr(t, err)
  83. containerID, err := ParseID(container.ContainerRef)
  84. defer DeleteContainer(t, client, containerID)
  85. }
  86. func TestRSAContainer(t *testing.T) {
  87. clients.SkipRelease(t, "stable/mitaka")
  88. clients.SkipRelease(t, "stable/newton")
  89. clients.SkipRelease(t, "stable/queens")
  90. client, err := clients.NewKeyManagerV1Client()
  91. th.AssertNoErr(t, err)
  92. pass := tools.RandomString("", 16)
  93. priv, pub, err := CreateRSAKeyPair(t, pass)
  94. th.AssertNoErr(t, err)
  95. private, err := CreatePrivateSecret(t, client, priv)
  96. th.AssertNoErr(t, err)
  97. secretID, err := ParseID(private.SecretRef)
  98. th.AssertNoErr(t, err)
  99. defer DeleteSecret(t, client, secretID)
  100. payload, err := secrets.GetPayload(client, secretID, nil).Extract()
  101. th.AssertNoErr(t, err)
  102. t.Logf("Private Payload: %s", string(payload))
  103. public, err := CreatePublicSecret(t, client, pub)
  104. th.AssertNoErr(t, err)
  105. secretID, err = ParseID(public.SecretRef)
  106. th.AssertNoErr(t, err)
  107. defer DeleteSecret(t, client, secretID)
  108. payload, err = secrets.GetPayload(client, secretID, nil).Extract()
  109. th.AssertNoErr(t, err)
  110. t.Logf("Public Payload: %s", string(payload))
  111. passphrase, err := CreatePassphraseSecret(t, client, pass)
  112. th.AssertNoErr(t, err)
  113. secretID, err = ParseID(passphrase.SecretRef)
  114. th.AssertNoErr(t, err)
  115. defer DeleteSecret(t, client, secretID)
  116. payload, err = secrets.GetPayload(client, secretID, nil).Extract()
  117. th.AssertNoErr(t, err)
  118. t.Logf("Passphrase Payload: %s", string(payload))
  119. container, err := CreateRSAContainer(t, client, passphrase, private, public)
  120. th.AssertNoErr(t, err)
  121. containerID, err := ParseID(container.ContainerRef)
  122. defer DeleteContainer(t, client, containerID)
  123. }
  124. func TestContainerConsumersCRUD(t *testing.T) {
  125. clients.SkipRelease(t, "stable/mitaka")
  126. clients.SkipRelease(t, "stable/newton")
  127. clients.SkipRelease(t, "stable/queens")
  128. client, err := clients.NewKeyManagerV1Client()
  129. th.AssertNoErr(t, err)
  130. payload := tools.RandomString("SUPERSECRET-", 8)
  131. secret, err := CreateSecretWithPayload(t, client, payload)
  132. th.AssertNoErr(t, err)
  133. secretID, err := ParseID(secret.SecretRef)
  134. th.AssertNoErr(t, err)
  135. defer DeleteSecret(t, client, secretID)
  136. container, err := CreateGenericContainer(t, client, secret)
  137. th.AssertNoErr(t, err)
  138. containerID, err := ParseID(container.ContainerRef)
  139. th.AssertNoErr(t, err)
  140. defer DeleteContainer(t, client, containerID)
  141. consumerName := tools.RandomString("CONSUMER-", 8)
  142. consumerCreateOpts := containers.CreateConsumerOpts{
  143. Name: consumerName,
  144. URL: "http://example.com",
  145. }
  146. container, err = containers.CreateConsumer(client, containerID, consumerCreateOpts).Extract()
  147. th.AssertNoErr(t, err)
  148. tools.PrintResource(t, container.Consumers)
  149. th.AssertEquals(t, len(container.Consumers), 1)
  150. defer func() {
  151. deleteOpts := containers.DeleteConsumerOpts{
  152. Name: consumerName,
  153. URL: "http://example.com",
  154. }
  155. container, err := containers.DeleteConsumer(client, containerID, deleteOpts).Extract()
  156. th.AssertNoErr(t, err)
  157. th.AssertEquals(t, len(container.Consumers), 0)
  158. }()
  159. allPages, err := containers.ListConsumers(client, containerID, nil).AllPages()
  160. th.AssertNoErr(t, err)
  161. allConsumers, err := containers.ExtractConsumers(allPages)
  162. th.AssertNoErr(t, err)
  163. var found bool
  164. for _, v := range allConsumers {
  165. if v.Name == consumerName {
  166. found = true
  167. }
  168. }
  169. th.AssertEquals(t, found, true)
  170. }