Merge pull request #677 from skuzzle/dev

Add the possibility to customize the remote user header name
This commit is contained in:
Jonas Winkler
2021-03-03 23:54:33 +01:00
committed by GitHub
4 changed files with 79 additions and 3 deletions

View File

@@ -0,0 +1,66 @@
from django.contrib.auth.models import User
from django.test import override_settings, Client, modify_settings, TestCase
class TestRemoteUserAuthentication(TestCase):
def test_no_remote_user_auth(self):
client = Client()
response = client.get("/api/documents/")
self.assertEqual(response.status_code, 401)
response = client.get("/api/documents/", HTTP_REMOTE_USER="someone")
self.assertEqual(response.status_code, 401)
response = client.get("/api/documents/", HTTP_X_FORWARDED_USER="someone")
self.assertEqual(response.status_code, 401)
@modify_settings(
MIDDLEWARE={
'append': 'paperless.auth.HttpRemoteUserMiddleware'
},
AUTHENTICATION_BACKENDS={
'prepend': 'django.contrib.auth.backends.RemoteUserBackend'
}
)
def test_standard_remote_user_auth(self):
client = Client()
response = client.get("/api/documents/")
self.assertEqual(response.status_code, 401)
response = client.get("/api/documents/", HTTP_X_FORWARDED_USER="someone")
self.assertEqual(response.status_code, 401)
self.assertFalse(User.objects.filter(username="someone").exists())
response = client.get("/api/documents/", HTTP_REMOTE_USER="someone")
self.assertEqual(response.status_code, 200)
self.assertTrue(User.objects.filter(username="someone").exists())
@modify_settings(
MIDDLEWARE={
'append': 'paperless.auth.HttpRemoteUserMiddleware'
},
AUTHENTICATION_BACKENDS={
'prepend': 'django.contrib.auth.backends.RemoteUserBackend'
}
)
@override_settings(HTTP_REMOTE_USER_HEADER_NAME="HTTP_X_FORWARDED_USER")
def test_custom_remote_user_auth(self):
client = Client()
response = client.get("/api/documents/")
self.assertEqual(response.status_code, 401)
response = client.get("/api/documents/", HTTP_REMOTE_USER="someone")
self.assertEqual(response.status_code, 401)
self.assertFalse(User.objects.filter(username="someone").exists())
response = client.get("/api/documents/", HTTP_X_FORWARDED_USER="someone")
self.assertEqual(response.status_code, 200)
self.assertTrue(User.objects.filter(username="someone").exists())