@@ -2954,9 +2954,7 @@ def test_from_create_model_deployment_details(self):
29542954 )
29552955
29562956
2957- # ... [Existing code in test_deployment.py] ...
2958-
2959-
2957+ @patch ("ads.aqua.app.default_signer" )
29602958class TestSingleModelParamResolution (unittest .TestCase ):
29612959 """Tests strictly for the SMM parameter resolution logic in Single Model."""
29622960
@@ -2980,15 +2978,15 @@ def setUp(self):
29802978 # Mock Container Defaults (The mandatory left-side params)
29812979 self .mock_container_item = MagicMock ()
29822980 self .mock_container_item .spec .cli_param = "--mandatory-param 1"
2983- # Mock restricted params to empty list to pass validation
2981+ # Ensure restricted params are empty by default for this mock
29842982 self .mock_container_item .spec .restricted_params = []
29852983 self .app .get_container_config_item = MagicMock (
29862984 return_value = self .mock_container_item
29872985 )
29882986
2989- @patch ("ads.aqua.app .ModelDeployment" )
2990- @patch ("ads.aqua.app .AquaModelApp" )
2991- def test_case_1_none_loads_defaults (self , mock_model_app , mock_deploy ):
2987+ @patch ("ads.aqua.modeldeployment.deployment .ModelDeployment" )
2988+ @patch ("ads.aqua.modeldeployment.deployment .AquaModelApp" )
2989+ def test_case_1_none_loads_defaults (self , mock_model_app , mock_deploy , mock_signer ):
29922990 """Case 1: User input None -> Should load SMM defaults."""
29932991 details = CreateModelDeploymentDetails (
29942992 model_id = "ocid1.model..." ,
@@ -3008,9 +3006,11 @@ def test_case_1_none_loads_defaults(self, mock_model_app, mock_deploy):
30083006 self .assertIn ("--mandatory-param 1" , final_params )
30093007 self .assertIn ("--default-param 100" , final_params )
30103008
3011- @patch ("ads.aqua.app.ModelDeployment" )
3012- @patch ("ads.aqua.app.AquaModelApp" )
3013- def test_case_2_empty_clears_defaults (self , mock_model_app , mock_deploy ):
3009+ @patch ("ads.aqua.modeldeployment.deployment.ModelDeployment" )
3010+ @patch ("ads.aqua.modeldeployment.deployment.AquaModelApp" )
3011+ def test_case_2_empty_clears_defaults (
3012+ self , mock_model_app , mock_deploy , mock_signer
3013+ ):
30143014 """Case 2: User input Empty String -> Should clear SMM defaults."""
30153015 details = CreateModelDeploymentDetails (
30163016 model_id = "ocid1.model..." ,
@@ -3030,9 +3030,11 @@ def test_case_2_empty_clears_defaults(self, mock_model_app, mock_deploy):
30303030 # SMM Default should be GONE
30313031 self .assertNotIn ("--default-param 100" , final_params )
30323032
3033- @patch ("ads.aqua.app.ModelDeployment" )
3034- @patch ("ads.aqua.app.AquaModelApp" )
3035- def test_case_3_value_overrides_defaults (self , mock_model_app , mock_deploy ):
3033+ @patch ("ads.aqua.modeldeployment.deployment.ModelDeployment" )
3034+ @patch ("ads.aqua.modeldeployment.deployment.AquaModelApp" )
3035+ def test_case_3_value_overrides_defaults (
3036+ self , mock_model_app , mock_deploy , mock_signer
3037+ ):
30363038 """Case 3: User input Value -> Should use exact value (No Merge)."""
30373039 details = CreateModelDeploymentDetails (
30383040 model_id = "ocid1.model..." ,
@@ -3053,6 +3055,35 @@ def test_case_3_value_overrides_defaults(self, mock_model_app, mock_deploy):
30533055 # SMM Default should be GONE
30543056 self .assertNotIn ("--default-param 100" , final_params )
30553057
3058+ @patch ("ads.aqua.modeldeployment.deployment.ModelDeployment" )
3059+ @patch ("ads.aqua.modeldeployment.deployment.AquaModelApp" )
3060+ def test_validation_blocks_restricted_params (
3061+ self , mock_model_app , mock_deploy , mock_signer
3062+ ):
3063+ """Test that restricted params cause error regardless of input source."""
3064+
3065+ # Setup: Override the container config for THIS test only
3066+ # We create a new mock to ensure we don't pollute other tests
3067+ restricted_mock_item = MagicMock ()
3068+ restricted_mock_item .spec .cli_param = "--mandatory 1"
3069+ restricted_mock_item .spec .restricted_params = ["--seed" ]
3070+
3071+ self .app .get_container_config_item = MagicMock (
3072+ return_value = restricted_mock_item
3073+ )
3074+
3075+ # User tries to override restricted param
3076+ details = CreateModelDeploymentDetails (
3077+ model_id = "ocid1.model..." ,
3078+ instance_shape = "VM.GPU.A10.1" ,
3079+ env_var = {"PARAMS" : "--seed 999" },
3080+ )
3081+
3082+ with self .assertRaises (AquaValueError ) as context :
3083+ self .app .create (create_deployment_details = details )
3084+
3085+ self .assertIn ("Parameters ['--seed'] are set by Aqua" , str (context .exception ))
3086+
30563087
30573088class TestMultiModelParamResolution (unittest .TestCase ):
30583089 """Tests strictly for the SMM parameter resolution logic in Multi-Model."""
0 commit comments