Переглянути джерело

Refactor TestSetSecret GCP mock functions

Signed-off-by: Marcus Dantas <marcus.dantas@engineerbetter.com>
Co-authored-by: Lilly Daniell <lilly.daniell@engineerbetter.com>
Co-authored-by: William Young <will.young@engineerbetter.com>
Co-authored-by: Adrienne Galloway <adrienne.galloway@engineerbetter.com>
Co-authored-by: Amr Fawzy <amr.fawzy@container-solutions.com>
Marcus Dantas 4 роки тому
батько
коміт
f75e3dee40

+ 26 - 8
pkg/provider/gcp/secretmanager/fake/fake.go

@@ -34,18 +34,41 @@ type MockSMClient struct {
 	GetSecretFn    func(ctx context.Context, req *secretmanagerpb.GetSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error)
 }
 
+type AccessSecretVersionMockReturn struct {
+	res *secretmanagerpb.AccessSecretVersionResponse
+	err error
+}
+
+type AddSecretVersionMockReturn struct {
+	secretVersion *secretmanagerpb.SecretVersion
+	err           error
+}
+
+type GetSecretMockReturn struct {
+	secret *secretmanagerpb.Secret
+	err    error
+}
+
 func (mc *MockSMClient) GetSecret(ctx context.Context, req *secretmanagerpb.GetSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
 	return mc.GetSecretFn(ctx, req)
 }
 
+func (mc *MockSMClient) NewGetSecretFn(secret *secretmanagerpb.Secret, err error) GetSecretMockReturn {
+	mc.GetSecretFn = func(ctx context.Context, req *secretmanagerpb.GetSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
+		return secret, err
+	}
+	return GetSecretMockReturn{secret, err}
+}
+
 func (mc *MockSMClient) AccessSecretVersion(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
 	return mc.accessSecretFn(ctx, req)
 }
 
