Compare commits

..

No commits in common. "d064e46af6e53337b601faaa0d08b9f7353d2c5a" and "8731cee8eac2d39b20711b390f23074942c4687b" have entirely different histories.

4 changed files with 13 additions and 20 deletions

View File

@ -172,6 +172,7 @@ class Spawn(Thread, LazyLogging):
process = self.active.pop(process_id, None)
if process is not None:
process.terminate() # make sure lol
process.join()
def stop(self) -> None:

View File

@ -102,22 +102,15 @@ class WebClient(Client, LazyLogging):
return address, False
@contextlib.contextmanager
def __get_session(self, session: requests.Session | None = None) -> Generator[requests.Session, None, None]:
def __get_session(self) -> Generator[requests.Session, None, None]:
"""
execute request and handle exceptions
Args:
session(requests.Session | None, optional): session to be used or stored instance property otherwise
(Default value = None)
Yields:
requests.Session: session for requests
"""
try:
if session is not None:
yield session # use session from arguments
else:
yield self.__session # use instance generated session
yield self.__session
except requests.RequestException as e:
if self.suppress_errors:
return
@ -143,16 +136,13 @@ class WebClient(Client, LazyLogging):
return session
session = requests.Session()
self._login(session)
self._login()
return session
def _login(self, session: requests.Session) -> None:
def _login(self) -> None:
"""
process login to the service
Args:
session(requests.Session): request session to login
"""
if self.user is None:
return # no auth configured
@ -162,7 +152,7 @@ class WebClient(Client, LazyLogging):
"password": self.user.password
}
with self.__get_session(session):
with self.__get_session() as session:
response = session.post(self._login_url, json=payload)
response.raise_for_status()

View File

@ -55,7 +55,7 @@ def test_create_session(web_client: WebClient, mocker: MockerFixture) -> None:
session = web_client._create_session(use_unix_socket=False)
assert isinstance(session, requests.Session)
assert not isinstance(session, requests_unixsocket.Session)
login_mock.assert_called_once_with(pytest.helpers.anyvar(int))
login_mock.assert_called_once_with()
def test_create_session_unix_socket(web_client: WebClient, mocker: MockerFixture) -> None:
@ -80,7 +80,7 @@ def test_login(web_client: WebClient, user: User, mocker: MockerFixture) -> None
"password": user.password
}
web_client._login(requests.Session())
web_client._login()
requests_mock.assert_called_once_with(pytest.helpers.anyvar(str, True), json=payload)
@ -90,7 +90,7 @@ def test_login_failed(web_client: WebClient, user: User, mocker: MockerFixture)
"""
web_client.user = user
mocker.patch("requests.Session.post", side_effect=Exception())
web_client._login(requests.Session())
web_client._login()
def test_login_failed_http_error(web_client: WebClient, user: User, mocker: MockerFixture) -> None:
@ -99,7 +99,7 @@ def test_login_failed_http_error(web_client: WebClient, user: User, mocker: Mock
"""
web_client.user = user
mocker.patch("requests.Session.post", side_effect=requests.exceptions.HTTPError())
web_client._login(requests.Session())
web_client._login()
def test_login_skip(web_client: WebClient, mocker: MockerFixture) -> None:
@ -107,7 +107,7 @@ def test_login_skip(web_client: WebClient, mocker: MockerFixture) -> None:
must skip login if no user set
"""
requests_mock = mocker.patch("requests.Session.post")
web_client._login(requests.Session())
web_client._login()
requests_mock.assert_not_called()

View File

@ -140,7 +140,9 @@ def test_run_pop(spawner: Spawn) -> None:
spawner.run()
first.terminate.assert_called_once_with()
first.join.assert_called_once_with()
second.terminate.assert_called_once_with()
second.join.assert_called_once_with()
assert not spawner.active