| 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"} |
|
|