127 lines
3.7 KiB
Python
127 lines
3.7 KiB
Python
import pytest
|
|
from nextcloud_mcp_server.client import NextcloudClient
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_create_and_delete_user(nc_client: NextcloudClient):
|
|
userid = "testuser1"
|
|
password = "SecureTestPassword123!"
|
|
display_name = "Test User One"
|
|
email = "test1@example.com"
|
|
|
|
# Create user
|
|
await nc_client.users.create_user(
|
|
userid=userid,
|
|
password=password,
|
|
display_name=display_name,
|
|
email=email,
|
|
)
|
|
|
|
# Verify user exists
|
|
users = await nc_client.users.search_users(search=userid)
|
|
assert userid in users
|
|
|
|
user_details = await nc_client.users.get_user_details(userid)
|
|
assert user_details.id == userid
|
|
assert user_details.displayname == display_name
|
|
assert user_details.email == email
|
|
|
|
# Delete user
|
|
await nc_client.users.delete_user(userid)
|
|
|
|
# Verify user is deleted
|
|
users = await nc_client.users.search_users(search=userid)
|
|
assert userid not in users
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_update_user_field(nc_client: NextcloudClient):
|
|
userid = "testuser2"
|
|
password = "SecureTestPassword123!"
|
|
display_name = "Test User Two"
|
|
email = "test2@example.com"
|
|
|
|
await nc_client.users.create_user(
|
|
userid=userid,
|
|
password=password,
|
|
display_name=display_name,
|
|
email=email,
|
|
)
|
|
|
|
new_email = "new.test2@example.com"
|
|
await nc_client.users.update_user_field(userid, "email", new_email)
|
|
|
|
user_details = await nc_client.users.get_user_details(userid)
|
|
assert user_details.email == new_email
|
|
|
|
await nc_client.users.delete_user(userid)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_user_groups(nc_client: NextcloudClient):
|
|
userid = "testuser3"
|
|
password = "SecureTestPassword123!"
|
|
groupid = "testgroup"
|
|
|
|
await nc_client.users.create_user(userid=userid, password=password)
|
|
|
|
# Add user to group
|
|
await nc_client.users.add_user_to_group(userid, groupid)
|
|
groups = await nc_client.users.get_user_groups(userid)
|
|
assert groupid in groups
|
|
|
|
# Remove user from group
|
|
await nc_client.users.remove_user_from_group(userid, groupid)
|
|
groups = await nc_client.users.get_user_groups(userid)
|
|
assert groupid not in groups
|
|
|
|
await nc_client.users.delete_user(userid)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_user_subadmins(nc_client: NextcloudClient):
|
|
userid = "testuser4"
|
|
password = "SecureTestPassword123!"
|
|
groupid = "subadmingroup"
|
|
|
|
await nc_client.users.create_user(userid=userid, password=password)
|
|
|
|
# Promote to subadmin
|
|
await nc_client.users.promote_user_to_subadmin(userid, groupid)
|
|
subadmin_groups = await nc_client.users.get_user_subadmin_groups(userid)
|
|
assert groupid in subadmin_groups
|
|
|
|
# Demote from subadmin
|
|
await nc_client.users.demote_user_from_subadmin(userid, groupid)
|
|
subadmin_groups = await nc_client.users.get_user_subadmin_groups(userid)
|
|
assert groupid not in subadmin_groups
|
|
|
|
await nc_client.users.delete_user(userid)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_disable_enable_user(nc_client: NextcloudClient):
|
|
userid = "testuser5"
|
|
password = "SecureTestPassword123!"
|
|
|
|
await nc_client.users.create_user(userid=userid, password=password)
|
|
|
|
# Disable user
|
|
await nc_client.users.disable_user(userid)
|
|
user_details = await nc_client.users.get_user_details(userid)
|
|
assert not user_details.enabled
|
|
|
|
# Enable user
|
|
await nc_client.users.enable_user(userid)
|
|
user_details = await nc_client.users.get_user_details(userid)
|
|
assert user_details.enabled
|
|
|
|
await nc_client.users.delete_user(userid)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_editable_user_fields(nc_client: NextcloudClient):
|
|
editable_fields = await nc_client.users.get_editable_user_fields()
|
|
assert "displayname" in editable_fields
|
|
assert "email" in editable_fields
|