def test_database_url_repr(): u = DatabaseURL("postgresql://localhost/name") assert repr(u) == "DatabaseURL('postgresql://localhost/name')" u = DatabaseURL("postgresql://username@localhost/name") assert repr(u) == "DatabaseURL('postgresql://username@localhost/name')" u = DatabaseURL("postgresql://*****:*****@localhost/name") assert repr(u) == "DatabaseURL('postgresql://*****:*****@localhost/name')"
def test_database_url_properties(): u = DatabaseURL("postgresql+psycopg2://username:password@localhost:123/mydatabase") assert u.dialect == "postgresql" assert u.driver == "psycopg2" assert u.username == "username" assert u.password == "password" assert u.hostname == "localhost" assert u.port == 123 assert u.database == "mydatabase"
def test_replace_database_url_components(): u = DatabaseURL("postgresql://localhost/mydatabase") assert u.database == "mydatabase" new = u.replace(database="test_" + u.database) assert new.database == "test_mydatabase" assert str(new) == "postgresql://localhost/test_mydatabase" assert u.driver == "" new = u.replace(driver="pg8000") assert new.driver == "pg8000" assert str(new) == "postgresql+pg8000://localhost/mydatabase" assert u.port is None new = u.replace(port=123) assert new.port == 123 assert str(new) == "postgresql://localhost:123/mydatabase" u = DatabaseURL("sqlite:///mydatabase") assert u.database == "mydatabase" new = u.replace(database="test_" + u.database) assert new.database == "test_mydatabase" assert str(new) == "sqlite:///test_mydatabase"
import pytest from starlette_core.database import Database, DatabaseURL url = DatabaseURL("sqlite://") database = Database(url) @pytest.fixture() def db(): yield database database.truncate_all(force=True)
DEBUG = True templates = Jinja2Templates(loader=jinja2.ChoiceLoader([ jinja2.PackageLoader("starlette_admin", "templates"), jinja2.PackageLoader("starlette_audit", "templates"), ])) # config starlette_admin.config.logout_url = '/auth/logout' starlette_admin.config.templates = templates starlette_auth.config.change_pw_template = "starlette_admin/auth/change_password.html" starlette_auth.config.login_template = "starlette_admin/auth/login.html" starlette_auth.config.templates = templates url = DatabaseURL("sqlite:///example/db.sqlite3") db = Database(url) db.create_all() # create an admin site adminsite = AdminSite(name="admin", permission_scopes=[]) # register admins adminsite.register(ChildAdmin) adminsite.register(ParentAdmin) adminsite.register(AuditAdmin) # create app app = Starlette(debug=DEBUG) app.mount(path="/static",
from starlette_admin.site import AdminSite from starlette_core.database import Database, DatabaseURL from starlette_core.middleware import DatabaseMiddleware from .admin import DemoAdmin, DemoModelAdmin, SystemSettingsModelAdmin from .widgets import Today, Time, DayOfYear class DummyAuthBackend(AuthenticationBackend): async def authenticate(self, request): return AuthCredentials(["authenticated"]), SimpleUser("John Smith") DEBUG = True url = DatabaseURL("sqlite:///:memory:") db = Database(url) db.create_all() # create an admin site adminsite = AdminSite(name="admin", permission_scopes=["authenticated"]) # register admins adminsite.register(DemoAdmin) adminsite.register(DemoModelAdmin) adminsite.register(SystemSettingsModelAdmin) # register widgets adminsite.register_widget(Today()) adminsite.register_widget(Time()) adminsite.register_widget(DayOfYear())
def test_database_url_options(): u = DatabaseURL("postgresql://localhost/mydatabase?pool_size=20&ssl=true") assert u.options == {"pool_size": "20", "ssl": "true"}