mybuddy/babybuddy/tests/tests_reverse_proxy_auth.py

32 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
from django.core.management import call_command
from django.test import Client as HttpClient, TestCase, modify_settings
class ReverseProxyAuthTestCase(TestCase):
"""
Notes:
- A class method cannot be used to establish the HTTP client because of the
settings overrides required for these tests.
- Overriding the `REVERSE_PROXY_AUTH` environment variable directly is not
possible because environments variables are only evaluated once for the run.
"""
def test_remote_user_authentication_disabled(self):
call_command("migrate", verbosity=0)
c = HttpClient()
response = c.get("/welcome/", HTTP_REMOTE_USER="admin", follow=True)
self.assertRedirects(response, "/login/?next=/welcome/")
@modify_settings(
MIDDLEWARE={"append": "babybuddy.middleware.CustomRemoteUser"},
AUTHENTICATION_BACKENDS={
"append": "django.contrib.auth.backends.RemoteUserBackend"
},
)
def test_remote_user_authentication_enabled(self):
call_command("migrate", verbosity=0)
c = HttpClient()
response = c.get("/welcome/", HTTP_REMOTE_USER="admin")
self.assertEqual(response.status_code, 200)