delinea.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package delinea
  2. import (
  3. "context"
  4. "github.com/external-secrets/external-secrets-e2e/framework"
  5. "github.com/external-secrets/external-secrets-e2e/suites/provider/cases/common"
  6. esv1 "github.com/external-secrets/external-secrets/apis/externalsecrets/v1"
  7. esmeta "github.com/external-secrets/external-secrets/apis/meta/v1"
  8. "github.com/onsi/ginkgo/v2"
  9. "github.com/onsi/gomega"
  10. v1 "k8s.io/api/core/v1"
  11. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  12. )
  13. var _ = ginkgo.Describe("[delinea]", ginkgo.Label("delinea"), func() {
  14. f := framework.New("eso-delinea")
  15. // Initialization is deferred so that assertions work.
  16. provider := &secretStoreProvider{}
  17. ginkgo.BeforeEach(func() {
  18. cfg, err := loadConfigFromEnv()
  19. gomega.Expect(err).ToNot(gomega.HaveOccurred())
  20. provider.init(cfg)
  21. createResources(context.Background(), f, cfg)
  22. })
  23. ginkgo.DescribeTable("sync secrets", framework.TableFuncWithExternalSecret(f, provider),
  24. ginkgo.Entry(common.JSONDataWithProperty(f)),
  25. ginkgo.Entry(common.JSONDataWithoutTargetName(f)),
  26. ginkgo.Entry(common.JSONDataWithTemplate(f)),
  27. ginkgo.Entry(common.JSONDataWithTemplateFromLiteral(f)),
  28. ginkgo.Entry(common.TemplateFromConfigmaps(f)),
  29. ginkgo.Entry(common.JSONDataFromSync(f)),
  30. ginkgo.Entry(common.JSONDataFromRewrite(f)),
  31. ginkgo.Entry(common.NestedJSONWithGJSON(f)),
  32. ginkgo.Entry(common.DockerJSONConfig(f)),
  33. ginkgo.Entry(common.DataPropertyDockerconfigJSON(f)),
  34. ginkgo.Entry(common.SSHKeySyncDataProperty(f)),
  35. ginkgo.Entry(common.DecodingPolicySync(f)),
  36. // V1Alpha1 is not supported.
  37. // ginkgo.Entry(common.SyncV1Alpha1(f)),
  38. // Non-JSON values are not supported by DSV.
  39. // ginkgo.Entry(common.SimpleDataSync(f)),
  40. // ginkgo.Entry(common.SyncWithoutTargetName(f)),
  41. // ginkgo.Entry(common.SSHKeySync(f)),
  42. // ginkgo.Entry(common.DeletionPolicyDelete(f)),
  43. // FindByName is not supported.
  44. // ginkgo.Entry(common.FindByName(f)),
  45. // ginkgo.Entry(common.FindByNameAndRewrite(f)),
  46. // ginkgo.Entry(common.FindByNameWithPath(f)),
  47. // FindByTag is not supported.
  48. // ginkgo.Entry(common.FindByTag(f)),
  49. // ginkgo.Entry(common.FindByTagWithPath(f)),
  50. )
  51. })
  52. func createResources(ctx context.Context, f *framework.Framework, cfg *config) {
  53. secretName := "delinea-credential"
  54. secretKey := "client-secret"
  55. // Creating a secret to hold the Delinea client secret.
  56. secretSpec := v1.Secret{
  57. ObjectMeta: metav1.ObjectMeta{
  58. Name: secretName,
  59. Namespace: f.Namespace.Name,
  60. },
  61. StringData: map[string]string{
  62. secretKey: cfg.clientSecret,
  63. },
  64. }
  65. err := f.CRClient.Create(ctx, &secretSpec)
  66. gomega.Expect(err).ToNot(gomega.HaveOccurred())
  67. // Creating SecretStore.
  68. secretStoreSpec := esv1.SecretStore{
  69. ObjectMeta: metav1.ObjectMeta{
  70. Name: f.Namespace.Name,
  71. Namespace: f.Namespace.Name,
  72. },
  73. Spec: esv1.SecretStoreSpec{
  74. Provider: &esv1.SecretStoreProvider{
  75. Delinea: &esv1.DelineaProvider{
  76. Tenant: cfg.tenant,
  77. TLD: cfg.tld,
  78. URLTemplate: cfg.urlTemplate,
  79. ClientID: &esv1.DelineaProviderSecretRef{
  80. Value: cfg.clientID,
  81. },
  82. ClientSecret: &esv1.DelineaProviderSecretRef{
  83. SecretRef: &esmeta.SecretKeySelector{
  84. Name: secretName,
  85. Key: secretKey,
  86. },
  87. },
  88. },
  89. },
  90. },
  91. }
  92. err = f.CRClient.Create(ctx, &secretStoreSpec)
  93. gomega.Expect(err).ToNot(gomega.HaveOccurred())
  94. }