test: add tests for encryption, uptime_kuma, filename_utils, logging, and celery_worker
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,163 @@
|
||||
"""
|
||||
Tests for app/tasks/uptime_kuma_tasks.py
|
||||
|
||||
Tests Uptime Kuma health check ping functionality.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import Mock, patch, MagicMock
|
||||
import requests
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
class TestUptimeKumaTasks:
|
||||
"""Test Uptime Kuma ping task"""
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_no_url_configured(self, mock_settings):
|
||||
"""Test that task does nothing when URL is not configured"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = None
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return None and not make any requests
|
||||
assert result is None
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_success(self, mock_settings, mock_get):
|
||||
"""Test successful ping to Uptime Kuma"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = "https://uptime.example.com/ping/123"
|
||||
|
||||
# Mock successful response
|
||||
mock_response = Mock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.raise_for_status = Mock()
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return True on success
|
||||
assert result is True
|
||||
mock_get.assert_called_once_with(
|
||||
"https://uptime.example.com/ping/123", timeout=10
|
||||
)
|
||||
mock_response.raise_for_status.assert_called_once()
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_connection_error(self, mock_settings, mock_get):
|
||||
"""Test handling of connection errors"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = "https://uptime.example.com/ping/123"
|
||||
|
||||
# Mock connection error
|
||||
mock_get.side_effect = requests.exceptions.ConnectionError("Connection refused")
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return False on error
|
||||
assert result is False
|
||||
mock_get.assert_called_once()
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_timeout(self, mock_settings, mock_get):
|
||||
"""Test handling of request timeout"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = "https://uptime.example.com/ping/123"
|
||||
|
||||
# Mock timeout error
|
||||
mock_get.side_effect = requests.exceptions.Timeout("Request timed out")
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return False on timeout
|
||||
assert result is False
|
||||
mock_get.assert_called_once()
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_http_error(self, mock_settings, mock_get):
|
||||
"""Test handling of HTTP errors (4xx, 5xx)"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = "https://uptime.example.com/ping/123"
|
||||
|
||||
# Mock HTTP error
|
||||
mock_response = Mock()
|
||||
mock_response.status_code = 500
|
||||
mock_response.raise_for_status.side_effect = requests.exceptions.HTTPError(
|
||||
"500 Server Error"
|
||||
)
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return False on HTTP error
|
||||
assert result is False
|
||||
mock_get.assert_called_once()
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_generic_request_exception(self, mock_settings, mock_get):
|
||||
"""Test handling of generic request exceptions"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = "https://uptime.example.com/ping/123"
|
||||
|
||||
# Mock generic request exception
|
||||
mock_get.side_effect = requests.exceptions.RequestException("Generic error")
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return False on any request exception
|
||||
assert result is False
|
||||
mock_get.assert_called_once()
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_empty_url(self, mock_settings, mock_get):
|
||||
"""Test handling of empty URL string"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = ""
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
|
||||
# Should return None and not make any requests
|
||||
assert result is None
|
||||
mock_get.assert_not_called()
|
||||
|
||||
@patch("app.tasks.uptime_kuma_tasks.requests.get")
|
||||
@patch("app.tasks.uptime_kuma_tasks.settings")
|
||||
def test_ping_uptime_kuma_with_various_status_codes(self, mock_settings, mock_get):
|
||||
"""Test successful ping with various 2xx status codes"""
|
||||
from app.tasks.uptime_kuma_tasks import ping_uptime_kuma
|
||||
|
||||
mock_settings.uptime_kuma_url = "https://uptime.example.com/ping/123"
|
||||
|
||||
# Test with 200 OK
|
||||
mock_response = Mock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.raise_for_status = Mock()
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
result = ping_uptime_kuma()
|
||||
assert result is True
|
||||
|
||||
# Test with 204 No Content
|
||||
mock_response.status_code = 204
|
||||
result = ping_uptime_kuma()
|
||||
assert result is True
|
||||
|
||||
# Test with 202 Accepted
|
||||
mock_response.status_code = 202
|
||||
result = ping_uptime_kuma()
|
||||
assert result is True
|
||||
Reference in New Issue
Block a user