mirror of
https://github.com/sissbruecker/linkding
synced 2025-02-17 04:48:22 +00:00
47 lines
2 KiB
Python
47 lines
2 KiB
Python
|
from unittest.mock import patch, PropertyMock
|
||
|
|
||
|
from django.test import TestCase, modify_settings
|
||
|
from django.urls import reverse
|
||
|
from bookmarks.models import User
|
||
|
from bookmarks.middlewares import CustomRemoteUserMiddleware
|
||
|
|
||
|
|
||
|
class AuthProxySupportTest(TestCase):
|
||
|
# Reproducing configuration from the settings logic here
|
||
|
# ideally this test would just override the respective options
|
||
|
@modify_settings(
|
||
|
MIDDLEWARE={'append': 'bookmarks.middlewares.CustomRemoteUserMiddleware'},
|
||
|
AUTHENTICATION_BACKENDS={'prepend': 'django.contrib.auth.backends.RemoteUserBackend'}
|
||
|
)
|
||
|
def test_auth_proxy_authentication(self):
|
||
|
user = User.objects.create_user('auth_proxy_user', 'user@example.com', 'password123')
|
||
|
|
||
|
headers = {'REMOTE_USER': user.username}
|
||
|
response = self.client.get(reverse('bookmarks:index'), **headers)
|
||
|
|
||
|
self.assertEqual(response.status_code, 200)
|
||
|
|
||
|
# Reproducing configuration from the settings logic here
|
||
|
# ideally this test would just override the respective options
|
||
|
@modify_settings(
|
||
|
MIDDLEWARE={'append': 'bookmarks.middlewares.CustomRemoteUserMiddleware'},
|
||
|
AUTHENTICATION_BACKENDS={'prepend': 'django.contrib.auth.backends.RemoteUserBackend'}
|
||
|
)
|
||
|
def test_auth_proxy_with_custom_header(self):
|
||
|
with patch.object(CustomRemoteUserMiddleware, 'header', new_callable=PropertyMock) as mock:
|
||
|
mock.return_value = 'Custom-User'
|
||
|
user = User.objects.create_user('auth_proxy_user', 'user@example.com', 'password123')
|
||
|
|
||
|
headers = {'Custom-User': user.username}
|
||
|
response = self.client.get(reverse('bookmarks:index'), **headers)
|
||
|
|
||
|
self.assertEqual(response.status_code, 200)
|
||
|
|
||
|
def test_auth_proxy_is_disabled_by_default(self):
|
||
|
user = User.objects.create_user('auth_proxy_user', 'user@example.com', 'password123')
|
||
|
|
||
|
headers = {'REMOTE_USER': user.username}
|
||
|
response = self.client.get(reverse('bookmarks:index'), **headers, follow=True)
|
||
|
|
||
|
self.assertRedirects(response, '/login/?next=%2Fbookmarks')
|