async def test_static_files_support_authentication_by_route(): app = FakeApplication() app.use_authentication().add(MockNotAuthHandler()) app.use_authorization().add( AdminsPolicy()).default_policy += AuthenticatedRequirement() @app.router.get("/") async def home(): return None app.serve_files( ServeFilesOptions(get_folder_path("files"), allow_anonymous=False)) app.serve_files( ServeFilesOptions(get_folder_path("files2"), allow_anonymous=True, root_path="/login")) await app.start() await app(get_example_scope("GET", "/"), MockReceive(), MockSend()) assert app.response.status == 401 await app(get_example_scope("GET", "/lorem-ipsum.txt"), MockReceive(), MockSend()) assert app.response.status == 401 await app(get_example_scope("GET", "/login/index.html"), MockReceive(), MockSend()) assert app.response.status == 200 content = await app.response.text() assert (content == """<!DOCTYPE html> <html> <head> <title>Example.</title> <link rel="stylesheet" type="text/css" href="/styles/main.css" /> </head> <body> <h1>Lorem ipsum</h1> <p>Dolor sit amet.</p> <script src="/scripts/main.js"></script> </body> </html> """)
async def test_static_files_allow_anonymous_by_default(): app = FakeApplication() app.use_authentication().add(MockNotAuthHandler()) app.use_authorization().add( AdminsPolicy()).default_policy += AuthenticatedRequirement() @app.router.get("/") async def home(): return None app.serve_files(get_folder_path("files")) await app.start() await app(get_example_scope("GET", "/"), MockReceive(), MockSend()) assert app.response.status == 401 await app(get_example_scope("GET", "/lorem-ipsum.txt"), MockReceive(), MockSend()) assert app.response.status == 200 content = await app.response.text() assert content == "Lorem ipsum dolor sit amet\n"
async def test_static_files_support_authentication(): app = FakeApplication() app.use_authentication().add(MockNotAuthHandler()) app.use_authorization().add( AdminsPolicy()).default_policy += AuthenticatedRequirement() @app.router.get("/") async def home(): return None app.serve_files( ServeFilesOptions(get_folder_path("files"), allow_anonymous=False)) await app.start() await app(get_example_scope("GET", "/"), MockReceive(), MockSend()) assert app.response.status == 401 await app(get_example_scope("GET", "/lorem-ipsum.txt"), MockReceive(), MockSend()) assert app.response.status == 401