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

Add test for missing cert secret

Daniel Hix 4 роки тому
батько
коміт
a075963b10
1 змінених файлів з 40 додано та 8 видалено
  1. 40 8
      pkg/provider/vault/vault_test.go

+ 40 - 8
pkg/provider/vault/vault_test.go

@@ -134,6 +134,15 @@ func newVaultTokenIDResponse(token string) *vault.Response {
 	})
 }
 
+func clientWithLoginMock(c *vault.Config) (Client, error) {
+	return &fake.VaultClient{
+		MockNewRequest: fake.NewMockNewRequestFn(&vault.Request{}),
+		MockRawRequestWithContext: fake.NewMockRawRequestWithContextFn(
+			newVaultTokenIDResponse("test-token"), nil, func(got *vault.Request) error { return nil }),
+		MockSetToken: fake.NewSetTokenFn(),
+	}, nil
+}
+
 func TestNewVault(t *testing.T) {
 	errBoom := errors.New("boom")
 	secretData := []byte("some-creds")
@@ -322,19 +331,42 @@ MIICsTCCAZkCFEJJ4daz5sxkFlzq9n1djLEuG7bmMA0GCSqGSIb3DQEBCwUAMBMxETAPBgNVBAMMCHZh
 						return nil
 					}),
 				},
-				newClientFunc: func(c *vault.Config) (Client, error) {
-					return &fake.VaultClient{
-						MockNewRequest: fake.NewMockNewRequestFn(&vault.Request{}),
-						MockRawRequestWithContext: fake.NewMockRawRequestWithContextFn(
-							newVaultTokenIDResponse("test-token"), nil, func(got *vault.Request) error { return nil }),
-						MockSetToken: fake.NewSetTokenFn(),
-					}, nil
-				},
+				newClientFunc: clientWithLoginMock,
 			},
 			want: want{
 				err: nil,
 			},
 		},
+		"GetCertSecretMissingError": {
+			reason: "Should return a Vault prodvider with the cert from k8s",
+			args: args{
+				store: makeValidSecretStoreWithK8sCerts(),
+				kube: &test.MockClient{
+					MockGet: test.NewMockGetFn(nil, func(obj kclient.Object) error {
+						if o, ok := obj.(*corev1.Secret); ok {
+							o.Data = map[string][]byte{
+								"token": secretData,
+							}
+							return nil
+						}
+
+						if o, ok := obj.(*corev1.ServiceAccount); ok {
+							o.Secrets = []corev1.ObjectReference{
+								{
+									Name: "example-secret-token",
+								},
+							}
+							return nil
+						}
+						return nil
+					}),
+				},
+				newClientFunc: clientWithLoginMock,
+			},
+			want: want{
+				err: fmt.Errorf(errVaultCert, errors.New(`cannot find secret data for key: "cert"`)),
+			},
+		},
 		"GetCertificateFormatError": {
 			reason: "Should return error if client certificate is in wrong format.",
 			args: args{