Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGhostkeeper <rubend@tutanota.com>2021-11-22 14:11:45 +0300
committerGhostkeeper <rubend@tutanota.com>2021-11-22 14:11:45 +0300
commitc8aff57bfe6844379a1caad5d866044be0981975 (patch)
tree825f518872877155136612509c79b0bcecfe406c /tests
parentc36863da56260ab82dbd4bd6aadff12d23da8c5e (diff)
Actually mock a reply from the auth server
The reply is not really relevant. The reply is mocked through readJSON. So it turns out that so far, our tests have been making actual requests to the authentication server, and depended on it being online. Not good. Mock those external dependencies! Contributes to issue CURA-8539.
Diffstat (limited to 'tests')
-rw-r--r--tests/TestOAuth2.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/tests/TestOAuth2.py b/tests/TestOAuth2.py
index 226e7437a3..a57dd87991 100644
--- a/tests/TestOAuth2.py
+++ b/tests/TestOAuth2.py
@@ -4,6 +4,7 @@ from unittest.mock import MagicMock, Mock, patch
import requests
from PyQt5.QtGui import QDesktopServices
+from PyQt5.QtNetwork import QNetworkReply
from UM.Preferences import Preferences
from cura.OAuth2.AuthorizationHelpers import AuthorizationHelpers, TOKEN_TIMESTAMP_FORMAT
@@ -76,10 +77,32 @@ def test_refreshAccessTokenSuccess():
def test__parseJWTNoRefreshToken():
+ """
+ Tests parsing the user profile if there is no refresh token stored, but there is a normal authentication token.
+
+ The request for the user profile using the authentication token should still work normally.
+ """
authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences())
with patch.object(AuthorizationService, "getUserProfile", return_value=UserProfile()):
authorization_service._storeAuthData(NO_REFRESH_AUTH_RESPONSE)
- assert authorization_service._parseJWT() is None
+
+ mock_callback = Mock() # To log the final profile response.
+ mock_reply = Mock() # The user profile that the service should respond with.
+ mock_reply.error = Mock(return_value = QNetworkReply.NetworkError.NoError)
+
+ http_mock = Mock()
+ def mock_get(url, headers_dict, callback, error_callback):
+ nonlocal mock_reply
+ callback(mock_reply)
+ http_mock.get = mock_get
+ http_mock.readJSON = Mock(return_value = {"data": {"user_id": "id_ego_or_superego", "username": "Ghostkeeper"}})
+
+ with patch("UM.TaskManagement.HttpRequestManager.HttpRequestManager.getInstance", MagicMock(return_value = http_mock)):
+ authorization_service._parseJWT(mock_callback)
+ mock_callback.assert_called_once()
+ profile_reply = mock_callback.call_args_list[0][0][0]
+ assert profile_reply.user_id == "id_ego_or_superego"
+ assert profile_reply.username == "Ghostkeeper"
def test__parseJWTFailOnRefresh():