feat: support real browser auth import
This commit is contained in:
@@ -2,7 +2,6 @@ import sys
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
from sqlalchemy import create_engine, text
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.pool import StaticPool
|
||||
@@ -10,10 +9,9 @@ from sqlalchemy.pool import StaticPool
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
|
||||
from app import database as database_module
|
||||
from app.database import Base, get_db
|
||||
from app.main import app
|
||||
from app.database import Base
|
||||
from app.models.custom_page import CustomPage
|
||||
from app.utils.auth import get_current_user
|
||||
from app.routers import custom_pages
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
@@ -33,48 +31,41 @@ def db_session():
|
||||
Base.metadata.drop_all(bind=engine)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def client(db_session):
|
||||
def override_get_db():
|
||||
yield db_session
|
||||
def test_create_page_auto_enables_autofill_when_credentials_are_saved(db_session):
|
||||
response = custom_pages.create_page(
|
||||
custom_pages.CustomPageCreate(
|
||||
name="Login page",
|
||||
url="https://example.test/login",
|
||||
access_mode="remote_browser",
|
||||
login_username="alice",
|
||||
login_password="secret",
|
||||
),
|
||||
db_session,
|
||||
object(),
|
||||
)
|
||||
|
||||
app.dependency_overrides[get_db] = override_get_db
|
||||
app.dependency_overrides[get_current_user] = lambda: object()
|
||||
try:
|
||||
yield TestClient(app)
|
||||
finally:
|
||||
app.dependency_overrides.clear()
|
||||
assert response.login_autofill_enabled is True
|
||||
assert response.login_password_configured is True
|
||||
|
||||
|
||||
def test_create_page_auto_enables_autofill_when_credentials_are_saved(client):
|
||||
response = client.post("/api/custom-pages", json={
|
||||
"name": "Login page",
|
||||
"url": "https://example.test/login",
|
||||
"access_mode": "remote_browser",
|
||||
"login_username": "alice",
|
||||
"login_password": "secret",
|
||||
})
|
||||
def test_create_page_respects_explicit_autofill_disable(db_session):
|
||||
response = custom_pages.create_page(
|
||||
custom_pages.CustomPageCreate(
|
||||
name="Login page",
|
||||
url="https://example.test/login",
|
||||
access_mode="remote_browser",
|
||||
login_username="alice",
|
||||
login_password="secret",
|
||||
login_autofill_enabled=False,
|
||||
),
|
||||
db_session,
|
||||
object(),
|
||||
)
|
||||
|
||||
assert response.status_code == 201
|
||||
assert response.json()["login_autofill_enabled"] is True
|
||||
assert response.json()["login_password_configured"] is True
|
||||
assert response.login_autofill_enabled is False
|
||||
|
||||
|
||||
def test_create_page_respects_explicit_autofill_disable(client):
|
||||
response = client.post("/api/custom-pages", json={
|
||||
"name": "Login page",
|
||||
"url": "https://example.test/login",
|
||||
"access_mode": "remote_browser",
|
||||
"login_username": "alice",
|
||||
"login_password": "secret",
|
||||
"login_autofill_enabled": False,
|
||||
})
|
||||
|
||||
assert response.status_code == 201
|
||||
assert response.json()["login_autofill_enabled"] is False
|
||||
|
||||
|
||||
def test_update_page_auto_enables_autofill_when_new_password_is_saved(client, db_session):
|
||||
def test_update_page_auto_enables_autofill_when_new_password_is_saved(db_session):
|
||||
page = CustomPage(
|
||||
name="Login page",
|
||||
url="https://example.test/login",
|
||||
@@ -87,16 +78,20 @@ def test_update_page_auto_enables_autofill_when_new_password_is_saved(client, db
|
||||
db_session.commit()
|
||||
db_session.refresh(page)
|
||||
|
||||
response = client.put(f"/api/custom-pages/{page.id}", json={
|
||||
"login_username": "alice@example.test",
|
||||
"login_password": "new-secret",
|
||||
})
|
||||
response = custom_pages.update_page(
|
||||
page.id,
|
||||
custom_pages.CustomPageUpdate(
|
||||
login_username="alice@example.test",
|
||||
login_password="new-secret",
|
||||
),
|
||||
db_session,
|
||||
object(),
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json()["login_autofill_enabled"] is True
|
||||
assert response.login_autofill_enabled is True
|
||||
|
||||
|
||||
def test_update_page_keeps_autofill_disabled_when_existing_password_is_kept(client, db_session):
|
||||
def test_update_page_keeps_autofill_disabled_when_existing_password_is_kept(db_session):
|
||||
page = CustomPage(
|
||||
name="Login page",
|
||||
url="https://example.test/login",
|
||||
@@ -109,15 +104,17 @@ def test_update_page_keeps_autofill_disabled_when_existing_password_is_kept(clie
|
||||
db_session.commit()
|
||||
db_session.refresh(page)
|
||||
|
||||
response = client.put(f"/api/custom-pages/{page.id}", json={
|
||||
"login_username": "alice@example.test",
|
||||
})
|
||||
response = custom_pages.update_page(
|
||||
page.id,
|
||||
custom_pages.CustomPageUpdate(login_username="alice@example.test"),
|
||||
db_session,
|
||||
object(),
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json()["login_autofill_enabled"] is False
|
||||
assert response.login_autofill_enabled is False
|
||||
|
||||
|
||||
def test_update_page_respects_explicit_autofill_disable(client, db_session):
|
||||
def test_update_page_respects_explicit_autofill_disable(db_session):
|
||||
page = CustomPage(
|
||||
name="Login page",
|
||||
url="https://example.test/login",
|
||||
@@ -130,13 +127,17 @@ def test_update_page_respects_explicit_autofill_disable(client, db_session):
|
||||
db_session.commit()
|
||||
db_session.refresh(page)
|
||||
|
||||
response = client.put(f"/api/custom-pages/{page.id}", json={
|
||||
"login_username": "alice@example.test",
|
||||
"login_autofill_enabled": False,
|
||||
})
|
||||
response = custom_pages.update_page(
|
||||
page.id,
|
||||
custom_pages.CustomPageUpdate(
|
||||
login_username="alice@example.test",
|
||||
login_autofill_enabled=False,
|
||||
),
|
||||
db_session,
|
||||
object(),
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json()["login_autofill_enabled"] is False
|
||||
assert response.login_autofill_enabled is False
|
||||
|
||||
|
||||
def test_custom_page_migration_backfills_autofill_once(monkeypatch):
|
||||
|
||||
Reference in New Issue
Block a user