From 9df58b633a43fd79f1bcc4c7a9a91c149961ff4c Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Thu, 2 Feb 2023 17:15:17 +0000 Subject: [PATCH] login tests, session model --- openbb_terminal/session/session_model.py | 2 +- .../session/test_session_model.py | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/openbb_terminal/session/session_model.py b/openbb_terminal/session/session_model.py index 6c45b13bc7c..00d4ac69efc 100644 --- a/openbb_terminal/session/session_model.py +++ b/openbb_terminal/session/session_model.py @@ -49,7 +49,7 @@ def login(session: dict) -> LoginStatus: The session info. """ response = Hub.fetch_user_configs(session) - if response: + if response is not None: if response.status_code == 200: configs = json.loads(response.content) email = configs.get("email", "") diff --git a/tests/openbb_terminal/session/test_session_model.py b/tests/openbb_terminal/session/test_session_model.py index 4d3068f8fbb..2203efe2e1a 100644 --- a/tests/openbb_terminal/session/test_session_model.py +++ b/tests/openbb_terminal/session/test_session_model.py @@ -1,8 +1,10 @@ # IMPORTATION STANDARD # IMPORTATION THIRDPARTY +import json from unittest.mock import patch import pytest +from requests import Response # IMPORTATION INTERNAL from openbb_terminal.session import session_model @@ -43,3 +45,59 @@ def test_create_session(email, password, save): mock_get_session.assert_called_once_with(email, password) if save and session: mock_save_session.assert_called_once_with(session) + + +@patch("openbb_terminal.session.session_model.Hub.fetch_user_configs") +@patch("openbb_terminal.session.session_model.Local.apply_configs") +@patch("openbb_terminal.session.session_model.User.load_user_info") +@patch("openbb_terminal.session.session_model.User.update_flair") +def test_login_no_response( + mock_update_flair, mock_load_user_info, mock_apply_configs, mock_fetch_user_configs +): + + mock_fetch_user_configs.return_value = None + assert session_model.login(TEST_SESSION) == session_model.LoginStatus.NO_RESPONSE + + mock_fetch_user_configs.assert_called_once_with(TEST_SESSION) + mock_apply_configs.assert_not_called() + mock_load_user_info.assert_not_called() + mock_update_flair.assert_not_called() + + +@patch("openbb_terminal.session.session_model.Hub.fetch_user_configs") +@patch("openbb_terminal.session.session_model.Local.apply_configs") +@patch("openbb_terminal.session.session_model.User.load_user_info") +@patch("openbb_terminal.session.session_model.User.update_flair") +def test_login_fail_response( + mock_update_flair, mock_load_user_info, mock_apply_configs, mock_fetch_user_configs +): + + response = Response() + response.status_code = 400 + mock_fetch_user_configs.return_value = response + assert session_model.login(TEST_SESSION) == session_model.LoginStatus.FAILED + + mock_fetch_user_configs.assert_called_once_with(TEST_SESSION) + mock_apply_configs.assert_not_called() + mock_load_user_info.assert_not_called() + mock_update_flair.assert_not_called() + + +@patch("openbb_terminal.session.session_model.Hub.fetch_user_configs") +@patch("openbb_terminal.session.session_model.Local.apply_configs") +@patch("openbb_terminal.session.session_model.User.load_user_info") +@patch("openbb_terminal.session.session_model.User.update_flair") +def test_login_success_response( + mock_update_flair, mock_load_user_info, mock_apply_configs, mock_fetch_user_configs +): + + response = Response() + response.status_code = 200 + response._content = json.dumps(TEST_SESSION) # pylint: disable=protected-access + mock_fetch_user_configs.return_value = response + assert session_model.login(TEST_SESSION) == session_model.LoginStatus.SUCCESS + + mock_fetch_user_configs.assert_called_once_with(TEST_SESSION) + mock_apply_configs.assert_called_once() + mock_load_user_info.assert_called_once() + mock_update_flair.assert_called_once()