def test_build_report_for_health_document(self): health_document = self._get_report_ready_health_document() reporter = azure_helper.GoalStateHealthReporter( azure_helper.GoalState(mock.MagicMock(), mock.MagicMock()), azure_helper.AzureEndpointHttpClient(mock.MagicMock()), self.test_endpoint) generated_health_document = reporter.build_report( incarnation=self.default_parameters['incarnation'], container_id=self.default_parameters['container_id'], instance_id=self.default_parameters['instance_id'], status=self.provisioning_success_status) self.assertEqual(health_document, generated_health_document) self.assertIn( '<GoalStateIncarnation>{}</GoalStateIncarnation>'.format( str(self.default_parameters['incarnation'])), generated_health_document) self.assertIn( ''.join([ '<ContainerId>', self.default_parameters['container_id'], '</ContainerId>' ]), generated_health_document) self.assertIn( ''.join([ '<InstanceId>', self.default_parameters['instance_id'], '</InstanceId>' ]), generated_health_document) self.assertIn( ''.join(['<State>', self.provisioning_success_status, '</State>']), generated_health_document) self.assertNotIn('<Details>', generated_health_document) self.assertNotIn('<SubStatus>', generated_health_document) self.assertNotIn('<Description>', generated_health_document)
def _get_goal_state(self, http_client=None, **kwargs): if http_client is None: http_client = mock.MagicMock() parameters = self.default_parameters.copy() parameters.update(kwargs) xml = GOAL_STATE_TEMPLATE.format(**parameters) if parameters['certificates_url'] is None: new_xml_lines = [] for line in xml.splitlines(): if 'Certificates' in line: continue new_xml_lines.append(line) xml = '\n'.join(new_xml_lines) return azure_helper.GoalState(xml, http_client)
def test_send_ready_signal_sends_post_request(self): with mock.patch.object(azure_helper.GoalStateHealthReporter, 'build_report') as m_build_report: client = azure_helper.AzureEndpointHttpClient(mock.MagicMock()) reporter = azure_helper.GoalStateHealthReporter( azure_helper.GoalState(mock.MagicMock(), mock.MagicMock()), client, self.test_endpoint) reporter.send_ready_signal() self.assertEqual(1, self.post.call_count) self.assertEqual( mock.call(self.test_url, data=m_build_report.return_value, extra_headers=self.test_default_headers), self.post.call_args)
def test_send_ready_signal_calls_build_report(self): with mock.patch.object(azure_helper.GoalStateHealthReporter, 'build_report') as m_build_report: reporter = azure_helper.GoalStateHealthReporter( azure_helper.GoalState(mock.MagicMock(), mock.MagicMock()), azure_helper.AzureEndpointHttpClient(mock.MagicMock()), self.test_endpoint) reporter.send_ready_signal() self.assertEqual(1, m_build_report.call_count) self.assertEqual( mock.call(incarnation=self.default_parameters['incarnation'], container_id=self.default_parameters['container_id'], instance_id=self.default_parameters['instance_id'], status=self.provisioning_success_status), m_build_report.call_args)
def test_missing_incarnation_in_goal_state_xml_raises_exc(self): xml = self._get_formatted_goal_state_xml_string() xml = re.sub('<Incarnation>.*</Incarnation>', '', xml) with self.assertRaises(azure_helper.InvalidGoalStateXMLException): azure_helper.GoalState(xml, mock.MagicMock())
def test_invalid_goal_state_xml_raises_parse_error(self): xml = 'random non-xml data' with self.assertRaises(ElementTree.ParseError): azure_helper.GoalState(xml, mock.MagicMock())
def _get_goal_state(self, m_azure_endpoint_client=None, **kwargs): if m_azure_endpoint_client is None: m_azure_endpoint_client = mock.MagicMock() xml = self._get_formatted_goal_state_xml_string(**kwargs) return azure_helper.GoalState(xml, m_azure_endpoint_client)