Procházet zdrojové kódy

Tests: Created helper funcs and refactored tests

William Young před 4 roky
rodič
revize
48f29e0090
1 změnil soubory, kde provedl 70 přidání a 38 odebrání
  1. 70 38
      pkg/provider/gcp/secretmanager/secretsmanager_test.go

+ 70 - 38
pkg/provider/gcp/secretmanager/secretsmanager_test.go

@@ -107,27 +107,6 @@ var setNilMockClient = func(smtc *secretManagerTestCase) {
 	smtc.expectError = "provider GCP is not initialized"
 }
 
-// Variables for counterfeiter generated interfaces.
-var client = new(fakes.GoogleSecretManagerClient)
-var pushRemoteRef = new(fakeprr.PushRemoteRef)
-var projectID = "default"
-var secret = secretmanagerpb.Secret{
-	Name: "projects/default/secrets/foo-bar",
-	Replication: &secretmanagerpb.Replication{
-		Replication: &secretmanagerpb.Replication_Automatic_{
-			Automatic: &secretmanagerpb.Replication_Automatic{},
-		},
-	},
-	Labels: map[string]string{
-		"managed-by": "external-secrets",
-	},
-}
-
-var p = secretmanager.ProviderGCP{
-	SecretManagerClient: client,
-	ProjectID:           projectID,
-}
-
 // test the sm<->gcp interface
 // make sure correct values are passed and errors are handled accordingly.
 func TestSecretManagerGetSecret(t *testing.T) {
@@ -210,18 +189,30 @@ func TestSecretManagerGetSecret(t *testing.T) {
 }
 
 func TestSetSecret(t *testing.T) {
-	pushRemoteRef.GetRemoteKeyReturns("foo-bar")
+	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()
+	secret := newSecret()
+	p := newProvider(client)
+
 	expectedErr := "rpc error: code = Aborted desc = failed"
 	newStatus := status.Error(codes.Aborted, "failed")
 	err, _ := apierror.FromError(newStatus)
+
 	client.GetSecretReturns(&secret, nil)
 	client.AddSecretVersionReturns(nil, err)
+
 	expect := p.SetSecret(context.TODO(), nil, pushRemoteRef)
 	if assert.Error(t, expect) {
 		assert.Equal(t, expect.Error(), expectedErr)
@@ -229,17 +220,18 @@ func TestSetSecretAddSecretVersion(t *testing.T) {
 }
 
 func TestSetSecretAccessSecretVersion(t *testing.T) {
+	client := newClient()
+	pushRemoteRef := newPushRemoteRef()
+	secret := newSecret()
+	p := newProvider(client)
+
 	expectedErr := "rpc error: code = Aborted desc = failed"
 	newStatus := status.Error(codes.Aborted, "failed")
 	err, _ := apierror.FromError(newStatus)
+
 	client.AccessSecretVersionReturns(nil, err)
-	pushRemoteRef.GetRemoteKeyReturns("foo-bar")
 	client.GetSecretReturns(nil, err)
-	client.CreateSecretReturns(&secretmanagerpb.Secret{
-		Labels: map[string]string{
-			"managed-by": "external-secrets",
-		},
-	}, nil)
+	client.CreateSecretReturns(&secret, nil)
 
 	expect := p.SetSecret(context.Background(), nil, pushRemoteRef)
 	if assert.Error(t, expect) {
@@ -248,15 +240,16 @@ func TestSetSecretAccessSecretVersion(t *testing.T) {
 }
 
 func TestSetSecretGetSecret404(t *testing.T) {
-	pushRemoteRef.GetRemoteKeyReturns("foo-bar")
-	newStatus := status.Error(codes.NotFound, "")
+	client := newClient()
+	pushRemoteRef := newPushRemoteRef()
+	secret := newSecret()
+	p := newProvider(client)
+
+	newStatus := status.Error(codes.NotFound, "failed")
 	err, _ := apierror.FromError(newStatus)
+
 	client.GetSecretReturns(nil, err)
-	client.CreateSecretReturns(&secretmanagerpb.Secret{
-		Labels: map[string]string{
-			"managed-by": "external-secrets",
-		},
-	}, nil)
+	client.CreateSecretReturns(&secret, nil)
 	client.AccessSecretVersionReturns(nil, err)
 
 	p.SetSecret(context.Background(), nil, pushRemoteRef)
@@ -269,8 +262,10 @@ func TestSetSecretGetSecret404(t *testing.T) {
 }
 
 func TestSetSecretWrongLabel(t *testing.T) {
-	expectedErr := "secret foo-bar is not managed by external secrets"
-	secret = secretmanagerpb.Secret{
+	client := newClient()
+	pushRemoteRef := newPushRemoteRef()
+	p := newProvider(client)
+	secret := secretmanagerpb.Secret{
 		Name: "projects/default/secrets/foo-bar",
 		Replication: &secretmanagerpb.Replication{
 			Replication: &secretmanagerpb.Replication_Automatic_{
@@ -284,6 +279,8 @@ func TestSetSecretWrongLabel(t *testing.T) {
 
 	pushRemoteRef.GetRemoteKeyReturns("foo-bar")
 	client.GetSecretReturns(&secret, nil)
+
+	expectedErr := "secret foo-bar is not managed by external secrets"
 	err := p.SetSecret(context.Background(), nil, pushRemoteRef)
 
 	if assert.Error(t, err) {
@@ -292,13 +289,18 @@ func TestSetSecretWrongLabel(t *testing.T) {
 }
 
 func TestSetSecretAlreadyExists(t *testing.T) {
+	client := newClient()
+	pushRemoteRef := newPushRemoteRef()
+	secret := newSecret()
+	p := newProvider(client)
 	payload := &secretmanagerpb.SecretPayload{Data: []byte("bar")}
+
 	client.AccessSecretVersionReturns(&secretmanagerpb.AccessSecretVersionResponse{
 		Name:    "projects/default/secrets/foo-bar",
 		Payload: payload,
 	}, nil)
 	client.GetSecretReturns(&secret, nil)
-	pushRemoteRef.GetRemoteKeyReturns("foo-bar")
+
 	err := p.SetSecret(context.TODO(), []byte("bar"), pushRemoteRef)
 	if client.AddSecretVersionCallCount() != 0 {
 		t.Error("expected addSecretVersion to not be called")
@@ -421,3 +423,33 @@ func TestValidateStore(t *testing.T) {
 		})
 	}
 }
+
+// counterfeiter helper methods.
+func newClient() *fakes.GoogleSecretManagerClient {
+	return new(fakes.GoogleSecretManagerClient)
+}
+
+func newPushRemoteRef() *fakeprr.PushRemoteRef {
+	return new(fakeprr.PushRemoteRef)
+}
+
+func newSecret() secretmanagerpb.Secret {
+	return secretmanagerpb.Secret{
+		Name: "projects/default/secrets/foo-bar",
+		Replication: &secretmanagerpb.Replication{
+			Replication: &secretmanagerpb.Replication_Automatic_{
+				Automatic: &secretmanagerpb.Replication_Automatic{},
+			},
+		},
+		Labels: map[string]string{
+			"managed-by": "external-secrets",
+		},
+	}
+}
+
+func newProvider(client secretmanager.GoogleSecretManagerClient) secretmanager.ProviderGCP {
+	return secretmanager.ProviderGCP{
+		SecretManagerClient: client,
+		ProjectID:           "default",
+	}
+}