"""Tests for Handlers.""" import json import pytest from oto import response from owsrequest import access import application from reporting.logic import mode def test_generate_embed_src_success(client, valid_post_headers, mocker): """Test generation of embed url is successful.""" with application.app.test_request_context(): report_id = '1streport' data = { 'param_limit': 1000, 'param_vendor_id': 7123, 'param_subaccount_id': None, } mocker.spy(mode, 'generate_embed_src') mocker.patch.object( access, 'verify_grass_access', return_value=response.Response(status=200), ) handler_response = client.post( '/report/{}/embed'.format(report_id), headers=valid_post_headers, data=json.dumps(data), ) assert handler_response.status_code == 200 mode.generate_embed_src.assert_called_once_with( report_id, data, False, False ) def test_generate_embed_src_cache(client, valid_post_headers, mocker): """Test generation of embed url is successful.""" with application.app.test_request_context(): report_id = '1streport' data = { 'param_limit': 1000, 'param_vendor_id': 7123, 'param_subaccount_id': None, 'cache_for_day': True, } mocker.spy(mode, 'generate_embed_src') mocker.patch.object( access, 'verify_grass_access', return_value=response.Response(status=200), ) client.post( '/report/{}/embed'.format(report_id), headers=valid_post_headers, data=json.dumps(data), ) mode.generate_embed_src.assert_called_once_with( report_id, data, True, False ) @pytest.mark.parametrize( 'access_response_code, expected_response_code', [(403, 403), (400, 400)] ) def test_generate_embed_src_access_failure( client, valid_post_headers, mocker, access_response_code, expected_response_code, ): """Test generation of embed url is successful.""" with application.app.test_request_context(): report_id = '1streport' data = { 'param_limit': 1000, 'param_vendor_id': 7123, 'param_subaccount_id': None, } mocker.spy(mode, 'generate_embed_src') mocker.patch.object( access, 'verify_grass_access', return_value=response.Response(status=access_response_code), ) handler_response = client.post( '/report/{}/embed'.format(report_id), headers=valid_post_headers, data=json.dumps(data), ) assert handler_response.status_code == expected_response_code