import os
from bx_django_utils.test_utils.html_assertion import HtmlAssertionMixin, assert_html_response_snapshot
from django.conf import settings
from django.test.testcases import TestCase
from django.urls.base import reverse
from django_example import __version__
class ExampleProjectTestCase(HtmlAssertionMixin, TestCase):
def test_urls(self):
assert settings.PATH_URL == 'app_path'
assert reverse('admin:index') == '/app_path/admin/'
assert reverse('debug-view') == '/app_path/'
###############################################################################
# Test as anonymous user
with self.assertLogs('django_example') as logs:
response = self.client.get(
path='/app_path/',
secure=True,
)
self.assert_html_parts(
response,
parts=(
f'
YunoHost Django Example Project v{__version__}
',
'Django Admin',
'Log in to see more information
',
'User: | AnonymousUser |
',
'META: | |
',
),
)
self.assertEqual(
logs.output, ['INFO:django_example.views:DebugView request from user: AnonymousUser']
)
assert_html_response_snapshot(response, query_selector='#container', validate=False)
###############################################################################
# Test as SSO user
self.client.cookies['SSOwAuthUser'] = 'test'
with self.assertLogs('django_example') as logs:
response = self.client.get(
path='/app_path/',
HTTP_REMOTE_USER='test',
HTTP_AUTH_USER='test',
HTTP_AUTHORIZATION='basic dGVzdDp0ZXN0MTIz',
secure=True,
)
self.assert_html_parts(
response,
parts=(
f'YunoHost Django Example Project v{__version__}
',
'Django Admin',
'User: | test |
',
f'Process ID: | {os.getpid()} |
',
),
)
self.assertEqual(
logs.output, ['INFO:django_example.views:DebugView request from user: test']
)