diff --git a/pkg/controller/onepassworditem/onepassworditem_test.go b/pkg/controller/onepassworditem/onepassworditem_test.go index 2ebb5e0..09d5b3b 100644 --- a/pkg/controller/onepassworditem/onepassworditem_test.go +++ b/pkg/controller/onepassworditem/onepassworditem_test.go @@ -31,6 +31,9 @@ const ( itemId = "nwrhuano7bcwddcviubpp4mhfq" username = "test-user" password = "QmHumKc$mUeEem7caHtbaBaJ" + firstHost = "http://localhost:8080" + awsKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" + iceCream = "freezing blue 20%" userKey = "username" passKey = "password" version = 123 @@ -242,6 +245,47 @@ var tests = []testReconcileItem{ passKey: password, }, }, + { + testName: "Secret from 1Password item with fields and sections that have invalid K8s labels", + customResource: &onepasswordv1.OnePasswordItem{ + TypeMeta: metav1.TypeMeta{ + Kind: onePasswordItemKind, + APIVersion: onePasswordItemAPIVersion, + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "!my sECReT it3m%", + Namespace: namespace, + }, + Spec: onepasswordv1.OnePasswordItemSpec{ + ItemPath: itemPath, + }, + }, + existingSecret: nil, + expectedError: nil, + expectedResultSecret: &corev1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: "my-secret-it3m", + Namespace: namespace, + Annotations: map[string]string{ + op.VersionAnnotation: fmt.Sprint(version), + }, + }, + Data: map[string][]byte{ + "password": []byte(password), + "username": []byte(username), + "first-host": []byte(firstHost), + "aws-access-key": []byte(awsKey), + "ice-cream-type": []byte(iceCream), + }, + }, + opItem: map[string]string{ + userKey: username, + passKey: password, + "first host": firstHost, + "AWS Access Key": awsKey, + "😄 ice-cream type": iceCream, + }, + }, } func TestReconcileOnePasswordItem(t *testing.T) { @@ -273,7 +317,10 @@ func TestReconcileOnePasswordItem(t *testing.T) { mocks.GetGetItemFunc = func(uuid string, vaultUUID string) (*onepassword.Item, error) { item := onepassword.Item{} - item.Fields = generateFields(testData.opItem["username"], testData.opItem["password"]) + item.Fields = []*onepassword.ItemField{} + for k, v := range testData.opItem { + item.Fields = append(item.Fields, &onepassword.ItemField{Label: k, Value: v}) + } item.Version = version item.Vault.ID = vaultUUID item.ID = uuid diff --git a/pkg/kubernetessecrets/kubernetes_secrets_builder_test.go b/pkg/kubernetessecrets/kubernetes_secrets_builder_test.go index 43879ce..3c9484d 100644 --- a/pkg/kubernetessecrets/kubernetes_secrets_builder_test.go +++ b/pkg/kubernetessecrets/kubernetes_secrets_builder_test.go @@ -102,7 +102,7 @@ func TestBuildKubernetesSecretFromOnePasswordItem(t *testing.T) { item.Fields = generateFields(5) kubeSecret := BuildKubernetesSecretFromOnePasswordItem(name, namespace, annotations, item) - if kubeSecret.Name != name { + if kubeSecret.Name != strings.ToLower(name) { t.Errorf("Expected name value: %v but got: %v", name, kubeSecret.Name) } if kubeSecret.Namespace != namespace {