@@ -5,28 +5,32 @@ package googlesecretmanagerprovider
5
5
6
6
import (
7
7
"context"
8
- "errors "
8
+ "fmt "
9
9
"testing"
10
10
11
11
"cloud.google.com/go/secretmanager/apiv1/secretmanagerpb"
12
12
gax "github.com/googleapis/gax-go/v2"
13
13
"github.com/stretchr/testify/require"
14
14
"go.opentelemetry.io/collector/confmap"
15
+ "google.golang.org/grpc/codes"
15
16
)
16
17
17
- // Define a mock secretsManagerClient for testing
18
- type mockSecretsManagerClient struct {
19
- err error
20
- secretString string
18
+ var validSecrets = map [string ]string {
19
+ "projects/my-project/secrets/secret-1/versions/1" : "secret-1" ,
20
+ "projects/my-project/secrets/secret-2/versions/1" : "secret-2" ,
21
21
}
22
22
23
+ // Define a mock secretsManagerClient for testing
24
+ type mockSecretsManagerClient struct {}
25
+
23
26
func (m * mockSecretsManagerClient ) AccessSecretVersion (ctx context.Context , req * secretmanagerpb.AccessSecretVersionRequest , opts ... gax.CallOption ) (* secretmanagerpb.AccessSecretVersionResponse , error ) {
24
- if m .err != nil {
25
- return nil , m .err
27
+ secretString , ok := validSecrets [req .Name ]
28
+ if ! ok {
29
+ return nil , fmt .Errorf ("secrets entry does not exist, error code: %v" , codes .NotFound )
26
30
}
27
31
return & secretmanagerpb.AccessSecretVersionResponse {
28
32
Payload : & secretmanagerpb.SecretPayload {
29
- Data : []byte (m . secretString ),
33
+ Data : []byte (secretString ),
30
34
},
31
35
}, nil
32
36
}
@@ -43,13 +47,10 @@ func TestProvider_Retrieve_Success(t *testing.T) {
43
47
wantSecret string
44
48
}{
45
49
{
46
- name : "Happy path: valid uri, secret entry exists and is accessible" ,
47
- uri : schemeName + ":projects/my-project/secrets/test-secret-id/versions/1" ,
48
- testSecretManager : & mockSecretsManagerClient {
49
- err : nil ,
50
- secretString : "test-secret-value" ,
51
- },
52
- wantSecret : "test-secret-value" ,
50
+ name : "Happy path: valid uri, secret entry exists and is accessible" ,
51
+ uri : schemeName + ":projects/my-project/secrets/secret-1/versions/1" ,
52
+ testSecretManager : & mockSecretsManagerClient {},
53
+ wantSecret : "secret-1" ,
53
54
},
54
55
}
55
56
@@ -58,18 +59,13 @@ func TestProvider_Retrieve_Success(t *testing.T) {
58
59
testProvider := & provider {
59
60
client : tc .testSecretManager ,
60
61
}
61
- defer testProvider .client .Close ()
62
62
gotSecret , err := testProvider .Retrieve (context .Background (), tc .uri , nil )
63
- if err != nil {
64
- t .Errorf ("%v: Retrieve() gotError = %v, want nil error" , tc .name , err )
65
- }
63
+ require .NoError (t , err )
64
+
66
65
gotSecretString , err := gotSecret .AsString ()
67
- if err != nil {
68
- t .Errorf ("%v: failed to retrieve the string value of the secret, error: %v" , tc .name , err )
69
- }
70
- if gotSecretString != tc .wantSecret {
71
- t .Errorf ("%v: Retrieve() gotSecret = %v, want %v" , tc .name , gotSecret , tc .wantSecret )
72
- }
66
+ require .NoError (t , err )
67
+ require .Equal (t , tc .wantSecret , gotSecretString )
68
+
73
69
})
74
70
}
75
71
}
@@ -81,28 +77,19 @@ func TestProvider_Retrieve_Failure(t *testing.T) {
81
77
testSecretManager * mockSecretsManagerClient
82
78
}{
83
79
{
84
- name : "Invalid scheme" ,
85
- uri : "invalidscheme" + ":projects/my-project/secrets/test-secret-id/versions/1" ,
86
- testSecretManager : & mockSecretsManagerClient {
87
- err : errors .New ("invalid scheme" ),
88
- secretString : "test-secret-value" ,
89
- },
80
+ name : "Invalid scheme" ,
81
+ uri : "invalidscheme" + ":projects/my-project/secrets/test-secret-id/versions/1" ,
82
+ testSecretManager : & mockSecretsManagerClient {},
90
83
},
91
84
{
92
- name : "secret entry does not exist in the secret manager" ,
93
- uri : schemeName + ":projects/my-project/secrets/non-existent/versions/1" ,
94
- testSecretManager : & mockSecretsManagerClient {
95
- err : errors .New ("secret entry does not exist" ),
96
- secretString : "test-secret-value" ,
97
- },
85
+ name : "secret entry does not exist in the secret manager" ,
86
+ uri : schemeName + ":projects/my-project/secrets/non-existent/versions/1" ,
87
+ testSecretManager : & mockSecretsManagerClient {},
98
88
},
99
89
{
100
- name : "invalid secret name" ,
101
- uri : schemeName + ":projects/my-project/invalid-secret/test-secret-id/versions/1" ,
102
- testSecretManager : & mockSecretsManagerClient {
103
- err : errors .New ("secret name is invalid" ),
104
- secretString : "test-secret-value" ,
105
- },
90
+ name : "invalid secret name" ,
91
+ uri : schemeName + ":projects/my-project/versions/1" ,
92
+ testSecretManager : & mockSecretsManagerClient {},
106
93
},
107
94
}
108
95
@@ -111,11 +98,8 @@ func TestProvider_Retrieve_Failure(t *testing.T) {
111
98
testProvider := & provider {
112
99
client : tc .testSecretManager ,
113
100
}
114
- defer testProvider .client .Close ()
115
101
_ , err := testProvider .Retrieve (context .Background (), tc .uri , nil )
116
- if err == nil {
117
- t .Errorf ("%v: Retrieve() got nil error, want non-nil error" , tc .name )
118
- }
102
+ require .Error (t , err )
119
103
})
120
104
}
121
105
}
0 commit comments