"""Tests for models.ows_users.""" import datetime from unittest.mock import Mock from owsrequest import request as requests import pytest from disable_inactive_users import config from disable_inactive_users.models import ows_users @pytest.mark.parametrize( 'response_status_code,response_json,expected_response_message', [ # OK ( 200, {'pizza': 'party'}, {'pizza': 'party'} ), # not ok ( 404, None, None ) ] ) def test_block_user( mocker, response_status_code, response_json, expected_response_message): """Test blocking a user.""" response = Mock() response.status_code = response_status_code response.json = lambda: response_json mocker.patch.object(requests, 'process', return_value=response) ows_users_response = ows_users.block_user('auth0|55555') assert ows_users_response.message == expected_response_message assert requests.process.call_args[0][0] == config.APPLICATION_NAME assert requests.process.call_args[0][1] == 'test' assert requests.process.call_args[0][2] == 'PATCH' assert requests.process.call_args[0][3] == config.SERVICE_NAME_OWS_USERS assert requests.process.call_args[0][4] == '/auth0/users/55555' assert requests.process.call_args[1] == {'json': {'blocked': True}} @pytest.mark.parametrize( 'response_status_code,response_json,expected_response_message', [ # OK ( 200, [{'pizza': 'party'}], [{'pizza': 'party'}] ), # not ok ( 404, None, None ) ] ) def test_get_all_users( mocker, response_status_code, response_json, expected_response_message): """Test getting pages of users.""" response = Mock() response.status_code = response_status_code response.json = lambda: response_json mocker.patch.object(requests, 'process', return_value=response) ows_users_response = ows_users.get_all_inactive_users(0, 100) query = [] # query last login > 90 days from today end_date = datetime.datetime.now() + datetime.timedelta( -1 * config.INACTIVE_MAX_DAYS) query = ( 'last_login:[* TO {}]' ' AND (blocked:false OR NOT _exists_:blocked)'.format( end_date.strftime('%Y-%m-%d'))) assert ows_users_response.message == expected_response_message assert requests.process.call_args[0][0] == config.APPLICATION_NAME assert requests.process.call_args[0][1] == 'test' assert requests.process.call_args[0][2] == 'GET' assert requests.process.call_args[0][3] == config.SERVICE_NAME_OWS_USERS assert requests.process.call_args[0][4] == '/auth0/users' assert requests.process.call_args[1] == { 'params': { 'page': 0, 'per_page': 100, 'q': query}}