...
1 package secretmanager
2
3 import (
4 "context"
5 "fmt"
6 "os"
7 "testing"
8
9 "github.com/stretchr/testify/suite"
10
11 "edge-infra.dev/test/framework"
12 "edge-infra.dev/test/framework/gcp"
13 "edge-infra.dev/test/framework/integration"
14 )
15
16 func TestMain(m *testing.M) {
17 framework.HandleFlags()
18 os.Exit(m.Run())
19 }
20
21 type Suite struct {
22 *framework.Framework
23 projectID string
24 client *SecretManager
25 ctx context.Context
26 }
27
28 func TestSecretManagerClientIntegration(t *testing.T) {
29 f := framework.New("gcp-secretmanager").
30 Setup(integration.SkipIfNot).
31 Setup(gcp.NeedsProjectID)
32
33 s := &Suite{
34 f,
35 gcp.GCloud.ProjectID,
36 nil,
37 context.Background(),
38 }
39 f.BeforeEachTest(s.beforeEach)
40
41 suite.Run(t, s)
42 }
43
44 func (s *Suite) TestClient() {
45 name := s.UniqueName
46 val := []byte(fmt.Sprintf("test-crud-value-%s", s.UniqueName))
47 err := s.client.AddSecret(s.ctx, name, val, nil, false, nil, "")
48 s.NoError(err)
49
50 actual, err := s.client.GetLatestSecretValue(s.ctx, name)
51 s.NoError(err)
52 s.Equal(val, actual, "read value was not the same as created value")
53
54 val2 := []byte(fmt.Sprintf("test-crud-value-2-%s", s.UniqueName))
55 err = s.client.AddSecret(s.ctx, name, val2, nil, false, nil, "")
56 s.NoError(err)
57
58 updated, err := s.client.GetLatestSecretValue(s.ctx, name)
59 s.NoError(err)
60 s.Equal(val2, updated, "read value was not the same as just updated value")
61
62 err = s.client.DeleteSecret(s.ctx, name)
63 s.NoError(err)
64
65 secrets, err := s.client.ListSecrets(s.ctx, "")
66 s.NoError(err)
67
68 found := false
69 for _, s := range secrets {
70 if s.Name == name {
71 found = true
72 }
73 }
74 s.False(found, "found secret that was supposed to have been deleted")
75 }
76
77 func (s *Suite) beforeEach(_ *framework.Framework) {
78 c, err := NewWithOptions(s.ctx, s.projectID)
79 if err != nil {
80 s.FailNow("failed to create secret manager client", err)
81 }
82 s.client = &c
83 }
84
View as plain text