"""Functional tests for GET artists handler.""" from oto import response from owsrequest import flask_request from artist.models import account from tests.testutils import db ERROR_CODE_AUTHORIZATION = 'authorization_error' ERROR_MESSAGE_FORBIDDEN_USER = 'User is forbidden' @db.test_schema def test_fetch_artists_success(client): """Test that a request is successful.""" res = client.get('/vendor/123/artists') assert res.status_code == 200 @db.test_schema def test_artists_bad_request(client): """Test that a request is returning 404 when not vendor id is provided.""" res = client.get('/vendor//artists') assert res.status_code == 404 @db.test_schema def test_artists_wrong_account_type(client): """Test that a request is returning 400 when account_type isn't correct.""" res = client.get('/label/123/artists') assert res.status_code == 400 @db.test_schema def test_fetch_subaccount_artist_as_vendor_success( mocker, client, valid_headers_for_vendor, account_id): """Test request for subaccount artists is successful as vendor.""" mocker.patch.object( account, 'get_subaccount', return_value=response.Response(message={'vendor_id': account_id})) mocker.patch.object( flask_request, 'verify_grass_access', return_value=response.Response()) mocker.patch.object( account, 'get_vendor_id_for_subaccount_id', return_value=response.Response()) res = client.get( '/subaccount/123/artists', headers=valid_headers_for_vendor) assert res.status_code == 200 @db.test_schema def test_fetch_subaccount_artist_as_vendor_no_access( mocker, client, valid_headers_for_vendor, account_id): """Test request for subaccount artists with no access.""" mocker.patch.object( account, 'get_subaccount', return_value=response.Response(message={'vendor_id': account_id})) mocker.patch.object( flask_request, 'verify_grass_access', return_value=response.create_error_response( code=ERROR_CODE_AUTHORIZATION, message=ERROR_MESSAGE_FORBIDDEN_USER, status=403)) res = client.get( '/subaccount/123/artists', headers=valid_headers_for_vendor) assert res.status_code == 403 @db.test_schema def test_fetch_subaccount_artist_as_vendor_fetch_artists_fatal( mocker, client, valid_headers_for_vendor, account_id): """Test request for subaccount artists with no access.""" mocker.patch.object( account, 'get_subaccount', return_value=response.Response(message={'vendor_id': account_id})) mocker.patch.object( flask_request, 'verify_grass_access', return_value=response.Response()) mocker.patch.object( account, 'get_vendor_id_for_subaccount_id', return_value=response.create_fatal_response(message='foo')) res = client.get( '/subaccount/123/artists', headers=valid_headers_for_vendor) assert res.status_code == 500