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..1877d39df7 100644 --- a/awx_collection/test/awx/test_user.py +++ b/awx_collection/test/awx/test_user.py @@ -57,3 +57,24 @@ 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 =     result = run_module('tower_user', dict( +        username='Bob', +        password='pass4word', +        is_system_auditor=False +    ), admin_user) + +    assert update_result.get('changed') +    user = User.objects.get(id=result['id']) +    assert not user.is_system_auditor