Autoadmin: Incorporate the autoadmin app

Incorporate the external django-autoadmin app as a core app
and convert it into a Mayan app. This change adds the new
settings: "COMMON_AUTOADMIN_EMAIL", "AUTOADMIN_PASSWORD", and
"AUTOADMIN_USERNAME".

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2018-12-07 03:09:59 -04:00
parent 28a1ecb685
commit 8039dfa30a
53 changed files with 2584 additions and 30 deletions
+7
View File
@@ -0,0 +1,7 @@
from __future__ import unicode_literals
TEST_ADMIN_USER_EMAIL = 'testemail@example.com'
TEST_ADMIN_USER_PASSWORD = 'test admin user password'
TEST_ADMIN_USER_USERNAME = 'test_admin_user_username'
TEST_FIRST_TIME_LOGIN_TEXT = 'First time login'
TEST_MOCK_VIEW_TEXT = 'mock view text'
@@ -0,0 +1,28 @@
from __future__ import unicode_literals
from django.contrib.auth import get_user_model
from django.core import management
from django.test import TestCase
from mayan.apps.common.tests.utils import mute_stdout
from ..models import AutoAdminSingleton
class AutoAdminManagementCommandTestCase(TestCase):
def setUp(self):
with mute_stdout():
management.call_command('createautoadmin')
def tearDown(self):
AutoAdminSingleton.objects.all().delete()
def test_autoadmin_creation(self):
autoadmin = AutoAdminSingleton.objects.get()
user = get_user_model().objects.first()
self.assertEqual(AutoAdminSingleton.objects.count(), 1)
self.assertEqual(autoadmin.account, user)
self.assertEqual(autoadmin.account.email, user.email)
self.assertEqual(autoadmin.password_hash, user.password)
+43
View File
@@ -0,0 +1,43 @@
from __future__ import unicode_literals
import logging
from django.test import TestCase
from mayan.apps.common.tests.utils import mute_stdout
from ..models import AutoAdminSingleton
from ..settings import setting_username
from .literals import TEST_ADMIN_USER_PASSWORD
class AutoAdminHandlerTestCase(TestCase):
def test_post_admin_creation(self):
logging.disable(logging.INFO)
with mute_stdout():
AutoAdminSingleton.objects.create_autoadmin()
self.assertEqual(
AutoAdminSingleton.objects.get().account.username,
setting_username.value
)
user = AutoAdminSingleton.objects.get().account
user.set_password(TEST_ADMIN_USER_PASSWORD)
user.save(update_fields=['password'])
self.assertEqual(AutoAdminSingleton.objects.get().account, None)
def test_double_creation(self):
with mute_stdout():
AutoAdminSingleton.objects.create_autoadmin()
self.assertEqual(AutoAdminSingleton.objects.count(), 1)
logging.disable(logging.ERROR)
AutoAdminSingleton.objects.create_autoadmin()
self.assertEqual(AutoAdminSingleton.objects.count(), 1)
+45
View File
@@ -0,0 +1,45 @@
from __future__ import unicode_literals
from django.test import TestCase
from django.urls import reverse
from mayan.apps.common.settings import setting_home_view
from mayan.apps.common.tests.utils import mute_stdout
from ..models import AutoAdminSingleton
from .literals import TEST_FIRST_TIME_LOGIN_TEXT, TEST_MOCK_VIEW_TEXT
class AutoAdminViewCase(TestCase):
def setUp(self):
with mute_stdout():
AutoAdminSingleton.objects.create_autoadmin()
def _request_home_view(self):
return self.client.get(
reverse(setting_home_view.value), follow=True
)
def test_login_302_view(self):
response = self._request_home_view()
self.assertContains(
response=response, text=TEST_FIRST_TIME_LOGIN_TEXT,
status_code=200
)
def test_login_ok_view(self):
autoadmin = AutoAdminSingleton.objects.get()
logged_in = self.client.login(
username=autoadmin.account,
password=autoadmin.password
)
self.assertTrue(logged_in)
response = self._request_home_view()
self.assertNotContains(
response=response, text=TEST_MOCK_VIEW_TEXT,
status_code=200
)