diff --git a/awx_collection/plugins/modules/tower_user.py b/awx_collection/plugins/modules/tower_user.py index 8f32c42666..b57266dbc0 100644 --- a/awx_collection/plugins/modules/tower_user.py +++ b/awx_collection/plugins/modules/tower_user.py @@ -149,19 +149,19 @@ def main(): # Create the data that gets sent for create and update new_fields = {} - if username: + if username is not None: new_fields['username'] = module.get_item_name(existing_item) if existing_item else username - if first_name: + if first_name is not None: new_fields['first_name'] = first_name - if last_name: + if last_name is not None: new_fields['last_name'] = last_name - if email: + if email is not None: new_fields['email'] = email - if is_superuser: + if is_superuser is not None: new_fields['is_superuser'] = is_superuser - if is_system_auditor: + if is_system_auditor is not None: new_fields['is_system_auditor'] = is_system_auditor - if password: + if password is not None: new_fields['password'] = password # If the state was present and we can let the module build or update the existing item, this will return on its own diff --git a/awx_collection/test/awx/test_user.py b/awx_collection/test/awx/test_user.py index 6c49f04121..6a0dfa123d 100644 --- a/awx_collection/test/awx/test_user.py +++ b/awx_collection/test/awx/test_user.py @@ -57,3 +57,23 @@ def test_update_password_on_create(run_module, admin_user, mock_auth_stuff): assert not result.get('failed', False), result.get('msg', result) assert not result.get('changed') + + +@pytest.mark.django_db +def test_update_user(run_module, admin_user, mock_auth_stuff): + result = run_module('tower_user', dict( + username='Bob', + password='pass4word', + is_system_auditor=True + ), admin_user) + assert not result.get('failed', False), result.get('msg', result) + assert result.get('changed'), result + + update_result = run_module('tower_user', dict( + username='Bob', + is_system_auditor=False + ), admin_user) + + assert update_result.get('changed') + user = User.objects.get(id=result['id']) + assert not user.is_system_auditor