Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-27 07:41:42

0001 from django.test import TestCase
0002 from django.urls import reverse
0003 from django.contrib.auth.models import User
0004 from django.utils import timezone
0005 from rest_framework.test import APITestCase, APIClient
0006 from rest_framework import status
0007 from monitor_app.models import SystemAgent, AppLog, Run, StfFile, Subscriber
0008 from monitor_app.serializers import AppLogSerializer
0009 from django.core.management import call_command
0010 from io import StringIO
0011 import logging
0012 import uuid
0013 import re
0014 
0015 
0016 class AppLogUITests(TestCase):
0017     def setUp(self):
0018         unique_username = f"ui_user_{uuid.uuid4()}"
0019         self.user = User.objects.create_user(username=unique_username, password='password')
0020         self.client.login(username=unique_username, password='password')
0021         now = timezone.now()
0022         AppLog.objects.create(app_name='app1', instance_name='inst1', level=logging.INFO, message='info message 1', timestamp=now, levelname='INFO', module='m', funcname='f', lineno=1, process=1, thread=1)
0023         AppLog.objects.create(app_name='app1', instance_name='inst1', level=logging.WARNING, message='warning message 1', timestamp=now, levelname='WARNING', module='m', funcname='f', lineno=1, process=1, thread=1)
0024         AppLog.objects.create(app_name='app1', instance_name='inst2', level=logging.ERROR, message='error message 1', timestamp=now, levelname='ERROR', module='m', funcname='f', lineno=1, process=1, thread=1)
0025         AppLog.objects.create(app_name='app2', instance_name='inst1', level=logging.INFO, message='info message 2', timestamp=now, levelname='INFO', module='m', funcname='f', lineno=1, process=1, thread=1)
0026 
0027     def test_log_list_view(self):
0028         response = self.client.get(reverse('monitor_app:log_list'))
0029         self.assertEqual(response.status_code, 200)
0030         html = response.content.decode()
0031         # Check for valid HTML structure
0032         self.assertIn('<html', html.lower())
0033         # DataTables template - check for table element (data loaded via AJAX)
0034         self.assertIn('<table', html.lower())
0035 
0036     def test_log_list_view_filtered(self):
0037         response = self.client.get(reverse('monitor_app:log_list') + '?app_name=app1&instance_name=inst1')
0038         self.assertEqual(response.status_code, 200)
0039         html = response.content.decode()
0040         self.assertIn('<html', html.lower())
0041         # DataTables template - check for table element (data loaded via AJAX)
0042         self.assertIn('<table', html.lower())
0043 
0044     def test_log_summary_view(self):
0045         response = self.client.get(reverse('monitor_app:log_summary'))
0046         self.assertEqual(response.status_code, 200)
0047         html = response.content.decode()
0048         self.assertIn('<html', html.lower())
0049         # Check for a table or summary block
0050         self.assertRegex(html, r'<table|<div')