From f0c5f2ba9db363f1129e7a15f218737245bd4ec7 Mon Sep 17 00:00:00 2001 From: lucasheld Date: Sat, 20 May 2023 12:43:57 +0200 Subject: [PATCH] feat: drop support for Uptime Kuma versions < 1.21.3 BREAKING CHANGE: Uptime Kuma versions < 1.21.3 are not supported in uptime-kuma-api 1.x.x --- tests/test_api_key.py | 9 +---- tests/test_docker_host.py | 7 ---- tests/test_game_list.py | 8 ----- tests/test_maintenance.py | 19 ++--------- tests/test_monitor.py | 60 ++++++++-------------------------- tests/test_settings.py | 17 +++------- tests/test_status_page.py | 9 ++--- tests/test_tag.py | 17 ++++------ tests/uptime_kuma_test_case.py | 30 ++++++++--------- uptime_kuma_api/api.py | 58 ++++++++------------------------ 10 files changed, 57 insertions(+), 177 deletions(-) diff --git a/tests/test_api_key.py b/tests/test_api_key.py index a0fdbc6..48ea269 100644 --- a/tests/test_api_key.py +++ b/tests/test_api_key.py @@ -1,17 +1,10 @@ import unittest -from packaging.version import parse as parse_version -from uptime_kuma_api import DockerType, UptimeKumaException +from uptime_kuma_api import UptimeKumaException from uptime_kuma_test_case import UptimeKumaTestCase class TestApiKey(UptimeKumaTestCase): - def setUp(self): - super(TestApiKey, self).setUp() - if parse_version(self.api.version) < parse_version("1.21"): - super(TestApiKey, self).tearDown() - self.skipTest("Unsupported in this Uptime Kuma version") - def test_api_key(self): # get empty list to make sure that future accesses will also work self.api.get_api_keys() diff --git a/tests/test_docker_host.py b/tests/test_docker_host.py index 165cd26..2b264ab 100644 --- a/tests/test_docker_host.py +++ b/tests/test_docker_host.py @@ -1,17 +1,10 @@ import unittest -from packaging.version import parse as parse_version from uptime_kuma_api import DockerType, UptimeKumaException from uptime_kuma_test_case import UptimeKumaTestCase class TestDockerHost(UptimeKumaTestCase): - def setUp(self): - super(TestDockerHost, self).setUp() - if parse_version(self.api.version) < parse_version("1.18"): - super(TestDockerHost, self).tearDown() - self.skipTest("Unsupported in this Uptime Kuma version") - def test_docker_host(self): # get empty list to make sure that future accesses will also work self.api.get_docker_hosts() diff --git a/tests/test_game_list.py b/tests/test_game_list.py index a76e318..c875cc3 100644 --- a/tests/test_game_list.py +++ b/tests/test_game_list.py @@ -1,17 +1,9 @@ import unittest -from packaging.version import parse as parse_version - from uptime_kuma_test_case import UptimeKumaTestCase class TestGameList(UptimeKumaTestCase): - def setUp(self): - super(TestGameList, self).setUp() - if parse_version(self.api.version) < parse_version("1.20"): - super(TestGameList, self).tearDown() - self.skipTest("Unsupported in this Uptime Kuma version") - def test_game_list(self): game_list = self.api.get_game_list() self.assertTrue("keys" in game_list[0]) diff --git a/tests/test_maintenance.py b/tests/test_maintenance.py index cb443e3..122026e 100644 --- a/tests/test_maintenance.py +++ b/tests/test_maintenance.py @@ -1,18 +1,10 @@ import unittest -from packaging.version import parse as parse_version - from uptime_kuma_api import UptimeKumaException, MaintenanceStrategy from uptime_kuma_test_case import UptimeKumaTestCase class TestMaintenance(UptimeKumaTestCase): - def setUp(self): - super(TestMaintenance, self).setUp() - if parse_version(self.api.version) < parse_version("1.19"): - super(TestMaintenance, self).tearDown() - self.skipTest("Unsupported in this Uptime Kuma version") - def test_maintenance(self): expected_maintenance = { "title": "maintenance 1", @@ -25,14 +17,10 @@ class TestMaintenance(UptimeKumaTestCase): "2022-12-29 22:36:00" ], "weekdays": [], - "daysOfMonth": [] + "daysOfMonth": [], + "timezoneOption": "Europe/Berlin" } - if parse_version(self.api.version) >= parse_version("1.21.2"): - expected_maintenance.update({ - "timezoneOption": "Europe/Berlin" - }) - # add maintenance r = self.api.add_maintenance(**expected_maintenance) self.assertEqual(r["msg"], "Added Successfully.") @@ -225,9 +213,6 @@ class TestMaintenance(UptimeKumaTestCase): self.do_test_maintenance_strategy(expected_maintenance) def test_maintenance_strategy_cron(self): - if parse_version(self.api.version) < parse_version("1.21.2"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_maintenance = { "title": "test", "description": "test", diff --git a/tests/test_monitor.py b/tests/test_monitor.py index 30964ab..516256f 100644 --- a/tests/test_monitor.py +++ b/tests/test_monitor.py @@ -1,5 +1,4 @@ import unittest -from packaging.version import parse as parse_version from uptime_kuma_api import UptimeKumaException, MonitorType, AuthMethod from uptime_kuma_test_case import UptimeKumaTestCase @@ -21,12 +20,9 @@ class TestMonitor(UptimeKumaTestCase): "maxretries": 0, "notificationIDList": [notification_id_1, notification_id_2], "upsideDown": False, - "url": "http://127.0.0.1" + "url": "http://127.0.0.1", + "resendInterval": 0 } - if parse_version(self.api.version) >= parse_version("1.18"): - expected_monitor.update({ - "resendInterval": 0 - }) # add monitor r = self.api.add_monitor(**expected_monitor) @@ -132,17 +128,16 @@ class TestMonitor(UptimeKumaTestCase): } self.do_test_monitor_type(expected_monitor) - if parse_version(self.api.version) >= parse_version("1.21"): - expected_monitor = { - "type": MonitorType.HTTP, - "name": "monitor 1", - "url": "http://127.0.0.1", - "authMethod": AuthMethod.MTLS, - "tlsCert": "cert", - "tlsKey": "key", - "tlsCa": "ca", - } - self.do_test_monitor_type(expected_monitor) + expected_monitor = { + "type": MonitorType.HTTP, + "name": "monitor 1", + "url": "http://127.0.0.1", + "authMethod": AuthMethod.MTLS, + "tlsCert": "cert", + "tlsKey": "key", + "tlsCa": "ca", + } + self.do_test_monitor_type(expected_monitor) def test_monitor_type_port(self): expected_monitor = { @@ -157,12 +152,9 @@ class TestMonitor(UptimeKumaTestCase): expected_monitor = { "type": MonitorType.PING, "name": "monitor 1", - "hostname": "127.0.0.1" + "hostname": "127.0.0.1", + "packetSize": 56 } - if parse_version(self.api.version) >= parse_version("1.20"): - expected_monitor.update({ - "packetSize": 56 - }) self.do_test_monitor_type(expected_monitor) def test_monitor_type_keyword(self): @@ -175,9 +167,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_grpc_keyword(self): - if parse_version(self.api.version) < parse_version("1.19"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_monitor = { "type": MonitorType.GRPC_KEYWORD, "name": "monitor 1", @@ -200,9 +189,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_docker(self): - if parse_version(self.api.version) < parse_version("1.18"): - self.skipTest("Unsupported in this Uptime Kuma version") - docker_host_id = self.add_docker_host() expected_monitor = { "type": MonitorType.DOCKER, @@ -232,9 +218,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_gamedig(self): - if parse_version(self.api.version) < parse_version("1.20"): - self.skipTest("Unsupported in this Uptime Kuma version") - game_list = self.api.get_game_list() game = game_list[0]["keys"][0] expected_monitor = { @@ -270,9 +253,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_postgres(self): - if parse_version(self.api.version) < parse_version("1.18"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_monitor = { "type": MonitorType.POSTGRES, "name": "monitor 1", @@ -282,9 +262,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_mysql(self): - if parse_version(self.api.version) < parse_version("1.19"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_monitor = { "type": MonitorType.MYSQL, "name": "monitor 1", @@ -294,9 +271,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_mongodb(self): - if parse_version(self.api.version) < parse_version("1.20"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_monitor = { "type": MonitorType.MONGODB, "name": "monitor 1", @@ -305,9 +279,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_radius(self): - if parse_version(self.api.version) < parse_version("1.18"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_monitor = { "type": MonitorType.RADIUS, "name": "monitor 1", @@ -320,9 +291,6 @@ class TestMonitor(UptimeKumaTestCase): self.do_test_monitor_type(expected_monitor) def test_monitor_type_redis(self): - if parse_version(self.api.version) < parse_version("1.20"): - self.skipTest("Unsupported in this Uptime Kuma version") - expected_monitor = { "type": MonitorType.REDIS, "name": "monitor 1", diff --git a/tests/test_settings.py b/tests/test_settings.py index c586702..9903048 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -1,6 +1,5 @@ import json import unittest -from packaging.version import parse as parse_version from uptime_kuma_test_case import UptimeKumaTestCase @@ -16,20 +15,12 @@ class TestSettings(UptimeKumaTestCase): "primaryBaseURL": "", "steamAPIKey": "", "tlsExpiryNotifyDays": [7, 14, 21], - "disableAuth": False + "disableAuth": False, + "trustProxy": False, + "serverTimezone": "Europe/Berlin", + "dnsCache": True } - if parse_version(self.api.version) >= parse_version("1.18"): - expected_settings.update({ - "trustProxy": False - }) - - if parse_version(self.api.version) >= parse_version("1.19"): - expected_settings.update({ - "serverTimezone": "Europe/Berlin", - "dnsCache": True, - }) - # set settings r = self.api.set_settings(self.password, **expected_settings) self.assertEqual(r["msg"], "Saved") diff --git a/tests/test_status_page.py b/tests/test_status_page.py index 305a6a8..1464942 100644 --- a/tests/test_status_page.py +++ b/tests/test_status_page.py @@ -1,7 +1,5 @@ import unittest -from packaging.version import parse as parse_version - from uptime_kuma_api import UptimeKumaException, IncidentStyle from uptime_kuma_test_case import UptimeKumaTestCase @@ -36,12 +34,9 @@ class TestStatusPage(UptimeKumaTestCase): } ] } - ] + ], + "googleAnalyticsId": "" } - if parse_version(self.api.version) >= parse_version("1.20"): - expected_status_page.update({ - "googleAnalyticsId": "" - }) # add status page r = self.api.add_status_page(slug, expected_status_page["title"]) diff --git a/tests/test_tag.py b/tests/test_tag.py index 1a93ea7..5b6b8bf 100644 --- a/tests/test_tag.py +++ b/tests/test_tag.py @@ -1,7 +1,5 @@ import unittest -from packaging.version import parse as parse_version - from uptime_kuma_api import UptimeKumaException from uptime_kuma_test_case import UptimeKumaTestCase @@ -28,14 +26,13 @@ class TestTag(UptimeKumaTestCase): self.assertIsNotNone(tag) self.compare(tag, expected_tag) - if parse_version(self.api.version) >= parse_version("1.20"): - # edit tag - expected_tag["name"] = "tag 1 new" - expected_tag["color"] = "#000000" - r = self.api.edit_tag(tag_id, **expected_tag) - self.assertEqual(r["msg"], "Saved") - tag = self.api.get_tag(tag_id) - self.compare(tag, expected_tag) + # edit tag + expected_tag["name"] = "tag 1 new" + expected_tag["color"] = "#000000" + r = self.api.edit_tag(tag_id, **expected_tag) + self.assertEqual(r["msg"], "Saved") + tag = self.api.get_tag(tag_id) + self.compare(tag, expected_tag) # delete tag r = self.api.delete_tag(tag_id) diff --git a/tests/uptime_kuma_test_case.py b/tests/uptime_kuma_test_case.py index 430ec05..6b005cb 100644 --- a/tests/uptime_kuma_test_case.py +++ b/tests/uptime_kuma_test_case.py @@ -1,8 +1,7 @@ import unittest import warnings -from packaging.version import parse as parse_version -from uptime_kuma_api import UptimeKumaApi, MonitorType, DockerType, UptimeKumaException +from uptime_kuma_api import UptimeKumaApi, MonitorType, DockerType token = None @@ -74,23 +73,20 @@ class UptimeKumaTestCase(unittest.TestCase): for status_page in status_pages: self.api.delete_status_page(status_page["slug"]) - if parse_version(self.api.version) >= parse_version("1.18"): - # delete docker hosts - docker_hosts = self.api.get_docker_hosts() - for docker_host in docker_hosts: - self.api.delete_docker_host(docker_host["id"]) + # delete docker hosts + docker_hosts = self.api.get_docker_hosts() + for docker_host in docker_hosts: + self.api.delete_docker_host(docker_host["id"]) - if parse_version(self.api.version) >= parse_version("1.19"): - # delete maintenances - maintenances = self.api.get_maintenances() - for maintenance in maintenances: - self.api.delete_maintenance(maintenance["id"]) + # delete maintenances + maintenances = self.api.get_maintenances() + for maintenance in maintenances: + self.api.delete_maintenance(maintenance["id"]) - if parse_version(self.api.version) >= parse_version("1.21"): - # delete api keys - api_keys = self.api.get_api_keys() - for api_key in api_keys: - self.api.delete_api_key(api_key["id"]) + # delete api keys + api_keys = self.api.get_api_keys() + for api_key in api_keys: + self.api.delete_api_key(api_key["id"]) # login again to receive initial messages self.api.disconnect() diff --git a/uptime_kuma_api/api.py b/uptime_kuma_api/api.py index 45ecfba..c2bbcbc 100644 --- a/uptime_kuma_api/api.py +++ b/uptime_kuma_api/api.py @@ -11,7 +11,6 @@ from typing import Any import requests import socketio -from packaging.version import parse as parse_version from . import (AuthMethod, DockerType, @@ -718,10 +717,6 @@ class UptimeKumaApi(object): # GAMEDIG game: str = None ) -> dict: - # https://github.com/louislam/uptime-kuma/compare/1.21.1...1.21.2#diff-f672603317047f3e6f27b0d7a44f6f244b7dbb5d0d0a85f1059a6b0bc2cb9aa0L910 - if parse_version(self.version) < parse_version("1.21.2"): - maxretries = 0 - data = { "type": type, "name": name, @@ -730,19 +725,11 @@ class UptimeKumaApi(object): "maxretries": maxretries, "notificationIDList": notificationIDList, "upsideDown": upsideDown, + "resendInterval": resendInterval, + "description": description, + "httpBodyEncoding": httpBodyEncoding } - if parse_version(self.version) >= parse_version("1.18"): - data.update({ - "resendInterval": resendInterval - }) - - if parse_version(self.version) >= parse_version("1.21"): - data.update({ - "description": description, - "httpBodyEncoding": httpBodyEncoding - }) - if type in [MonitorType.KEYWORD, MonitorType.GRPC_KEYWORD]: data.update({ "keyword": keyword, @@ -799,10 +786,9 @@ class UptimeKumaApi(object): }) # PING - if parse_version(self.version) >= parse_version("1.20"): - data.update({ - "packetSize": packetSize, - }) + data.update({ + "packetSize": packetSize, + }) # PORT, DNS, STEAM, MQTT, RADIUS if not port: @@ -906,14 +892,11 @@ class UptimeKumaApi(object): "strategy": strategy, "weekdays": weekdays, "daysOfMonth": daysOfMonth, - "timeRange": timeRange + "timeRange": timeRange, + "cron": cron, + "durationMinutes": durationMinutes, + "timezoneOption": timezoneOption } - if parse_version(self.version) >= parse_version("1.21.2"): - data.update({ - "cron": cron, - "durationMinutes": durationMinutes, - "timezoneOption": timezoneOption, - }) return data # monitor @@ -1211,11 +1194,6 @@ class UptimeKumaApi(object): ] """ r = self._call('getGameList') - # Workaround, gamelist is not available on first call. - # Fixed in https://github.com/louislam/uptime-kuma/commit/7b8ed01f272fc4c6b69ff6299185e936a5e63735 - # Exists in 1.20.0 - 1.21.0 - if not r: - r = self._call('getGameList') return r.get("gameList") @append_docstring(monitor_docstring("add")) @@ -1769,11 +1747,8 @@ class UptimeKumaApi(object): **config, "incident": r2["incident"], "publicGroupList": r2["publicGroupList"], + "maintenanceList": r2["maintenanceList"] } - if parse_version(self.version) >= parse_version("1.19"): - data.update({ - "maintenanceList": r2["maintenanceList"] - }) return data def add_status_page(self, slug: str, title: str) -> dict: @@ -1878,8 +1853,7 @@ class UptimeKumaApi(object): """ status_page = self.get_status_page(slug) status_page.pop("incident") - if parse_version(self.version) >= parse_version("1.19"): - status_page.pop("maintenanceList") + status_page.pop("maintenanceList") status_page.update(kwargs) data = _build_status_page_data(**status_page) r = self._call('saveStatusPage', data) @@ -2237,7 +2211,6 @@ class UptimeKumaApi(object): } } """ - # TODO: endless call if only ping monitors used return self._get_event_data(Event.CERT_INFO) # uptime @@ -2576,12 +2549,9 @@ class UptimeKumaApi(object): "steamAPIKey": steamAPIKey, "dnsCache": dnsCache, "tlsExpiryNotifyDays": tlsExpiryNotifyDays, - "disableAuth": disableAuth + "disableAuth": disableAuth, + "trustProxy": trustProxy } - if parse_version(self.version) >= parse_version("1.18"): - data.update({ - "trustProxy": trustProxy - }) return self._call('setSettings', (data, password)) def change_password(self, old_password: str, new_password: str) -> dict: