"""Functional tests for GET artists handler.""" import json from artist.constants import errors from artist.constants import headers from tests.testutils import db def test_get_release_artists_missing_account_type_vendor( client, release_id, valid_headers_for_vendor ): """Test error response when missing only account_type from headers.""" modified_header = dict(valid_headers_for_vendor) del modified_header[headers.GRASS_ACCOUNT_TYPE] result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=modified_header ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 400 assert response_json.get('code') == errors.ERROR_CODE_BAD_GRASS_REQUEST def test_get_release_artists_missing_account_id_vendor( client, release_id, valid_headers_for_vendor ): """Test error response when missing only account_id from headers.""" modified_header = dict(valid_headers_for_vendor) del modified_header[headers.GRASS_ACCOUNT_ID] result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=modified_header ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 400 assert response_json.get('code') == errors.ERROR_CODE_BAD_GRASS_REQUEST def test_get_release_artists_missing_account_type_subaccount( client, release_id, valid_headers_for_subaccount ): """Test error response when missing only account_type from headers.""" modified_header = dict(valid_headers_for_subaccount) del modified_header[headers.GRASS_ACCOUNT_TYPE] result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=modified_header ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 400 assert response_json.get('code') == errors.ERROR_CODE_BAD_GRASS_REQUEST def test_get_release_artists_missing_account_id_subaccount( client, release_id, valid_headers_for_subaccount ): """Test error response when missing only account_id from headers.""" modified_header = dict(valid_headers_for_subaccount) del modified_header[headers.GRASS_ACCOUNT_ID] result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=modified_header ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 400 assert response_json.get('code') == errors.ERROR_CODE_BAD_GRASS_REQUEST def test_get_release_artists_missing_content_type( client, release_id, valid_headers_for_vendor ): """Test error response when missing only content-type from headers.""" modified_header = dict(valid_headers_for_vendor) del modified_header[headers.CONTENT_TYPE] result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=modified_header ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 400 assert headers.CONTENT_TYPE in response_json.get('message') @db.test_schema def test_get_release_artists_without_account_headers( artist_infos, client, release_artists, release_id, track_artists, tracks, valid_headers_for_vendor ): """Test success response when account headers are missing.""" models = artist_infos models += release_artists models += tracks models += track_artists db.seed_models(models) modified_header = dict(valid_headers_for_vendor) del modified_header[headers.GRASS_ACCOUNT_ID] del modified_header[headers.GRASS_ACCOUNT_TYPE] result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=modified_header ) response_json = json.loads(result.data.decode('utf-8')) print(response_json) assert result.status_code == 200 assert response_json.get('release_artists') assert response_json.get('track_artists') @db.test_schema def test_get_release_artists_valid_headers_vendor( artist_infos, client, release_artists, release_id, track_artists, tracks, valid_headers_for_vendor ): """Test success response when account headers are missing.""" models = artist_infos models += release_artists models += tracks models += track_artists db.seed_models(models) result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=valid_headers_for_vendor ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 200 assert response_json.get('release_artists') assert response_json.get('track_artists') @db.test_schema def test_get_release_artists_valid_headers_subaccount( artist_infos, client, release_artists, release_id, track_artists, tracks, valid_headers_for_subaccount ): """Test success response when account headers are missing.""" models = artist_infos models += release_artists models += tracks models += track_artists db.seed_models(models) result = client.get( '/products/{release_id}/artists'.format(release_id=release_id), headers=valid_headers_for_subaccount ) response_json = json.loads(result.data.decode('utf-8')) assert result.status_code == 200 assert response_json.get('release_artists') assert response_json.get('track_artists')