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 AppLogAPITests(APITestCase):
0017     def setUp(self):
0018         unique_username = f"testuser_{uuid.uuid4()}"
0019         self.user = User.objects.create_user(username=unique_username, password='testpassword')
0020         self.client.force_authenticate(user=self.user)
0021         self.url = reverse('monitor_app:applog-list')
0022         self.log_data = {
0023             'app_name': 'test_app',
0024             'instance_name': 'test_instance',
0025             'timestamp': timezone.now().isoformat(),
0026             'level': logging.INFO,
0027             'levelname': 'INFO',
0028             'message': 'This is a test log message.',
0029             'module': 'test_module',
0030             'funcname': 'test_func',
0031             'lineno': 123,
0032             'process': 456,
0033             'thread': 789,
0034         }
0035 
0036     def test_create_log(self):
0037         """
0038         Ensure we can create a new app log.
0039         """
0040         response = self.client.post(self.url, self.log_data, format='json')
0041         self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
0042         self.assertEqual(AppLog.objects.count(), 1)
0043         log = AppLog.objects.get()
0044         self.assertEqual(log.app_name, 'test_app')
0045         self.assertEqual(log.message, self.log_data['message'])
0046 
0047     def test_create_log_invalid_level(self):
0048         """
0049         Ensure we get a bad request for an invalid log level.
0050         """
0051         data = self.log_data.copy()
0052         data['level'] = 999  # Invalid level
0053         response = self.client.post(self.url, data, format='json')
0054         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
0055 
0056     def test_create_log_missing_field(self):
0057         """
0058         Ensure we get a bad request for missing a required field.
0059         """
0060         data = self.log_data.copy()
0061         del data['message']
0062         response = self.client.post(self.url, data, format='json')
0063         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)