"""Test Report Run Status endpoint.""" import json import time from unittest.mock import MagicMock import requests from oto.response import Response from reporting.logic import mode def test_report_run_status_not_found(client): """Test report run handler not found case.""" report_token = 'XXXXXXX' report_run_token = 'YYYYYYY' result = client.get( '/report/{report_token}/report_run/{report_run_token}'.format( report_token=report_token, report_run_token=report_run_token ) ) assert result.status_code == 404 def test_report_run_status_succeeded(mocker, client, mode_run_state_succeeded): """Test report run handler success cases.""" report_token = 'f335d980d5bc' report_run_token = 'f335d980d5bc' mode_response = MagicMock( status_code=200, json=lambda: mode_run_state_succeeded ) mocker.patch.object(requests, 'get', return_value=mode_response) mock_timestamp = int(time.time()) mocker.patch.object(time, 'time', return_value=mock_timestamp) expected_report_data = {'name': 'Retailer View', 'content': []} mocker.patch.object( mode, 'get_report_data', return_value=Response(status=200, message=expected_report_data), ) result = client.get( '/report/{report_token}/report_run/{report_run_token}'.format( report_token=report_token, report_run_token=report_run_token ) ) assert result.status_code == 200 result_data = json.loads(result.data.decode()) assert result_data == {'report_data': expected_report_data} def test_report_run_status_enqueuing(mocker, client, mode_run_state_enqueuing): """Test report run handler is not yet ready.""" report_token = 'f335d980d5bc' report_run_token = 'f335d980d5bc' mode_response = MagicMock( status_code=200, json=lambda: mode_run_state_enqueuing ) mocker.patch.object(requests, 'get', return_value=mode_response) result = client.get( '/report/{report_token}/report_run/{report_run_token}'.format( report_token=report_token, report_run_token=report_run_token ) ) assert result.status_code == 204