"""Tests for Handlers.""" import json from unittest.mock import MagicMock from unittest.mock import patch from oto import response from promo_player import handlers from promo_player.logic import promo_player @patch('promo_player.handlers.g', spec=['log']) def test_exception_handler(mock_g): """Verify exception_Handler returns 500 status code and json payload.""" message = ( 'The server encountered an internal error ' 'and was unable to complete your request.') mock_error = MagicMock() server_response = handlers.exception_handler(mock_error) mock_g.log.exception.assert_called_with(mock_error) # assert status code is 500 assert server_response.status_code == 500 # assert json payload response_message = json.loads(server_response.data.decode()) assert response_message['message'] == message assert response_message['code'] == response.error.ERROR_CODE_INTERNAL_ERROR @patch('promo_player.handlers.g', spec=['log', 'correlation_id']) def test_get_for_frontend( mock_g, monkeypatch, fixture_client, fixture_success): """Test get the data required to render a promo player.""" monkeypatch.setattr( promo_player, 'get_for_frontend', MagicMock(return_value=fixture_success)) code = '0123456789abcdefghij' url = '/{0}'.format(code) result = fixture_client.get(url) promo_player.get_for_frontend.assert_called_with( code, mock_g.correlation_id) assert result.status_code == fixture_success.status def test_get_track_manifest_url(monkeypatch, fixture_client, fixture_success): """Test get a track manifest URL.""" monkeypatch.setattr( promo_player, 'get_track_manifest_url', MagicMock(return_value=fixture_success)) code = '0123456789abcdefghij' track_id = 1 referrer = None url = '/{0}/track/{1}/manifest'.format(code, track_id) result = fixture_client.get(url) promo_player.get_track_manifest_url.assert_called_with( code, track_id, referrer) assert result.status_code == fixture_success.status