diff options
| author | Daniel Watkins <daniel.watkins@canonical.com> | 2015-05-08 13:18:02 +0100 | 
|---|---|---|
| committer | Daniel Watkins <daniel.watkins@canonical.com> | 2015-05-08 13:18:02 +0100 | 
| commit | 84868622c404cda5efd2a753e2de30c1afca49a2 (patch) | |
| tree | c1ce4029f912def2a594548f129a7458d840e165 /tests/unittests/test_datasource | |
| parent | 9c7643c4a0dee7843963709c361b755baf843a4b (diff) | |
| download | vyos-cloud-init-84868622c404cda5efd2a753e2de30c1afca49a2.tar.gz vyos-cloud-init-84868622c404cda5efd2a753e2de30c1afca49a2.zip | |
Move our walinuxagent implementation to a single function call.
Diffstat (limited to 'tests/unittests/test_datasource')
| -rw-r--r-- | tests/unittests/test_datasource/test_azure.py | 19 | ||||
| -rw-r--r-- | tests/unittests/test_datasource/test_azure_helper.py | 56 | 
2 files changed, 66 insertions, 9 deletions
| diff --git a/tests/unittests/test_datasource/test_azure.py b/tests/unittests/test_datasource/test_azure.py index ee7109e1..983be4cd 100644 --- a/tests/unittests/test_datasource/test_azure.py +++ b/tests/unittests/test_datasource/test_azure.py @@ -122,11 +122,10 @@ class TestAzureDataSource(TestCase):          mod = DataSourceAzure          mod.BUILTIN_DS_CONFIG['data_dir'] = self.waagent_d -        fake_shim = mock.MagicMock() -        fake_shim().register_with_azure_and_fetch_data.return_value = { +        self.get_metadata_from_fabric = mock.MagicMock(return_value={              'instance-id': 'i-my-azure-id',              'public-keys': [], -        } +        })          self.apply_patches([              (mod, 'list_possible_azure_ds_devs', dsdevs), @@ -137,7 +136,7 @@ class TestAzureDataSource(TestCase):              (mod, 'perform_hostname_bounce', mock.MagicMock()),              (mod, 'get_hostname', mock.MagicMock()),              (mod, 'set_hostname', mock.MagicMock()), -            (mod, 'WALinuxAgentShim', fake_shim), +            (mod, 'get_metadata_from_fabric', self.get_metadata_from_fabric),          ])          dsrc = mod.DataSourceAzureNet( @@ -388,6 +387,18 @@ class TestAzureDataSource(TestCase):          self.assertEqual(new_ovfenv,              load_file(os.path.join(self.waagent_d, 'ovf-env.xml'))) +    def test_exception_fetching_fabric_data_doesnt_propagate(self): +        ds = self._get_ds({'ovfcontent': construct_valid_ovf_env()}) +        self.get_metadata_from_fabric.side_effect = Exception +        self.assertFalse(ds.get_data()) + +    def test_fabric_data_included_in_metadata(self): +        ds = self._get_ds({'ovfcontent': construct_valid_ovf_env()}) +        self.get_metadata_from_fabric.return_value = {'test': 'value'} +        ret = ds.get_data() +        self.assertTrue(ret) +        self.assertEqual('value', ds.metadata['test']) +  class TestAzureBounce(TestCase): diff --git a/tests/unittests/test_datasource/test_azure_helper.py b/tests/unittests/test_datasource/test_azure_helper.py index 398a9007..5fac2ade 100644 --- a/tests/unittests/test_datasource/test_azure_helper.py +++ b/tests/unittests/test_datasource/test_azure_helper.py @@ -296,6 +296,14 @@ class TestOpenSSLManager(TestCase):          manager = azure_helper.OpenSSLManager()          self.assertEqual(manager.tmpdir, subp_directory['path']) +    @mock.patch.object(azure_helper, 'cd', mock.MagicMock()) +    @mock.patch.object(azure_helper.tempfile, 'mkdtemp', mock.MagicMock()) +    @mock.patch.object(azure_helper.util, 'del_dir') +    def test_clean_up(self, del_dir): +        manager = azure_helper.OpenSSLManager() +        manager.clean_up() +        self.assertEqual([mock.call(manager.tmpdir)], del_dir.call_args_list) +  class TestWALinuxAgentShim(TestCase): @@ -318,11 +326,10 @@ class TestWALinuxAgentShim(TestCase):      def test_http_client_uses_certificate(self):          shim = azure_helper.WALinuxAgentShim() +        shim.register_with_azure_and_fetch_data()          self.assertEqual(              [mock.call(self.OpenSSLManager.return_value.certificate)],              self.AzureEndpointHttpClient.call_args_list) -        self.assertEqual(self.AzureEndpointHttpClient.return_value, -                         shim.http_client)      def test_correct_url_used_for_goalstate(self):          self.find_endpoint.return_value = 'test_endpoint' @@ -333,7 +340,8 @@ class TestWALinuxAgentShim(TestCase):              [mock.call('http://test_endpoint/machine/?comp=goalstate')],              get.call_args_list)          self.assertEqual( -            [mock.call(get.return_value.contents, shim.http_client)], +            [mock.call(get.return_value.contents, +                       self.AzureEndpointHttpClient.return_value)],              self.GoalState.call_args_list)      def test_certificates_used_to_determine_public_keys(self): @@ -368,7 +376,7 @@ class TestWALinuxAgentShim(TestCase):          expected_url = 'http://test_endpoint/machine?comp=health'          self.assertEqual(              [mock.call(expected_url, data=mock.ANY, extra_headers=mock.ANY)], -            shim.http_client.post.call_args_list) +            self.AzureEndpointHttpClient.return_value.post.call_args_list)      def test_goal_state_values_used_for_report_ready(self):          self.GoalState.return_value.incarnation = 'TestIncarnation' @@ -376,7 +384,45 @@ class TestWALinuxAgentShim(TestCase):          self.GoalState.return_value.instance_id = 'TestInstanceId'          shim = azure_helper.WALinuxAgentShim()          shim.register_with_azure_and_fetch_data() -        posted_document = shim.http_client.post.call_args[1]['data'] +        posted_document = ( +            self.AzureEndpointHttpClient.return_value.post.call_args[1]['data'] +        )          self.assertIn('TestIncarnation', posted_document)          self.assertIn('TestContainerId', posted_document)          self.assertIn('TestInstanceId', posted_document) + +    def test_clean_up_can_be_called_at_any_time(self): +        shim = azure_helper.WALinuxAgentShim() +        shim.clean_up() + +    def test_clean_up_will_clean_up_openssl_manager_if_instantiated(self): +        shim = azure_helper.WALinuxAgentShim() +        shim.register_with_azure_and_fetch_data() +        shim.clean_up() +        self.assertEqual( +            1, self.OpenSSLManager.return_value.clean_up.call_count) + + +class TestGetMetadataFromFabric(TestCase): + +    @mock.patch.object(azure_helper, 'WALinuxAgentShim') +    def test_data_from_shim_returned(self, shim): +        ret = azure_helper.get_metadata_from_fabric() +        self.assertEqual( +            shim.return_value.register_with_azure_and_fetch_data.return_value, +            ret) + +    @mock.patch.object(azure_helper, 'WALinuxAgentShim') +    def test_success_calls_clean_up(self, shim): +        azure_helper.get_metadata_from_fabric() +        self.assertEqual(1, shim.return_value.clean_up.call_count) + +    @mock.patch.object(azure_helper, 'WALinuxAgentShim') +    def test_failure_in_registration_calls_clean_up(self, shim): +        class SentinelException(Exception): +            pass +        shim.return_value.register_with_azure_and_fetch_data.side_effect = ( +            SentinelException) +        self.assertRaises(SentinelException, +                          azure_helper.get_metadata_from_fabric) +        self.assertEqual(1, shim.return_value.clean_up.call_count) | 
