File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11from __future__ import annotations
22
33import json
4+ import sys
45from typing import TYPE_CHECKING
56
7+ from authlib .integrations .base_client .errors import OAuthError
68import click
79
810if TYPE_CHECKING :
@@ -22,8 +24,18 @@ def login(obj: IsicContext):
2224 if obj .user :
2325 click .echo (f'Hello { obj .user ["email" ]} !' )
2426 else :
25- obj .oauth .login ()
26- click .echo ("Success!" )
27+ try :
28+ obj .oauth .login ()
29+ except OAuthError as e :
30+ if e .error == "invalid_grant" :
31+ click .secho (
32+ "Logging in timed out or had an unexpected error. Please try again." , fg = "red"
33+ )
34+ sys .exit (1 )
35+ else :
36+ raise
37+ else :
38+ click .secho ("Success!" , fg = "green" )
2739
2840
2941@user .command ()
Original file line number Diff line number Diff line change 11from __future__ import annotations
22
3+ from authlib .integrations .base_client .errors import OAuthError
4+ from girder_cli_oauth_client import GirderCliOAuthClient
35import pytest
46
57
@@ -8,3 +10,15 @@ def test_user_login_logged_in(cli_run):
810 result = cli_run (["user" , "login" ])
911 assert result .exit_code == 0
1012 assert "Hello" in result .output
13+
14+
15+ @pytest .mark .usefixtures ("_isolated_filesystem" )
16+ def test_user_login_oauth_timeout (cli_run , mocker ):
17+ mock_login = mocker .patch .object (
18+ GirderCliOAuthClient , "login" , side_effect = OAuthError (error = "invalid_grant" )
19+ )
20+
21+ result = cli_run (["user" , "login" ])
22+ assert result .exit_code == 1
23+ assert "Logging in timed out or had an unexpected error" in result .output
24+ mock_login .assert_called_once ()
You can’t perform that action at this time.
0 commit comments