"""Unit tests for request args validation.""" from flexmock import flexmock from oto import response from werkzeug import datastructures from analytics.validation import request_args_validation from analytics.validation import stores_validation def _immutable_request_args( stores='', start_date='', end_date='', isrcs='', artist_ids=''): """Return ImmutableMultiDict request args.""" return datastructures.ImmutableMultiDict([ ('stores', stores), ('to_date', end_date), ('from_date', start_date), ('isrcs', isrcs), ('artist_ids', artist_ids)]) def test_validate_request_args_when_valid(): """Test that validation returns 200 when args are valid.""" test_request_dict = { 'stores': '1,286', 'start_date': '2017-02-01', 'end_date': '2017-02-28', 'isrcs': '123ABC,456DEF', 'artist_ids': '1234,5678' } request_args = _immutable_request_args(**test_request_dict) result = request_args_validation.validate_request_args(request_args) assert result.status == 200 def test_validate_request_args_when_date_invalid(): """Test that validation returns 200 when args are valid.""" test_request_dict = { 'stores': '1,286', 'start_date': '2017-02-01', 'end_date': '2017-01-31', } request_args = _immutable_request_args(**test_request_dict) result = request_args_validation.validate_request_args(request_args) assert result.status == 400 def test_validate_request_args_when_stores_invalid(): """Test that validation returns 200 when args are valid.""" test_request_dict = { 'stores': 'abba zabba', 'start_date': '2017-02-01', 'end_date': '2017-02-28', } (flexmock(stores_validation).should_receive( 'validate_streams_stores').and_return( response.create_error_response(code='error', message='some error'))) request_args = _immutable_request_args(**test_request_dict) result = request_args_validation.validate_request_args(request_args) assert result.status == 400