"""Functional tests for GET filter_artist handler.""" from unittest.mock import Mock, patch from owsrequest import flask_request @patch('artist.handlers.flask_request.verify_grass_access', wraps=flask_request.verify_grass_access) @patch('artist.handlers.artists') def test_filter_artist_with_oa_user( mocked_artist_model, wrapped_verify_grass_access, account_id, client, valid_headers_for_oa): """OA users should be allowed to use this endpoint.""" mocked_filter_artists = Mock(return_value=True) mocked_artist_model.filter_artists = mocked_filter_artists artist_name = 'Arty McArtist' client.get( '/artists/filter?artist_name={}'.format(artist_name), headers=valid_headers_for_oa) expected_call = {'artist_name': artist_name} assert wrapped_verify_grass_access.called assert mocked_filter_artists.called assert mocked_filter_artists.call_args[1] == expected_call @patch('artist.handlers.flask_request.verify_grass_access', wraps=flask_request.verify_grass_access) @patch('artist.handlers.artists') def test_filter_artist_with_vendor_oa_user( mocked_artist_model, wrapped_verify_grass_access, account_id, client, valid_headers_for_vendor): """None OA users should have their headers authenticated.""" mocked_filter_artists = Mock(return_value=True) mocked_artist_model.filter_artists = mocked_filter_artists artist_name = 'Arty McArtist' client.get( '/artists/filter?artist_name={}'.format(artist_name), headers=valid_headers_for_vendor) expected_call = {'artist_name': artist_name} assert wrapped_verify_grass_access.called assert mocked_filter_artists.called assert mocked_filter_artists.call_args[1] == expected_call @patch('artist.handlers.flask_request.verify_grass_access', wraps=flask_request.verify_grass_access) @patch('artist.handlers.artists') def test_filter_artist_with_none( mocked_artist_model, wrapped_verify_grass_access, account_id, client): """None Grass users (microservices) should be able to call this endpoint.""" mocked_filter_artists = Mock(return_value=True) mocked_artist_model.filter_artists = mocked_filter_artists artist_name = 'Arty McArtist' client.get( '/artists/filter?artist_name={}'.format(artist_name)) expected_call = {'artist_name': artist_name} assert wrapped_verify_grass_access.called assert mocked_filter_artists.called assert mocked_filter_artists.call_args[1] == expected_call