github.com/Azure/aad-pod-identity@v1.8.17/pkg/apis/aadpodidentity/v1/conversion_test.go (about) 1 package v1 2 3 import ( 4 "testing" 5 6 aadpodid "github.com/Azure/aad-pod-identity/pkg/apis/aadpodidentity" 7 8 "github.com/google/go-cmp/cmp" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 ) 11 12 var ( 13 objectMetaName = "objectMetaName" 14 identityName = "identityName" 15 selectorName = "selectorName" 16 idTypeInternal = aadpodid.UserAssignedMSI 17 idTypeV1 = UserAssignedMSI 18 rID = "resourceId" 19 assignedIDPod = "assignedIDPod" 20 replicas = int32(3) 21 weight = 1 22 podLabels = map[string]string{"testkey1": "testval1", "testkey2": "testval2"} 23 ) 24 25 func CreateV1Binding() AzureIdentityBinding { 26 return AzureIdentityBinding{ 27 ObjectMeta: metav1.ObjectMeta{ 28 Name: objectMetaName, 29 }, 30 TypeMeta: metav1.TypeMeta{ 31 Kind: "AzureIdentityBinding", 32 APIVersion: "aadpodidentity.k8s.io/v1", 33 }, 34 Spec: AzureIdentityBindingSpec{ 35 AzureIdentity: identityName, 36 Selector: selectorName, 37 Weight: weight, 38 }, 39 Status: AzureIdentityBindingStatus{ 40 AvailableReplicas: replicas, 41 }, 42 } 43 } 44 45 func CreateV1Identity() AzureIdentity { 46 return AzureIdentity{ 47 ObjectMeta: metav1.ObjectMeta{ 48 Name: objectMetaName, 49 }, 50 TypeMeta: metav1.TypeMeta{ 51 Kind: "AzureIdentity", 52 APIVersion: "aadpodidentity.k8s.io/v1", 53 }, 54 Spec: AzureIdentitySpec{ 55 Type: idTypeV1, 56 ResourceID: rID, 57 Replicas: &replicas, 58 }, 59 Status: AzureIdentityStatus{ 60 AvailableReplicas: replicas, 61 }, 62 } 63 } 64 65 func CreateV1AssignedIdentity() AzureAssignedIdentity { 66 v1Identity := CreateV1Identity() 67 v1Binding := CreateV1Binding() 68 69 return AzureAssignedIdentity{ 70 ObjectMeta: metav1.ObjectMeta{ 71 Name: objectMetaName, 72 }, 73 TypeMeta: metav1.TypeMeta{ 74 Kind: "AzureAssignedIdentity", 75 APIVersion: "aadpodidentity.k8s.io/v1", 76 }, 77 Spec: AzureAssignedIdentitySpec{ 78 AzureIdentityRef: &v1Identity, 79 AzureBindingRef: &v1Binding, 80 Pod: assignedIDPod, 81 Replicas: &replicas, 82 }, 83 Status: AzureAssignedIdentityStatus{ 84 AvailableReplicas: replicas, 85 }, 86 } 87 } 88 89 func CreateInternalBinding() aadpodid.AzureIdentityBinding { 90 return aadpodid.AzureIdentityBinding{ 91 ObjectMeta: metav1.ObjectMeta{ 92 Name: objectMetaName, 93 }, 94 TypeMeta: metav1.TypeMeta{ 95 Kind: "AzureIdentityBinding", 96 APIVersion: "aadpodidentity.k8s.io/v1", 97 }, 98 Spec: aadpodid.AzureIdentityBindingSpec{ 99 AzureIdentity: identityName, 100 Selector: selectorName, 101 Weight: weight, 102 }, 103 Status: aadpodid.AzureIdentityBindingStatus{ 104 AvailableReplicas: replicas, 105 }, 106 } 107 } 108 109 func CreateInternalIdentity() aadpodid.AzureIdentity { 110 return aadpodid.AzureIdentity{ 111 ObjectMeta: metav1.ObjectMeta{ 112 Name: objectMetaName, 113 }, 114 TypeMeta: metav1.TypeMeta{ 115 Kind: "AzureIdentity", 116 APIVersion: "aadpodidentity.k8s.io/v1", 117 }, 118 Spec: aadpodid.AzureIdentitySpec{ 119 Type: idTypeInternal, 120 ResourceID: rID, 121 Replicas: &replicas, 122 }, 123 Status: aadpodid.AzureIdentityStatus{ 124 AvailableReplicas: replicas, 125 }, 126 } 127 } 128 129 func CreateInternalAssignedIdentity() aadpodid.AzureAssignedIdentity { 130 internalIdentity := CreateInternalIdentity() 131 internalBinding := CreateInternalBinding() 132 133 return aadpodid.AzureAssignedIdentity{ 134 ObjectMeta: metav1.ObjectMeta{ 135 Name: objectMetaName, 136 }, 137 TypeMeta: metav1.TypeMeta{ 138 Kind: "AzureAssignedIdentity", 139 APIVersion: "aadpodidentity.k8s.io/v1", 140 }, 141 Spec: aadpodid.AzureAssignedIdentitySpec{ 142 AzureIdentityRef: &internalIdentity, 143 AzureBindingRef: &internalBinding, 144 Pod: assignedIDPod, 145 Replicas: &replicas, 146 }, 147 Status: aadpodid.AzureAssignedIdentityStatus{ 148 AvailableReplicas: replicas, 149 }, 150 } 151 } 152 153 func CreateInternalPodIdentityException() aadpodid.AzurePodIdentityException { 154 return aadpodid.AzurePodIdentityException{ 155 ObjectMeta: metav1.ObjectMeta{ 156 Name: objectMetaName, 157 }, 158 Spec: aadpodid.AzurePodIdentityExceptionSpec{ 159 PodLabels: podLabels, 160 }, 161 Status: aadpodid.AzurePodIdentityExceptionStatus{}, 162 } 163 } 164 165 func CreateV1PodIdentityException() AzurePodIdentityException { 166 return AzurePodIdentityException{ 167 ObjectMeta: metav1.ObjectMeta{ 168 Name: objectMetaName, 169 }, 170 Spec: AzurePodIdentityExceptionSpec{ 171 PodLabels: podLabels, 172 }, 173 Status: AzurePodIdentityExceptionStatus{}, 174 } 175 } 176 177 func TestConvertV1BindingToInternalBinding(t *testing.T) { 178 bindingV1 := CreateV1Binding() 179 convertedBindingInternal := ConvertV1BindingToInternalBinding(bindingV1) 180 bindingInternal := CreateInternalBinding() 181 182 if !cmp.Equal(bindingInternal, convertedBindingInternal) { 183 t.Errorf("Failed to convert from v1 to internal AzureIdentityBinding") 184 } 185 } 186 187 func TestConvertV1IdentityToInternalIdentity(t *testing.T) { 188 idV1 := CreateV1Identity() 189 convertedIDInternal := ConvertV1IdentityToInternalIdentity(idV1) 190 idInternal := CreateInternalIdentity() 191 192 if !cmp.Equal(idInternal, convertedIDInternal) { 193 t.Errorf("Failed to convert from v1 to internal AzureIdentity") 194 } 195 } 196 197 func TestConvertV1AssignedIdentityToInternalAssignedIdentity(t *testing.T) { 198 assignedIDV1 := CreateV1AssignedIdentity() 199 200 convertedAssignedIDInternal := ConvertV1AssignedIdentityToInternalAssignedIdentity(assignedIDV1) 201 assignedIDInternal := CreateInternalAssignedIdentity() 202 203 if !cmp.Equal(assignedIDInternal, convertedAssignedIDInternal) { 204 t.Errorf("Failed to convert from v1 to internal AzureAssignedIdentity") 205 } 206 207 // test no panics when azure identity or binding ref is nil 208 assignedIDV1.Spec.AzureIdentityRef = nil 209 assignedIDV1.Spec.AzureBindingRef = nil 210 211 convertedAssignedIDInternal = ConvertV1AssignedIdentityToInternalAssignedIdentity(assignedIDV1) 212 assignedIDInternal = CreateInternalAssignedIdentity() 213 assignedIDInternal.Spec.AzureIdentityRef = &aadpodid.AzureIdentity{} 214 assignedIDInternal.Spec.AzureBindingRef = &aadpodid.AzureIdentityBinding{} 215 216 if !cmp.Equal(assignedIDInternal, convertedAssignedIDInternal) { 217 t.Errorf("Failed to convert from v1 to internal AzureAssignedIdentity") 218 } 219 } 220 221 func TestConvertInternalBindingToV1Binding(t *testing.T) { 222 bindingInternal := CreateInternalBinding() 223 convertedBindingV1 := ConvertInternalBindingToV1Binding(bindingInternal) 224 bindingV1 := CreateV1Binding() 225 226 if !cmp.Equal(bindingV1, convertedBindingV1) { 227 t.Errorf("Failed to convert from internal to v1 AzureIdentityBinding") 228 } 229 } 230 231 func TestConvertInternalIdentityToV1Identity(t *testing.T) { 232 idInternal := CreateInternalIdentity() 233 convertedIDV1 := ConvertInternalIdentityToV1Identity(idInternal) 234 idV1 := CreateV1Identity() 235 236 if !cmp.Equal(idV1, convertedIDV1) { 237 t.Errorf("Failed to convert from internal to v1 AzureIdentity") 238 } 239 } 240 241 func TestConvertInternalAssignedIdentityToV1AssignedIdentity(t *testing.T) { 242 assignedIDInternal := CreateInternalAssignedIdentity() 243 244 convertedAssignedIDV1 := ConvertInternalAssignedIdentityToV1AssignedIdentity(assignedIDInternal) 245 assignedIDV1 := CreateV1AssignedIdentity() 246 247 if !cmp.Equal(assignedIDV1, convertedAssignedIDV1) { 248 t.Errorf("Failed to convert from v1 to internal AzureAssignedIdentity") 249 } 250 } 251 252 func TestConvertV1PodIdentityExceptionToInternalPodIdentityException(t *testing.T) { 253 podExceptionV1 := CreateV1PodIdentityException() 254 255 convertedPodExceptionInternal := ConvertV1PodIdentityExceptionToInternalPodIdentityException(podExceptionV1) 256 podExceptionInternal := CreateInternalPodIdentityException() 257 258 if !cmp.Equal(convertedPodExceptionInternal, podExceptionInternal) { 259 t.Errorf("Failed to convert from v1 to internal AzureAssignedIdentity") 260 } 261 }