|
12 | 12 | ) |
13 | 13 | from azext_aks_preview.custom import ( |
14 | 14 | aks_stop, |
| 15 | + aks_scale, |
| 16 | + aks_upgrade, |
| 17 | + aks_enable_addons, |
15 | 18 | ) |
16 | 19 | from azext_aks_preview.tests.latest.mocks import MockCLI, MockClient, MockCmd |
17 | 20 |
|
@@ -49,6 +52,87 @@ def test_aks_stop(self): |
49 | 52 | ) |
50 | 53 | self.assertEqual(aks_stop(self.cmd, self.client, "rg", "name", False), None) |
51 | 54 |
|
| 55 | + def test_aks_scale_with_none_agent_pool_profiles(self): |
| 56 | + """Test aks_scale handles None agent_pool_profiles gracefully""" |
| 57 | + # Test case: automatic cluster with hosted system components, no agent pools |
| 58 | + mc = self.models.ManagedCluster(location="test_location") |
| 59 | + mc.agent_pool_profiles = None # This is the key scenario |
| 60 | + mc.pod_identity_profile = None |
| 61 | + |
| 62 | + self.client.get = Mock(return_value=mc) |
| 63 | + |
| 64 | + # Should not raise NoneType error and should return without crashing |
| 65 | + try: |
| 66 | + result = aks_scale(self.cmd, self.client, "rg", "name", 3, "nodepool1") |
| 67 | + # We expect this to complete without NoneType errors |
| 68 | + except Exception as e: |
| 69 | + # Should not be a NoneType error |
| 70 | + self.assertNotIn("NoneType", str(type(e))) |
| 71 | + |
| 72 | + def test_aks_upgrade_with_none_agent_pool_profiles(self): |
| 73 | + """Test aks_upgrade handles None agent_pool_profiles gracefully""" |
| 74 | + mc = self.models.ManagedCluster(location="test_location") |
| 75 | + mc.agent_pool_profiles = None # Key test scenario |
| 76 | + mc.pod_identity_profile = None |
| 77 | + mc.kubernetes_version = "1.24.0" |
| 78 | + mc.provisioning_state = "Succeeded" |
| 79 | + mc.max_agent_pools = 10 |
| 80 | + |
| 81 | + self.client.get = Mock(return_value=mc) |
| 82 | + |
| 83 | + # Should not raise NoneType error |
| 84 | + try: |
| 85 | + result = aks_upgrade( |
| 86 | + self.cmd, self.client, "rg", "name", |
| 87 | + kubernetes_version="1.25.0", yes=True |
| 88 | + ) |
| 89 | + except Exception as e: |
| 90 | + self.assertNotIn("NoneType", str(type(e))) |
| 91 | + |
| 92 | + def test_aks_enable_addons_with_none_agent_pool_profiles(self): |
| 93 | + """Test aks_enable_addons handles None agent_pool_profiles gracefully""" |
| 94 | + mc = self.models.ManagedCluster(location="test_location") |
| 95 | + mc.agent_pool_profiles = None # Key test scenario |
| 96 | + mc.addon_profiles = {} |
| 97 | + mc.service_principal_profile = self.models.ManagedClusterServicePrincipalProfile( |
| 98 | + client_id="msi" |
| 99 | + ) |
| 100 | + mc.api_server_access_profile = None |
| 101 | + |
| 102 | + self.client.get = Mock(return_value=mc) |
| 103 | + self.client.begin_create_or_update = Mock(return_value=mc) |
| 104 | + |
| 105 | + # Should not raise NoneType error |
| 106 | + try: |
| 107 | + result = aks_enable_addons( |
| 108 | + self.cmd, self.client, "rg", "name", "monitoring", |
| 109 | + workspace_resource_id="/subscriptions/test/resourceGroups/test/providers/Microsoft.OperationalInsights/workspaces/test" |
| 110 | + ) |
| 111 | + except Exception as e: |
| 112 | + self.assertNotIn("NoneType", str(type(e))) |
| 113 | + |
| 114 | + def test_aks_enable_addons_virtual_node_with_none_agent_pool_profiles(self): |
| 115 | + """Test aks_enable_addons for virtual-node handles None agent_pool_profiles""" |
| 116 | + mc = self.models.ManagedCluster(location="test_location") |
| 117 | + mc.agent_pool_profiles = None # Key test scenario for virtual node addon |
| 118 | + mc.addon_profiles = {} |
| 119 | + mc.service_principal_profile = self.models.ManagedClusterServicePrincipalProfile( |
| 120 | + client_id="msi" |
| 121 | + ) |
| 122 | + mc.api_server_access_profile = None |
| 123 | + |
| 124 | + self.client.get = Mock(return_value=mc) |
| 125 | + self.client.begin_create_or_update = Mock(return_value=mc) |
| 126 | + |
| 127 | + # Virtual node addon should handle None agent_pool_profiles gracefully |
| 128 | + try: |
| 129 | + result = aks_enable_addons( |
| 130 | + self.cmd, self.client, "rg", "name", "virtual-node", |
| 131 | + subnet_name="test-subnet" |
| 132 | + ) |
| 133 | + except Exception as e: |
| 134 | + self.assertNotIn("NoneType", str(type(e))) |
| 135 | + |
52 | 136 |
|
53 | 137 | if __name__ == '__main__': |
54 | 138 | unittest.main() |
0 commit comments