Spaces:
Paused
Paused
| from test.util.abstract_integration_test import AbstractPostgresTest | |
| from test.util.mock_user import mock_webui_user | |
| class TestAuths(AbstractPostgresTest): | |
| BASE_PATH = "/api/v1/auths" | |
| def setup_class(cls): | |
| super().setup_class() | |
| from open_webui.models.auths import Auths | |
| from open_webui.models.users import Users | |
| cls.users = Users | |
| cls.auths = Auths | |
| def test_get_session_user(self): | |
| with mock_webui_user(): | |
| response = self.fast_api_client.get(self.create_url("")) | |
| assert response.status_code == 200 | |
| assert response.json() == { | |
| "id": "1", | |
| "name": "John Doe", | |
| "email": "john.doe@openwebui.com", | |
| "role": "user", | |
| "profile_image_url": "/user.png", | |
| } | |
| def test_update_profile(self): | |
| from open_webui.utils.auth import get_password_hash | |
| user = self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password=get_password_hash("old_password"), | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="user", | |
| ) | |
| with mock_webui_user(id=user.id): | |
| response = self.fast_api_client.post( | |
| self.create_url("/update/profile"), | |
| json={"name": "John Doe 2", "profile_image_url": "/user2.png"}, | |
| ) | |
| assert response.status_code == 200 | |
| db_user = self.users.get_user_by_id(user.id) | |
| assert db_user.name == "John Doe 2" | |
| assert db_user.profile_image_url == "/user2.png" | |
| def test_update_password(self): | |
| from open_webui.utils.auth import get_password_hash | |
| user = self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password=get_password_hash("old_password"), | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="user", | |
| ) | |
| with mock_webui_user(id=user.id): | |
| response = self.fast_api_client.post( | |
| self.create_url("/update/password"), | |
| json={"password": "old_password", "new_password": "new_password"}, | |
| ) | |
| assert response.status_code == 200 | |
| old_auth = self.auths.authenticate_user( | |
| "john.doe@openwebui.com", "old_password" | |
| ) | |
| assert old_auth is None | |
| new_auth = self.auths.authenticate_user( | |
| "john.doe@openwebui.com", "new_password" | |
| ) | |
| assert new_auth is not None | |
| def test_signin(self): | |
| from open_webui.utils.auth import get_password_hash | |
| user = self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password=get_password_hash("password"), | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="user", | |
| ) | |
| response = self.fast_api_client.post( | |
| self.create_url("/signin"), | |
| json={"email": "john.doe@openwebui.com", "password": "password"}, | |
| ) | |
| assert response.status_code == 200 | |
| data = response.json() | |
| assert data["id"] == user.id | |
| assert data["name"] == "John Doe" | |
| assert data["email"] == "john.doe@openwebui.com" | |
| assert data["role"] == "user" | |
| assert data["profile_image_url"] == "/user.png" | |
| assert data["token"] is not None and len(data["token"]) > 0 | |
| assert data["token_type"] == "Bearer" | |
| def test_signup(self): | |
| response = self.fast_api_client.post( | |
| self.create_url("/signup"), | |
| json={ | |
| "name": "John Doe", | |
| "email": "john.doe@openwebui.com", | |
| "password": "password", | |
| }, | |
| ) | |
| assert response.status_code == 200 | |
| data = response.json() | |
| assert data["id"] is not None and len(data["id"]) > 0 | |
| assert data["name"] == "John Doe" | |
| assert data["email"] == "john.doe@openwebui.com" | |
| assert data["role"] in ["admin", "user", "pending"] | |
| assert data["profile_image_url"] == "/user.png" | |
| assert data["token"] is not None and len(data["token"]) > 0 | |
| assert data["token_type"] == "Bearer" | |
| def test_add_user(self): | |
| with mock_webui_user(): | |
| response = self.fast_api_client.post( | |
| self.create_url("/add"), | |
| json={ | |
| "name": "John Doe 2", | |
| "email": "john.doe2@openwebui.com", | |
| "password": "password2", | |
| "role": "admin", | |
| }, | |
| ) | |
| assert response.status_code == 200 | |
| data = response.json() | |
| assert data["id"] is not None and len(data["id"]) > 0 | |
| assert data["name"] == "John Doe 2" | |
| assert data["email"] == "john.doe2@openwebui.com" | |
| assert data["role"] == "admin" | |
| assert data["profile_image_url"] == "/user.png" | |
| assert data["token"] is not None and len(data["token"]) > 0 | |
| assert data["token_type"] == "Bearer" | |
| def test_get_admin_details(self): | |
| self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password="password", | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="admin", | |
| ) | |
| with mock_webui_user(): | |
| response = self.fast_api_client.get(self.create_url("/admin/details")) | |
| assert response.status_code == 200 | |
| assert response.json() == { | |
| "name": "John Doe", | |
| "email": "john.doe@openwebui.com", | |
| } | |
| def test_create_api_key_(self): | |
| user = self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password="password", | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="admin", | |
| ) | |
| with mock_webui_user(id=user.id): | |
| response = self.fast_api_client.post(self.create_url("/api_key")) | |
| assert response.status_code == 200 | |
| data = response.json() | |
| assert data["api_key"] is not None | |
| assert len(data["api_key"]) > 0 | |
| def test_delete_api_key(self): | |
| user = self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password="password", | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="admin", | |
| ) | |
| self.users.update_user_api_key_by_id(user.id, "abc") | |
| with mock_webui_user(id=user.id): | |
| response = self.fast_api_client.delete(self.create_url("/api_key")) | |
| assert response.status_code == 200 | |
| assert response.json() == True | |
| db_user = self.users.get_user_by_id(user.id) | |
| assert db_user.api_key is None | |
| def test_get_api_key(self): | |
| user = self.auths.insert_new_auth( | |
| email="john.doe@openwebui.com", | |
| password="password", | |
| name="John Doe", | |
| profile_image_url="/user.png", | |
| role="admin", | |
| ) | |
| self.users.update_user_api_key_by_id(user.id, "abc") | |
| with mock_webui_user(id=user.id): | |
| response = self.fast_api_client.get(self.create_url("/api_key")) | |
| assert response.status_code == 200 | |
| assert response.json() == {"api_key": "abc"} | |