Spaces:
Running
Running
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"} | |