mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-03 10:49:21 -05:00
166 lines
5.6 KiB
Python
166 lines
5.6 KiB
Python
from test.util.abstract_integration_test import AbstractPostgresTest
|
|
from test.util.mock_user import mock_webui_user
|
|
|
|
|
|
def _get_user_by_id(data, param):
|
|
return next((item for item in data if item['id'] == param), None)
|
|
|
|
|
|
def _assert_user(data, id, **kwargs):
|
|
user = _get_user_by_id(data, id)
|
|
assert user is not None
|
|
comparison_data = {
|
|
'name': f'user {id}',
|
|
'email': f'user{id}@openwebui.com',
|
|
'profile_image_url': f'/api/v1/users/{id}/profile/image',
|
|
'role': 'user',
|
|
**kwargs,
|
|
}
|
|
for key, value in comparison_data.items():
|
|
assert user[key] == value
|
|
|
|
|
|
class TestUsers(AbstractPostgresTest):
|
|
BASE_PATH = '/api/v1/users'
|
|
|
|
def setup_class(cls):
|
|
super().setup_class()
|
|
from open_webui.models.users import Users
|
|
|
|
cls.users = Users
|
|
|
|
def setup_method(self):
|
|
super().setup_method()
|
|
self.users.insert_new_user(
|
|
id='1',
|
|
name='user 1',
|
|
email='user1@openwebui.com',
|
|
profile_image_url='/user1.png',
|
|
role='user',
|
|
)
|
|
self.users.insert_new_user(
|
|
id='2',
|
|
name='user 2',
|
|
email='user2@openwebui.com',
|
|
profile_image_url='/user2.png',
|
|
role='user',
|
|
)
|
|
|
|
def test_users(self):
|
|
# Get all users
|
|
with mock_webui_user(id='3'):
|
|
response = self.fast_api_client.get(self.create_url(''))
|
|
assert response.status_code == 200
|
|
assert len(response.json()) == 2
|
|
data = response.json()
|
|
_assert_user(data, '1')
|
|
_assert_user(data, '2')
|
|
|
|
# update role
|
|
with mock_webui_user(id='3'):
|
|
response = self.fast_api_client.post(self.create_url('/update/role'), json={'id': '2', 'role': 'admin'})
|
|
assert response.status_code == 200
|
|
_assert_user([response.json()], '2', role='admin')
|
|
|
|
# Get all users
|
|
with mock_webui_user(id='3'):
|
|
response = self.fast_api_client.get(self.create_url(''))
|
|
assert response.status_code == 200
|
|
assert len(response.json()) == 2
|
|
data = response.json()
|
|
_assert_user(data, '1')
|
|
_assert_user(data, '2', role='admin')
|
|
|
|
# Get (empty) user settings
|
|
with mock_webui_user(id='2'):
|
|
response = self.fast_api_client.get(self.create_url('/user/settings'))
|
|
assert response.status_code == 200
|
|
assert response.json() is None
|
|
|
|
# Update user settings
|
|
with mock_webui_user(id='2'):
|
|
response = self.fast_api_client.post(
|
|
self.create_url('/user/settings/update'),
|
|
json={
|
|
'ui': {'attr1': 'value1', 'attr2': 'value2'},
|
|
'model_config': {'attr3': 'value3', 'attr4': 'value4'},
|
|
},
|
|
)
|
|
assert response.status_code == 200
|
|
|
|
# Get user settings
|
|
with mock_webui_user(id='2'):
|
|
response = self.fast_api_client.get(self.create_url('/user/settings'))
|
|
assert response.status_code == 200
|
|
assert response.json() == {
|
|
'ui': {'attr1': 'value1', 'attr2': 'value2'},
|
|
'model_config': {'attr3': 'value3', 'attr4': 'value4'},
|
|
}
|
|
|
|
# Get (empty) user info
|
|
with mock_webui_user(id='1'):
|
|
response = self.fast_api_client.get(self.create_url('/user/info'))
|
|
assert response.status_code == 200
|
|
assert response.json() is None
|
|
|
|
# Update user info
|
|
with mock_webui_user(id='1'):
|
|
response = self.fast_api_client.post(
|
|
self.create_url('/user/info/update'),
|
|
json={'attr1': 'value1', 'attr2': 'value2'},
|
|
)
|
|
assert response.status_code == 200
|
|
|
|
# Get user info
|
|
with mock_webui_user(id='1'):
|
|
response = self.fast_api_client.get(self.create_url('/user/info'))
|
|
assert response.status_code == 200
|
|
assert response.json() == {'attr1': 'value1', 'attr2': 'value2'}
|
|
|
|
# Get user by id
|
|
with mock_webui_user(id='1'):
|
|
response = self.fast_api_client.get(self.create_url('/2'))
|
|
assert response.status_code == 200
|
|
assert response.json() == {'name': 'user 2', 'profile_image_url': '/user2.png'}
|
|
|
|
# Update user by id
|
|
with mock_webui_user(id='1'):
|
|
response = self.fast_api_client.post(
|
|
self.create_url('/2/update'),
|
|
json={
|
|
'name': 'user 2 updated',
|
|
'email': 'user2-updated@openwebui.com',
|
|
'profile_image_url': '/user2-updated.png',
|
|
},
|
|
)
|
|
assert response.status_code == 200
|
|
|
|
# Get all users
|
|
with mock_webui_user(id='3'):
|
|
response = self.fast_api_client.get(self.create_url(''))
|
|
assert response.status_code == 200
|
|
assert len(response.json()) == 2
|
|
data = response.json()
|
|
_assert_user(data, '1')
|
|
_assert_user(
|
|
data,
|
|
'2',
|
|
role='admin',
|
|
name='user 2 updated',
|
|
email='user2-updated@openwebui.com',
|
|
profile_image_url=f'/api/v1/users/2/profile/image',
|
|
)
|
|
|
|
# Delete user by id
|
|
with mock_webui_user(id='1'):
|
|
response = self.fast_api_client.delete(self.create_url('/2'))
|
|
assert response.status_code == 200
|
|
|
|
# Get all users
|
|
with mock_webui_user(id='3'):
|
|
response = self.fast_api_client.get(self.create_url(''))
|
|
assert response.status_code == 200
|
|
assert len(response.json()) == 1
|
|
data = response.json()
|
|
_assert_user(data, '1')
|