@@ -38,6 +38,7 @@ func TestPrefixClaim_GetAvailablePrefixesByParentPrefix(t *testing.T) {
3838	//prefix mock input 
3939	parentPrefixId  :=  int64 (3 )
4040	availablePrefixListInput  :=  ipam .NewIpamPrefixesAvailablePrefixesListParams ().WithID (parentPrefixId )
41+ 
4142	//prefix mock output 
4243	childPrefix1  :=  "10.112.140.0/24" 
4344	childPrefix2  :=  "10.120.180.0/24" 
@@ -129,6 +130,9 @@ func TestPrefixClaim_GetAvailablePrefixByClaim_WithWrongParent(t *testing.T) {
129130	actual , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
130131		ParentPrefix : prefix ,
131132		PrefixLength : "/28" ,
133+ 		Metadata : & models.NetboxMetadata {
134+ 			Tenant : tenantName ,
135+ 		},
132136	})
133137	assert .Nil (t , actual )
134138	assert .EqualError (t , err , "parent prefix not found" )
@@ -196,6 +200,9 @@ func TestPrefixClaim_GetBestFitPrefixByClaim(t *testing.T) {
196200	actual , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
197201		ParentPrefix : parentPrefix ,
198202		PrefixLength : "/28" ,
203+ 		Metadata : & models.NetboxMetadata {
204+ 			Tenant : tenantName ,
205+ 		},
199206	})
200207
201208	assert .Nil (t , err )
@@ -272,6 +279,9 @@ func TestPrefixClaim_GetBestFitPrefixByClaimNoAvailablePrefixMatchesSize(t *test
272279	actual , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
273280		ParentPrefix : parentPrefix ,
274281		PrefixLength : "/28" ,
282+ 		Metadata : & models.NetboxMetadata {
283+ 			Tenant : tenantName ,
284+ 		},
275285	})
276286
277287	assert .Nil (t , err )
@@ -340,6 +350,9 @@ func TestPrefixClaim_GetBestFitPrefixByClaimNoAvailablePrefixMatchesSizeCriteria
340350	_ , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
341351		ParentPrefix : parentPrefix ,
342352		PrefixLength : "/28" ,
353+ 		Metadata : & models.NetboxMetadata {
354+ 			Tenant : tenantName ,
355+ 		},
343356	})
344357
345358	assert .True (t , errors .Is (err , ErrNoPrefixMatchsSizeCriteria ))
@@ -415,6 +428,9 @@ func TestPrefixClaim_GetBestFitPrefixByClaimInvalidFormatFromNetbox(t *testing.T
415428	actual , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
416429		ParentPrefix : parentPrefix ,
417430		PrefixLength : "/28" ,
431+ 		Metadata : & models.NetboxMetadata {
432+ 			Tenant : tenantName ,
433+ 		},
418434	})
419435
420436	assert .Nil (t , err )
@@ -483,7 +499,92 @@ func TestPrefixClaim_GetBestFitPrefixByClaimInvalidPrefixClaim(t *testing.T) {
483499	_ , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
484500		ParentPrefix : parentPrefix ,
485501		PrefixLength : "/28." ,
502+ 		Metadata : & models.NetboxMetadata {
503+ 			Tenant : tenantName ,
504+ 		},
486505	})
487506
488507	assert .True (t , errors .Is (err , strconv .ErrSyntax ))
489508}
509+ 
510+ func  TestPrefixClaim_GetNoAvailablePrefixesWithNonExistingTenant (t  * testing.T ) {
511+ 	ctrl  :=  gomock .NewController (t )
512+ 	defer  ctrl .Finish ()
513+ 
514+ 	mockTenancy  :=  mock_interfaces .NewMockTenancyInterface (ctrl )
515+ 
516+ 	// non-existing tenant 
517+ 	tenantName  :=  "non-existing-tenant" 
518+ 
519+ 	inputTenant  :=  tenancy .NewTenancyTenantsListParams ().WithName (& tenantName )
520+ 
521+ 	// expected error 
522+ 	expectedErrorMsg  :=  "failed to fetch tenant: not found" 
523+ 
524+ 	// empty tenant list 
525+ 	emptyTenantList  :=  & tenancy.TenancyTenantsListOK {
526+ 		Payload : & tenancy.TenancyTenantsListOKBody {
527+ 			Results : []* netboxModels.Tenant {},
528+ 		},
529+ 	}
530+ 
531+ 	parentPrefix  :=  "10.112.140.0/24" 
532+ 
533+ 	mockTenancy .EXPECT ().TenancyTenantsList (inputTenant , nil ).Return (emptyTenantList , nil ).AnyTimes ()
534+ 
535+ 	netboxClient  :=  & NetboxClient {
536+ 		Tenancy : mockTenancy ,
537+ 	}
538+ 
539+ 	prefix , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
540+ 		ParentPrefix : parentPrefix ,
541+ 		PrefixLength : "/28." ,
542+ 		Metadata : & models.NetboxMetadata {
543+ 			Tenant : tenantName ,
544+ 		},
545+ 	})
546+ 
547+ 	assert .EqualErrorf (t , err , expectedErrorMsg , "Error should be: %v, got: %v" , expectedErrorMsg , err )
548+ 	assert .Equal (t , prefix , (* models .Prefix )(nil ))
549+ }
550+ 
551+ func  TestPrefixClaim_GetNoAvailablePrefixesWithErrorWhenGettingTenantList (t  * testing.T ) {
552+ 	ctrl  :=  gomock .NewController (t )
553+ 	defer  ctrl .Finish ()
554+ 
555+ 	mockTenancy  :=  mock_interfaces .NewMockTenancyInterface (ctrl )
556+ 
557+ 	// non-existing tenant 
558+ 	tenantName  :=  "non-existing tenant" 
559+ 
560+ 	inputTenant  :=  tenancy .NewTenancyTenantsListParams ().WithName (& tenantName )
561+ 
562+ 	// expected errors 
563+ 	getTenantDetailsErrorMsg  :=  "failed to fetch Tenant details" 
564+ 	tenancyTenantsListErrorMsg  :=  "cannot get the list"  // testcase defined error 
565+ 
566+ 	parentPrefix  :=  "10.112.140.0/24" 
567+ 
568+ 	mockTenancy .EXPECT ().TenancyTenantsList (inputTenant , nil ).Return (nil , errors .New (tenancyTenantsListErrorMsg )).AnyTimes ()
569+ 
570+ 	netboxClient  :=  & NetboxClient {
571+ 		Tenancy : mockTenancy ,
572+ 	}
573+ 
574+ 	prefix , err  :=  netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
575+ 		ParentPrefix : parentPrefix ,
576+ 		PrefixLength : "/28." ,
577+ 		Metadata : & models.NetboxMetadata {
578+ 			Tenant : tenantName ,
579+ 		},
580+ 	})
581+ 
582+ 	// assert 1st level error - GetTenantDetails() 
583+ 	assert .Containsf (t , err .Error (), getTenantDetailsErrorMsg , "expected error containing %q, got %s" , getTenantDetailsErrorMsg , err )
584+ 
585+ 	// assert 2nd level error - TenanyTenantsList() 
586+ 	assert .Containsf (t , err .Error (), tenancyTenantsListErrorMsg , "expected error containing %q, got %s" , tenancyTenantsListErrorMsg , err )
587+ 
588+ 	// assert nil output 
589+ 	assert .Equal (t , prefix , (* models .Prefix )(nil ))
590+ }
0 commit comments