@@ -556,6 +556,20 @@ public void testConnect_invalidCredentials() {
556556 "Expected the message to prompt verifying username/password but got: " + ex .getMessage ());
557557 }
558558
559+ @ Test
560+ public void testConnect_forbidden () {
561+ setupSuccessfulConnect ();
562+ Map <String , Collection <String >> emptyHeaders = Collections .emptyMap ();
563+ Request dummyReq = Request .create (Request .HttpMethod .GET , "http://test" , emptyHeaders , (byte []) null , (Charset ) null );
564+ FeignException .Forbidden forbidden = new FeignException .Forbidden ("Forbidden" , dummyReq , null );
565+ when (aggregateFeignClient .getAggregateByUUID (anyString (), eq ("aggr-uuid-1" ), anyMap ()))
566+ .thenThrow (forbidden );
567+
568+ CloudRuntimeException ex = assertThrows (CloudRuntimeException .class , () -> storageStrategy .connect ());
569+ assertEquals ("Forbidden" , ex .getMessage ());
570+ assertNull (ex .getCause ());
571+ }
572+
559573 // ========== chooseAggregate() Tests ==========
560574
561575 @ Test
@@ -649,6 +663,23 @@ public void testChooseAggregate_missingNode() {
649663 assertTrue (ex .getMessage ().contains ("does not have a node name" ));
650664 }
651665
666+ @ Test
667+ public void testChooseAggregate_forbidden () {
668+ setupSuccessfulConnect ();
669+ storageStrategy .connect ();
670+
671+ Map <String , Collection <String >> emptyHeaders = Collections .emptyMap ();
672+ Request dummyReq = Request .create (Request .HttpMethod .GET , "http://test" , emptyHeaders , (byte []) null , (Charset ) null );
673+ FeignException .Forbidden forbidden = new FeignException .Forbidden ("Forbidden" , dummyReq , null );
674+ when (aggregateFeignClient .getAggregateByUUID (anyString (), eq ("aggr-uuid-1" ), anyMap ()))
675+ .thenThrow (forbidden );
676+
677+ CloudRuntimeException ex = assertThrows (CloudRuntimeException .class ,
678+ () -> storageStrategy .chooseAggregate (5000000000L ));
679+ assertEquals ("Forbidden" , ex .getMessage ());
680+ assertNull (ex .getCause ());
681+ }
682+
652683 // ========== createStorageVolume() Tests ==========
653684
654685 @ Test
@@ -1129,6 +1160,22 @@ public void testGetNetworkInterface_feignException() {
11291160 assertTrue (ex .getMessage ().contains ("Failed to retrieve network interfaces" ));
11301161 }
11311162
1163+ @ Test
1164+ public void testGetNetworkInterface_forbidden () {
1165+ Aggregate aggregate = buildAggregate ("aggr1" , "aggr-uuid-1" , 10000000000.0 , "node-a" );
1166+
1167+ Map <String , Collection <String >> emptyHeaders = Collections .emptyMap ();
1168+ Request dummyReq = Request .create (Request .HttpMethod .GET , "http://test" , emptyHeaders , (byte []) null , (Charset ) null );
1169+ FeignException .Forbidden forbidden = new FeignException .Forbidden ("Forbidden" , dummyReq , null );
1170+ when (networkFeignClient .getNetworkIpInterfaces (anyString (), anyMap ()))
1171+ .thenThrow (forbidden );
1172+
1173+ CloudRuntimeException ex = assertThrows (CloudRuntimeException .class ,
1174+ () -> storageStrategy .getNetworkInterface (aggregate ));
1175+ assertEquals ("Forbidden" , ex .getMessage ());
1176+ assertNull (ex .getCause ());
1177+ }
1178+
11321179 // ========== getNetworkInterface() Node-Affinity Tests ==========
11331180
11341181 /**
0 commit comments