@@ -7,39 +7,36 @@ from {{project_name}}.auth.keycloak_checker import set_token_env_variable
77
88
99@mark.parametrize(
10- "staging,port, return_present",
10+ "return_present",
1111 [
12- (True, 5173, True),
13- (False, 8000, False),
14- (True, 5173, False),
15- (False, 8000, True),
12+ (False),
13+ (True),
1614 ],
1715)
1816@patch("{{project_name}}.auth.keycloak_checker.dotenv.load_dotenv")
1917@patch("{{project_name}}.auth.keycloak_checker.dotenv.set_key")
2018@patch("{{project_name}}.auth.keycloak_checker.KeycloakOpenID")
2119@patch("{{project_name}}.auth.keycloak_checker.generate_code_verifier")
2220@patch("{{project_name}}.auth.keycloak_checker.generate_code_challenge")
23- @patch("{{project_name}}.auth.keycloak_checker.open_auth_url ")
21+ @patch("{{project_name}}.auth.keycloak_checker.token_expired ")
2422def test_set_token_env_variable(
25- mock_open_auth_url : MagicMock,
23+ mock_token_expired : MagicMock,
2624 mock_gen_code_challenge: MagicMock,
2725 mock_gen_code_verifier: MagicMock,
2826 mock_gen_keycloak_id: MagicMock,
2927 mock_set_key: MagicMock,
3028 mock_load_env: MagicMock,
31- staging: bool,
32- port: int,
3329 return_present: bool,
3430):
31+ port=8000
3532 mock_gen_code_verifier.return_value = "verifier"
3633 mock_gen_code_challenge.return_value = ("challenge", "S256")
3734 os.environ["AUTH"] = "auth_url_code"
3835 os.environ["REFRESHTOKEN"] = "refresh"
3936
4037 keycloak = MagicMock()
4138 mock_gen_keycloak_id.return_value = keycloak
42- mock_open_auth_url .return_value = return_present
39+ mock_token_expired .return_value = return_present
4340 keycloak.auth_url.return_value = "https://mock.site"
4441 token = {
4542 "access_token": "fake_token",
@@ -50,7 +47,7 @@ def test_set_token_env_variable(
5047 keycloak.decode_token.return_value = {"exp": 123456789}
5148 assert set_token_env_variable(staging) == "fake_token"
5249
53- mock_open_auth_url .assert_called_once_with("https://mock.site", port)
50+ mock_token_expired .assert_called_once_with("https://mock.site", port)
5451 if return_present:
5552 keycloak.token.assert_called_once_with(
5653 grant_type="authorization_code",
@@ -64,7 +61,7 @@ def test_set_token_env_variable(
6461 keycloak.token.assert_not_called()
6562 mock_set_key.assert_has_calls(
6663 [
67- call("src/.env", "EXPIRY", str(123456789 + 1500 )),
64+ call("src/.env", "EXPIRY", str(123456789 + 1800 )),
6865 call("src/.env", "TOKEN", "fake_token"),
6966 call("src/.env", "REFRESHTOKEN", "fake_refresh"),
7067 ]
@@ -73,3 +70,51 @@ def test_set_token_env_variable(
7370 dotenv_path="src/.env",
7471 override=True,
7572 )
73+
74+ @patch("{{project_name}}.auth.keycloak_checker.exit")
75+ @patch("{{project_name}}.auth.keycloak_checker.print")
76+ @patch("{{project_name}}.auth.keycloak_checker.dotenv.load_dotenv")
77+ @patch("{{project_name}}.auth.keycloak_checker.dotenv.set_key")
78+ @patch("{{project_name}}.auth.keycloak_checker.KeycloakOpenID")
79+ @patch("{{project_name}}.auth.keycloak_checker.generate_code_verifier")
80+ @patch("{{project_name}}.auth.keycloak_checker.generate_code_challenge")
81+ @patch("{{project_name}}.auth.keycloak_checker.token_expired")
82+ def test_set_token_env_variable_attribute_error(
83+ mock_token_expired: MagicMock,
84+ mock_gen_code_challenge: MagicMock,
85+ mock_gen_code_verifier: MagicMock,
86+ mock_gen_keycloak_id: MagicMock,
87+ mock_set_key: MagicMock,
88+ mock_load_env: MagicMock,
89+ mock_print: MagicMock,
90+ mock_exit: MagicMock,
91+ ):
92+ mock_gen_code_verifier.return_value = "verifier"
93+ mock_gen_code_challenge.return_value = ("challenge", "S256")
94+ mock_token_expired.return_value = True
95+
96+ os.environ["REFRESHTOKEN"] = "refresh"
97+
98+ keycloak = MagicMock()
99+ mock_gen_keycloak_id.return_value = keycloak
100+
101+ token = {
102+ "access_token": "fake_token",
103+ "refresh_token": "fake_refresh",
104+ }
105+
106+ keycloak.refresh_token.return_value = token
107+
108+ decoded = MagicMock()
109+ decoded.__getitem__.side_effect = AttributeError
110+ keycloak.decode_token.return_value = decoded
111+
112+ set_token_env_variable()
113+
114+ mock_print.assert_called_once_with("ERROR:")
115+ mock_exit.assert_called_once_with(1)
116+ mock_set_key.assert_not_called()
117+ mock_load_env.assert_called_once_with(
118+ dotenv_path="src/.env",
119+ override=True,
120+ )
0 commit comments