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  }