def test_params_plumbing_empty(self, MockProcessor): # Set up mock context manager to return self. mock = MockProcessor.return_value mock.__enter__.return_value = mock mock.results = [] params = MultiDict({ 'uploader': 'blade-runner', 'id': '654321', }) with self.assertLogs(): process_report('12345', params) mock.assert_has_calls([ call.update_status('654321', 'WPTFYI_PROCESSING', None, None), call.download([], [], None), call.update_status('654321', 'EMPTY', None, None), ]) mock.create_run.assert_not_called()
def test_params_plumbing_success(self, MockProcessor): # Set up mock context manager to return self. mock = MockProcessor.return_value mock.__enter__.return_value = mock mock.check_existing_run.return_value = False mock.results = ['/tmp/wpt_report.json.gz'] mock.raw_results_url = 'https://wpt.fyi/test/report.json' mock.results_url = 'https://wpt.fyi/test' mock.test_run_id = 654321 # NOTE: if you need to change the following params, you probably also # want to change api/receiver/api.go. params = MultiDict({ 'uploader': 'blade-runner', 'id': '654321', 'callback_url': 'https://test.wpt.fyi/api', 'labels': 'foo,bar', 'results': 'https://wpt.fyi/wpt_report.json.gz', 'browser_name': 'Chrome', 'browser_version': '70', 'os_name': 'Linux', 'os_version': '5.0', 'revision': '21917b36553562d21c14fe086756a57cbe8a381b', }) process_report('12345', params) mock.assert_has_calls([ call.update_status('654321', 'WPTFYI_PROCESSING', None, 'https://test.wpt.fyi/api'), call.download(['https://wpt.fyi/wpt_report.json.gz'], [], None), ]) mock.report.update_metadata.assert_called_once_with( revision='21917b36553562d21c14fe086756a57cbe8a381b', browser_name='Chrome', browser_version='70', os_name='Linux', os_version='5.0') mock.create_run.assert_called_once_with('654321', 'foo,bar', 'blade-runner', 'https://test.wpt.fyi/api')
def test_params_plumbing_error(self, MockProcessor): # Set up mock context manager to return self. mock = MockProcessor.return_value mock.__enter__.return_value = mock mock.results = ['/tmp/wpt_report.json.gz'] mock.load_report.side_effect = wptreport.InvalidJSONError params = MultiDict({ 'uploader': 'blade-runner', 'id': '654321', 'results': 'https://wpt.fyi/wpt_report.json.gz', }) # Suppress print_exception. with patch('traceback.print_exception'): process_report('12345', params) mock.assert_has_calls([ call.update_status('654321', 'WPTFYI_PROCESSING', None, None), call.download(['https://wpt.fyi/wpt_report.json.gz'], [], None), call.load_report(), call.update_status( '654321', 'INVALID', "Invalid JSON (['https://wpt.fyi/wpt_report.json.gz'])", None), ]) mock.create_run.assert_not_called()
def it_requires_a_matching_token_to_post(api): utils.tweet("Bad Message", token="invalid") expect(api.mock_calls) == [] utils.tweet("Good Message", token="my_token") expect(api.mock_calls) == [call.update_status(status='Good Message')]