File indexing completed on 2026-04-27 07:41:43
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 SystemAgentAPITests(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.agent = SystemAgent.objects.create(instance_name='test_agent', agent_type='test', status='OK')
0022
0023 def test_list_agents(self):
0024 url = reverse('monitor_app:systemagent-list')
0025 response = self.client.get(url)
0026 self.assertEqual(response.status_code, status.HTTP_200_OK)
0027
0028 def test_create_agent(self):
0029 url = reverse('monitor_app:systemagent-list')
0030 data = {'instance_name': 'new_agent', 'agent_type': 'test', 'status': 'OK'}
0031 response = self.client.post(url, data, format='json')
0032 self.assertEqual(response.status_code, status.HTTP_201_CREATED)
0033
0034 def test_partial_update_agent(self):
0035 url = reverse('monitor_app:systemagent-detail', kwargs={'pk': self.agent.pk})
0036 data = {'status': 'ERROR'}
0037 response = self.client.patch(url, data, format='json')
0038 self.assertEqual(response.status_code, status.HTTP_200_OK)
0039 self.agent.refresh_from_db()
0040 self.assertEqual(self.agent.status, 'ERROR')
0041
0042 def test_delete_agent(self):
0043 url = reverse('monitor_app:systemagent-detail', kwargs={'pk': self.agent.pk})
0044 response = self.client.delete(url)
0045 self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
0046 self.assertFalse(SystemAgent.objects.filter(pk=self.agent.pk).exists())
0047
0048 def test_create_agent_bad_data(self):
0049 url = reverse('monitor_app:systemagent-list')
0050 data = {'instance_name': 'new_agent'}
0051 response = self.client.post(url, data, format='json')
0052 self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
0053
0054 def test_update_non_existent_agent(self):
0055 url = reverse('monitor_app:systemagent-detail', kwargs={'pk': 999})
0056 data = {'status': 'ERROR'}
0057 response = self.client.patch(url, data, format='json')
0058 self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
0059
0060 def test_delete_non_existent_agent(self):
0061 url = reverse('monitor_app:systemagent-detail', kwargs={'pk': 999})
0062 response = self.client.delete(url)
0063 self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)