@@ -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,112 @@ 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+ mockPrefixIpam := mock_interfaces .NewMockIpamInterface (ctrl )
514+ mockTenancy := mock_interfaces .NewMockTenancyInterface (ctrl )
515+
516+ // example of tenant
517+ tenantId := int64 (2 )
518+ tenantName := "Tenant1"
519+ tenantOutputSlug := "tenant1"
520+
521+ inputTenant := tenancy .NewTenancyTenantsListParams ().WithName (& tenantName )
522+
523+ expectedTenant := & tenancy.TenancyTenantsListOK {
524+ Payload : & tenancy.TenancyTenantsListOKBody {
525+ Results : []* netboxModels.Tenant {
526+ {
527+ ID : tenantId ,
528+ Name : & tenantName ,
529+ Slug : & tenantOutputSlug ,
530+ },
531+ },
532+ },
533+ }
534+
535+ // expected error
536+ expectedErrorMsg := "failed to fetch tenant: not found"
537+
538+ // empty tenant list
539+ emptyTenantList := & tenancy.TenancyTenantsListOK {
540+ Payload : & tenancy.TenancyTenantsListOKBody {
541+ Results : []* netboxModels.Tenant {},
542+ },
543+ }
544+
545+ // non-existing tenant
546+ nonExistingTenant := "non-existing-tenant"
547+
548+ parentPrefix := "10.112.140.0/24"
549+
550+ mockTenancy .EXPECT ().TenancyTenantsList (inputTenant , nil ).Return (expectedTenant , nil ).AnyTimes ()
551+ mockTenancy .EXPECT ().TenancyTenantsList (gomock .Not (inputTenant ), nil ).Return (emptyTenantList , nil ).AnyTimes ()
552+
553+ netboxClient := & NetboxClient {
554+ Ipam : mockPrefixIpam ,
555+ Tenancy : mockTenancy ,
556+ }
557+
558+ prefix , err := netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
559+ ParentPrefix : parentPrefix ,
560+ PrefixLength : "/28." ,
561+ Metadata : & models.NetboxMetadata {
562+ Tenant : nonExistingTenant ,
563+ },
564+ })
565+
566+ assert .EqualErrorf (t , err , expectedErrorMsg , "Error should be: %v, got: %v" , expectedErrorMsg , err )
567+ assert .Equal (t , prefix , (* models .Prefix )(nil ))
568+ }
569+
570+ func TestPrefixClaim_GetNoAvailablePrefixesWithErrorWhenGettingTenantList (t * testing.T ) {
571+ ctrl := gomock .NewController (t )
572+ defer ctrl .Finish ()
573+ mockPrefixIpam := mock_interfaces .NewMockIpamInterface (ctrl )
574+ mockTenancy := mock_interfaces .NewMockTenancyInterface (ctrl )
575+
576+ // non-existing tenant
577+ tenantName := "Tenant1"
578+
579+ inputTenant := tenancy .NewTenancyTenantsListParams ().WithName (& tenantName )
580+
581+ // expected errors
582+ getTenantDetailsErrorMsg := "failed to fetch Tenant details"
583+ tenancyTenantsListErrorMsg := "cannot get the list" // testcase defined error
584+
585+ parentPrefix := "10.112.140.0/24"
586+
587+ mockTenancy .EXPECT ().TenancyTenantsList (inputTenant , nil ).Return (nil , errors .New (tenancyTenantsListErrorMsg )).AnyTimes ()
588+
589+ netboxClient := & NetboxClient {
590+ Ipam : mockPrefixIpam ,
591+ Tenancy : mockTenancy ,
592+ }
593+
594+ prefix , err := netboxClient .GetAvailablePrefixByClaim (& models.PrefixClaim {
595+ ParentPrefix : parentPrefix ,
596+ PrefixLength : "/28." ,
597+ Metadata : & models.NetboxMetadata {
598+ Tenant : tenantName ,
599+ },
600+ })
601+
602+ // assert 1st level error - GetTenantDetails()
603+ assert .Containsf (t , err .Error (), getTenantDetailsErrorMsg , "expected error containing %q, got %s" , getTenantDetailsErrorMsg , err )
604+
605+ // assert 2nd level error - TenanyTenantsList()
606+ assert .Containsf (t , err .Error (), tenancyTenantsListErrorMsg , "expected error containing %q, got %s" , tenancyTenantsListErrorMsg , err )
607+
608+ // assert nil output
609+ assert .Equal (t , prefix , (* models .Prefix )(nil ))
610+ }
0 commit comments