github.com/Azure/aad-pod-identity@v1.8.17/pkg/utils/utils_test.go (about) 1 package utils 2 3 import ( 4 "os" 5 "testing" 6 ) 7 8 func TestRedactClientID(t *testing.T) { 9 tests := []struct { 10 name string 11 clientID string 12 expected string 13 }{ 14 { 15 name: "should redact client id", 16 clientID: "aabc0000-a83v-9h4m-000j-2c0a66b0c1f9", 17 expected: "aabc##### REDACTED #####c1f9", 18 }, 19 } 20 21 for _, test := range tests { 22 t.Run(test.name, func(t *testing.T) { 23 actual := RedactClientID(test.clientID) 24 if actual != test.expected { 25 t.Fatalf("expected: %s, got %s", test.expected, actual) 26 } 27 }) 28 } 29 } 30 31 func TestIsValidResourceID(t *testing.T) { 32 tests := []struct { 33 name string 34 resourceID string 35 expectedErr bool 36 }{ 37 { 38 name: "invalid resource id 0", 39 resourceID: "invalidresid", 40 expectedErr: true, 41 }, 42 { 43 name: "invalid resource id 1", 44 resourceID: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/0000/providers/Microsoft.ManagedIdentity/keyvault-identity-0", 45 expectedErr: true, 46 }, 47 { 48 name: "valid resource id", 49 resourceID: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/0000/providers/Microsoft.ManagedIdentity/userAssignedIdentities/keyvault-identity-0", 50 expectedErr: false, 51 }, 52 } 53 54 for _, test := range tests { 55 t.Run(test.name, func(t *testing.T) { 56 err := ValidateResourceID(test.resourceID) 57 actualErr := err != nil 58 if actualErr != test.expectedErr { 59 t.Fatalf("expected error: %v, got error: %v", test.expectedErr, err) 60 } 61 }) 62 } 63 } 64 65 func TestIsKubenetCNI(t *testing.T) { 66 tests := []struct { 67 name string 68 kubeletConfig string 69 expectedIsKubenetCNI bool 70 }{ 71 { 72 name: "network plugin cni", 73 kubeletConfig: `KUBELET_FLAGS=--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --dynamic-config-dir=/var/lib/kubelet --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=RotateKubeletServerCertificate=true --image-gc-high-threshold=85 --image-gc-low-threshold=80 --image-pull-progress-deadline=30m --keep-terminated-pod-volumes=false --kube-reserved=cpu=100m,memory=1638Mi --kubeconfig=/var/lib/kubelet/kubeconfig --max-pods=110 --network-plugin=cni --node-status-update-frequency=10s --non-masquerade-cidr=0.0.0.0/0 --pod-infra-container-image=mcr.microsoft.com/oss/kubernetes/pause:1.3.1 --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=0 --rotate-certificates=false --streaming-connection-idle-timeout=4h --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key 74 KUBELET_REGISTER_SCHEDULABLE=true 75 NETWORK_POLICY= 76 77 KUBELET_NODE_LABELS=kubernetes.azure.com/role=agent,agentpool=agentpool,storageprofile=managed,storagetier=Premium_LRS,kubernetes.azure.com/cluster=MC_aks1016_c00_southcentralus,kubernetes.azure.com/mode=system,kubernetes.azure.com/node-image-version=AKSUbuntu-1604-2020.09.30`, 78 expectedIsKubenetCNI: false, 79 }, 80 { 81 name: "network plugin kubenet", 82 kubeletConfig: `KUBELET_FLAGS=--address=0.0.0.0 --anonymous-auth=false --authentication-token-webhook=true --authorization-mode=Webhook --azure-container-registry-config=/etc/kubernetes/azure.json --cgroups-per-qos=true --client-ca-file=/etc/kubernetes/certs/ca.crt --cloud-config=/etc/kubernetes/azure.json --cloud-provider=azure --cluster-dns=10.0.0.10 --cluster-domain=cluster.local --dynamic-config-dir=/var/lib/kubelet --enforce-node-allocatable=pods --event-qps=0 --eviction-hard=memory.available<750Mi,nodefs.available<10%,nodefs.inodesFree<5% --feature-gates=RotateKubeletServerCertificate=true --image-gc-high-threshold=85 --image-gc-low-threshold=80 --image-pull-progress-deadline=30m --keep-terminated-pod-volumes=false --kube-reserved=cpu=100m,memory=1638Mi --kubeconfig=/var/lib/kubelet/kubeconfig --max-pods=110 --network-plugin=kubenet --node-status-update-frequency=10s --non-masquerade-cidr=0.0.0.0/0 --pod-infra-container-image=mcr.microsoft.com/oss/kubernetes/pause:1.3.1 --pod-manifest-path=/etc/kubernetes/manifests --pod-max-pids=-1 --protect-kernel-defaults=true --read-only-port=0 --rotate-certificates=false --streaming-connection-idle-timeout=4h --tls-cert-file=/etc/kubernetes/certs/kubeletserver.crt --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256 --tls-private-key-file=/etc/kubernetes/certs/kubeletserver.key 83 KUBELET_REGISTER_SCHEDULABLE=true 84 NETWORK_POLICY= 85 86 KUBELET_NODE_LABELS=kubernetes.azure.com/role=agent,agentpool=agentpool,storageprofile=managed,storagetier=Premium_LRS,kubernetes.azure.com/cluster=MC_aks1016_c00_southcentralus,kubernetes.azure.com/mode=system,kubernetes.azure.com/node-image-version=AKSUbuntu-1604-2020.09.30`, 87 expectedIsKubenetCNI: true, 88 }, 89 } 90 91 for _, test := range tests { 92 t.Run(test.name, func(t *testing.T) { 93 tmpFile, err := os.CreateTemp("", "ut") 94 if err != nil { 95 t.Fatalf("expected err to be nil, got: %+v", err) 96 } 97 defer os.Remove(tmpFile.Name()) 98 99 _, err = tmpFile.Write([]byte(test.kubeletConfig)) 100 if err != nil { 101 t.Fatalf("expected err to be nil, got: %+v", err) 102 } 103 104 isKubenet, err := IsKubenetCNI(tmpFile.Name()) 105 if err != nil { 106 t.Fatalf("expected err to be nil, got: %+v", err) 107 } 108 if isKubenet != test.expectedIsKubenetCNI { 109 t.Fatalf("expected kubenet CNI to be %v, got: %v", test.expectedIsKubenetCNI, isKubenet) 110 } 111 }) 112 } 113 }