package secretmanager import ( "context" "fmt" "os" "testing" "github.com/stretchr/testify/suite" "edge-infra.dev/test/framework" "edge-infra.dev/test/framework/gcp" "edge-infra.dev/test/framework/integration" ) func TestMain(m *testing.M) { framework.HandleFlags() os.Exit(m.Run()) } type Suite struct { *framework.Framework projectID string client *SecretManager ctx context.Context } func TestSecretManagerClientIntegration(t *testing.T) { f := framework.New("gcp-secretmanager"). Setup(integration.SkipIfNot). Setup(gcp.NeedsProjectID) s := &Suite{ f, gcp.GCloud.ProjectID, nil, context.Background(), } f.BeforeEachTest(s.beforeEach) suite.Run(t, s) } func (s *Suite) TestClient() { name := s.UniqueName val := []byte(fmt.Sprintf("test-crud-value-%s", s.UniqueName)) err := s.client.AddSecret(s.ctx, name, val, nil, false, nil, "") s.NoError(err) actual, err := s.client.GetLatestSecretValue(s.ctx, name) s.NoError(err) s.Equal(val, actual, "read value was not the same as created value") val2 := []byte(fmt.Sprintf("test-crud-value-2-%s", s.UniqueName)) err = s.client.AddSecret(s.ctx, name, val2, nil, false, nil, "") s.NoError(err) updated, err := s.client.GetLatestSecretValue(s.ctx, name) s.NoError(err) s.Equal(val2, updated, "read value was not the same as just updated value") err = s.client.DeleteSecret(s.ctx, name) s.NoError(err) secrets, err := s.client.ListSecrets(s.ctx, "") s.NoError(err) found := false for _, s := range secrets { if s.Name == name { found = true } } s.False(found, "found secret that was supposed to have been deleted") } func (s *Suite) beforeEach(_ *framework.Framework) { c, err := NewWithOptions(s.ctx, s.projectID) if err != nil { s.FailNow("failed to create secret manager client", err) } s.client = &c }