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"
예제 #4
0
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)
예제 #5
0
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",
예제 #6
0
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"}