feat: support autoLogin for enabled disableAuth
Call the login method without parameters to log in when disableAuth is enabled.
This commit is contained in:
parent
ebadfb73e6
commit
661c06b15f
3 changed files with 48 additions and 2 deletions
31
tests/test_login.py
Normal file
31
tests/test_login.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from uptime_kuma_api import UptimeKumaApi
|
||||||
|
from uptime_kuma_test_case import UptimeKumaTestCase
|
||||||
|
|
||||||
|
|
||||||
|
class TestLogin(UptimeKumaTestCase):
|
||||||
|
def test_auto_login(self):
|
||||||
|
# disable auth
|
||||||
|
r = self.api.set_settings(self.password, disableAuth=True)
|
||||||
|
self.assertEqual(r["msg"], "Saved")
|
||||||
|
|
||||||
|
# login again without username and password
|
||||||
|
self.api.logout()
|
||||||
|
self.api.disconnect()
|
||||||
|
self.api = UptimeKumaApi(self.url)
|
||||||
|
self.api.login()
|
||||||
|
|
||||||
|
r = self.api.get_settings()
|
||||||
|
self.assertTrue(r["disableAuth"])
|
||||||
|
|
||||||
|
# enable auth again
|
||||||
|
r = self.api.set_settings(disableAuth=False)
|
||||||
|
self.assertEqual(r["msg"], "Saved")
|
||||||
|
|
||||||
|
r = self.api.get_settings()
|
||||||
|
self.assertFalse(r["disableAuth"])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
|
@ -283,7 +283,8 @@ class UptimeKumaApi(object):
|
||||||
Event.HEARTBEAT: None,
|
Event.HEARTBEAT: None,
|
||||||
Event.INFO: None,
|
Event.INFO: None,
|
||||||
Event.CERT_INFO: None,
|
Event.CERT_INFO: None,
|
||||||
Event.DOCKER_HOST_LIST: None
|
Event.DOCKER_HOST_LIST: None,
|
||||||
|
Event.AUTO_LOGIN: None
|
||||||
}
|
}
|
||||||
|
|
||||||
self.sio.on(Event.CONNECT, self._event_connect)
|
self.sio.on(Event.CONNECT, self._event_connect)
|
||||||
|
@ -300,6 +301,7 @@ class UptimeKumaApi(object):
|
||||||
self.sio.on(Event.INFO, self._event_info)
|
self.sio.on(Event.INFO, self._event_info)
|
||||||
self.sio.on(Event.CERT_INFO, self._event_cert_info)
|
self.sio.on(Event.CERT_INFO, self._event_cert_info)
|
||||||
self.sio.on(Event.DOCKER_HOST_LIST, self._event_docker_host_list)
|
self.sio.on(Event.DOCKER_HOST_LIST, self._event_docker_host_list)
|
||||||
|
self.sio.on(Event.AUTO_LOGIN, self._event_auto_login)
|
||||||
|
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|
||||||
|
@ -395,6 +397,9 @@ class UptimeKumaApi(object):
|
||||||
def _event_docker_host_list(self, data):
|
def _event_docker_host_list(self, data):
|
||||||
self._event_data[Event.DOCKER_HOST_LIST] = data
|
self._event_data[Event.DOCKER_HOST_LIST] = data
|
||||||
|
|
||||||
|
def _event_auto_login(self):
|
||||||
|
self._event_data[Event.AUTO_LOGIN] = True
|
||||||
|
|
||||||
# connection
|
# connection
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
|
@ -927,7 +932,16 @@ class UptimeKumaApi(object):
|
||||||
|
|
||||||
# login
|
# login
|
||||||
|
|
||||||
def login(self, username: str, password: str, token: str = ""):
|
def _wait_for_auto_login(self):
|
||||||
|
while self._event_data[Event.AUTO_LOGIN] is None:
|
||||||
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
def login(self, username: str = None, password: str = None, token: str = ""):
|
||||||
|
# autologin
|
||||||
|
if username is None and password is None:
|
||||||
|
self._wait_for_auto_login()
|
||||||
|
return
|
||||||
|
|
||||||
return self._call('login', {
|
return self._call('login', {
|
||||||
"username": username,
|
"username": username,
|
||||||
"password": password,
|
"password": password,
|
||||||
|
|
|
@ -16,3 +16,4 @@ class Event(str, Enum):
|
||||||
INFO = "info"
|
INFO = "info"
|
||||||
CERT_INFO = "certInfo"
|
CERT_INFO = "certInfo"
|
||||||
DOCKER_HOST_LIST = "dockerHostList"
|
DOCKER_HOST_LIST = "dockerHostList"
|
||||||
|
AUTO_LOGIN = "autoLogin"
|
||||||
|
|
Loading…
Reference in a new issue