github.com/Azure/aad-pod-identity@v1.8.17/pkg/crd/crd_test.go (about)

     1  package crd
     2  
     3  import (
     4  	"testing"
     5  
     6  	internalaadpodid "github.com/Azure/aad-pod-identity/pkg/apis/aadpodidentity"
     7  	aadpodid "github.com/Azure/aad-pod-identity/pkg/apis/aadpodidentity/v1"
     8  
     9  	api "k8s.io/api/core/v1"
    10  	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    11  )
    12  
    13  type TestCrdClient struct {
    14  	*Client
    15  	assignedIDMap map[string]*aadpodid.AzureAssignedIdentity
    16  	bindingMap    map[string]*aadpodid.AzureIdentityBinding
    17  	idMap         map[string]*aadpodid.AzureIdentity
    18  }
    19  
    20  func (c *TestCrdClient) Start(exit <-chan struct{}) {
    21  }
    22  
    23  func (c *TestCrdClient) SyncCache(exit <-chan struct{}) {
    24  }
    25  
    26  func (c *TestCrdClient) CreateCrdWatchers(eventCh chan internalaadpodid.EventType) error {
    27  	return nil
    28  }
    29  
    30  func (c *TestCrdClient) RemoveAssignedIdentity(assignedIdentity *aadpodid.AzureAssignedIdentity) error {
    31  	delete(c.assignedIDMap, assignedIdentity.Name)
    32  	return nil
    33  }
    34  
    35  // This function is not used currently
    36  // TODO: consider remove
    37  func (c *TestCrdClient) CreateAssignedIdentity(assignedIdentity *aadpodid.AzureAssignedIdentity) error {
    38  	c.assignedIDMap[assignedIdentity.Name] = assignedIdentity
    39  	return nil
    40  }
    41  
    42  func (c *TestCrdClient) CreateBinding(bindingName string, idName string, selector string) {
    43  	binding := &aadpodid.AzureIdentityBinding{
    44  		ObjectMeta: v1.ObjectMeta{
    45  			Name: bindingName,
    46  		},
    47  		Spec: aadpodid.AzureIdentityBindingSpec{
    48  			AzureIdentity: idName,
    49  			Selector:      selector,
    50  		},
    51  	}
    52  	c.bindingMap[bindingName] = binding
    53  }
    54  
    55  func (c *TestCrdClient) CreateID(idName string, t aadpodid.IdentityType, rID string, cID string, cp *api.SecretReference, tID string, adRID string, adEpt string) {
    56  	id := &aadpodid.AzureIdentity{
    57  		ObjectMeta: v1.ObjectMeta{
    58  			Name: idName,
    59  		},
    60  		Spec: aadpodid.AzureIdentitySpec{
    61  			Type:         t,
    62  			ResourceID:   rID,
    63  			ClientID:     cID,
    64  			TenantID:     tID,
    65  			ADResourceID: adRID,
    66  			ADEndpoint:   adEpt,
    67  		},
    68  	}
    69  	c.idMap[idName] = id
    70  }
    71  
    72  func (c *TestCrdClient) ListIds() (*[]aadpodid.AzureIdentity, error) {
    73  	idList := make([]aadpodid.AzureIdentity, 0)
    74  	for _, v := range c.idMap {
    75  		idList = append(idList, *v)
    76  	}
    77  	return &idList, nil
    78  }
    79  
    80  func (c *TestCrdClient) ListBindings() (*[]internalaadpodid.AzureIdentityBinding, error) {
    81  	bindingList := make([]internalaadpodid.AzureIdentityBinding, 0)
    82  	for _, v := range c.bindingMap {
    83  		newBinding := aadpodid.ConvertV1BindingToInternalBinding(*v)
    84  		bindingList = append(bindingList, newBinding)
    85  	}
    86  	return &bindingList, nil
    87  }
    88  
    89  func (c *TestCrdClient) ListAssignedIDs() (*[]aadpodid.AzureAssignedIdentity, error) {
    90  	assignedIDList := make([]aadpodid.AzureAssignedIdentity, 0)
    91  	for _, v := range c.assignedIDMap {
    92  		assignedIDList = append(assignedIDList, *v)
    93  	}
    94  	return &assignedIDList, nil
    95  }
    96  
    97  func TestRemoveFinalizer(t *testing.T) {
    98  	assignedID := aadpodid.AzureAssignedIdentity{
    99  		ObjectMeta: v1.ObjectMeta{
   100  			Finalizers: []string{
   101  				finalizerName,
   102  			},
   103  		},
   104  	}
   105  
   106  	removeFinalizer(&assignedID)
   107  	if len(assignedID.GetFinalizers()) != 0 {
   108  		t.Fatalf("expected len to be 0, got: %d", len(assignedID.GetFinalizers()))
   109  	}
   110  }