-func (mc *MockSMClient) NewAccessSecretVersionFn(res *secretmanagerpb.AccessSecretVersionResponse, err error) {
+func (mc *MockSMClient) NewAccessSecretVersionFn(res *secretmanagerpb.AccessSecretVersionResponse, err error) AccessSecretVersionMockReturn {
 	mc.accessSecretFn = func(ctx context.Context, req *secretmanagerpb.AccessSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.AccessSecretVersionResponse, error) {
 		return res, err
 	}
+	return AccessSecretVersionMockReturn{res, err}
 }
 
 func (mc *MockSMClient) ListSecrets(ctx context.Context, req *secretmanagerpb.ListSecretsRequest, opts ...gax.CallOption) *secretmanager.SecretIterator {
@@ -59,10 +82,11 @@ func (mc *MockSMClient) AddSecretVersion(ctx context.Context, req *secretmanager
 	return mc.addSecretFn(ctx, req)
 }
 
-func (mc *MockSMClient) NewAddSecretVersion(secretVersion *secretmanagerpb.SecretVersion, err error) {
+func (mc *MockSMClient) NewAddSecretVersion(secretVersion *secretmanagerpb.SecretVersion, err error) AddSecretVersionMockReturn {
 	mc.addSecretFn = func(ctx context.Context, req *secretmanagerpb.AddSecretVersionRequest, opts ...gax.CallOption) (*secretmanagerpb.SecretVersion, error) {
 		return secretVersion, err
 	}
+	return AddSecretVersionMockReturn{secretVersion, err}
 }
 
 func (mc *MockSMClient) CreateSecret(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
@@ -75,12 +99,6 @@ func (mc *MockSMClient) NilClose() {
 	}
 }
 
-func (mc *MockSMClient) NewGetSecretFn(secret *secretmanagerpb.Secret, err error) {
-	mc.GetSecretFn = func(ctx context.Context, req *secretmanagerpb.GetSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
-		return secret, err
-	}
-}
-
 func (mc *MockSMClient) CreateSecretError() {
 	mc.createSecretFn = func(ctx context.Context, req *secretmanagerpb.CreateSecretRequest, opts ...gax.CallOption) (*secretmanagerpb.Secret, error) {
 		return nil, errors.New("something went wrong")

+ 1 - 1
pkg/provider/gcp/secretmanager/secretsmanager.go

@@ -280,7 +280,7 @@ func (sm *ProviderGCP) SetSecret(ctx context.Context, payload []byte, remoteRef
 		}
 	}
 
-	if gcpVersion != nil && gcpVersion.Payload != nil && string(payload) == string(gcpVersion.Payload.Data) {
+	if gcpVersion != nil && gcpVersion.Payload != nil && bytes.Equal(payload, gcpVersion.Payload.Data) {
 		return nil
 	}
 

+ 8 - 17
pkg/provider/gcp/secretmanager/secretsmanager_test.go

@@ -199,7 +199,7 @@ func (f fakeRef) GetRemoteKey() string {
 }
 
 // We need to add the NewGetSecretFn into our args struct so that they modifiable.
-func TestSetSecretTable(t *testing.T) {
+func TestSetSecret(t *testing.T) {
 	smtc := secretManagerTestCase{
 		mockClient:     &fakesm.MockSMClient{},
 		apiInput:       makeValidAPIInput(),
@@ -224,7 +224,10 @@ func TestSetSecretTable(t *testing.T) {
 	var secretVersion = secretmanagerpb.SecretVersion{}
 
 	type args struct {
-		provider secretmanager.ProviderGCP
+		provider                      secretmanager.ProviderGCP
+		GetSecretMockReturn           fakesm.GetSecretMockReturn
+		AccessSecretVersionMockReturn fakesm.AccessSecretVersionMockReturn
+		AddSecretVersionMockReturn    fakesm.AddSecretVersionMockReturn
 	}
 
 	type want struct {
@@ -241,6 +244,9 @@ func TestSetSecretTable(t *testing.T) {
 				provider: secretmanager.ProviderGCP{
 					SecretManagerClient: smtc.mockClient,
 				},
+				GetSecretMockReturn:           smtc.mockClient.NewGetSecretFn(newSecret(), nil),
+				AccessSecretVersionMockReturn: smtc.mockClient.NewAccessSecretVersionFn(&res, nil),
+				AddSecretVersionMockReturn:    smtc.mockClient.NewAddSecretVersion(&secretVersion, nil),
 			},
 			want: want{
 				err: nil,
@@ -250,9 +256,6 @@ func TestSetSecretTable(t *testing.T) {
 	for name, tc := range tests {
 		t.Run(name, func(t *testing.T) {
 			ref := fakeRef{key: "/baz"}
-			smtc.mockClient.NewGetSecretFn(newSecret(), nil)
-			smtc.mockClient.NewAccessSecretVersionFn(&res, nil)
-			smtc.mockClient.NewAddSecretVersion(&secretVersion, nil)
 			err := tc.args.provider.SetSecret(context.Background(), []byte("fake-value"), ref)
 			if diff := cmp.Diff(tc.want.err, err, test.EquateErrors()); diff != "" {
 				t.Errorf("\nTesting SetSecret:\nName: %v\nReason: %v\nWant error: %v\nGot error: %v", name, tc.reason, tc.want.err, diff)
@@ -261,18 +264,6 @@ func TestSetSecretTable(t *testing.T) {
 	}
 }
 
-func TestSetSecret(t *testing.T) {
-	client := newClient()
-	pushRemoteRef := newPushRemoteRef()
-	secret := newSecret()
-	p := newProvider(client)
-
-	client.GetSecretReturns(secret, nil)
-
-	err := p.SetSecret(context.Background(), nil, pushRemoteRef)
-	assert.Equal(t, err, nil)
-}
-
 func TestSetSecretAddSecretVersion(t *testing.T) {
 	client := newClient()
 	pushRemoteRef := newPushRemoteRef()