OpenDroneMap-WebODM/app/tests/test_external_auth.py

52 wiersze
1.8 KiB
Python

from django.contrib.auth.models import User, Group
from nodeodm.models import ProcessingNode
from rest_framework import status
from rest_framework.test import APIClient
from .classes import BootTestCase
from .utils import start_simple_auth_server
from webodm import settings
class TestAuth(BootTestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_ext_auth(self):
client = APIClient()
# Disable
settings.EXTERNAL_AUTH_ENDPOINT = ''
# Try to log-in
ok = client.login(username='extuser1', password='test1234')
self.assertFalse(ok)
# Enable
settings.EXTERNAL_AUTH_ENDPOINT = 'http://0.0.0.0:5555/auth'
with start_simple_auth_server(["5555"]):
ok = client.login(username='extuser1', password='invalid')
self.assertFalse(ok)
self.assertFalse(User.objects.filter(username="extuser1").exists())
ok = client.login(username='extuser1', password='test1234')
self.assertTrue(ok)
user = User.objects.get(username="extuser1")
self.assertEqual(user.id, 100)
self.assertEqual(user.profile.quota, 500)
pnode = ProcessingNode.objects.get(token='test')
self.assertEqual(pnode.hostname, 'localhost')
self.assertEqual(pnode.port, 4444)
self.assertTrue(user.has_perm('view_processingnode', pnode))
self.assertFalse(user.has_perm('delete_processingnode', pnode))
self.assertFalse(user.has_perm('change_processingnode', pnode))
# Re-test login
ok = client.login(username='extuser1', password='test1234')
self.assertTrue(ok)
# Check that the user has been added to the default group
self.assertTrue(user.groups.filter(name='Default').exists())