def test_oauth2_start_flow_specified(self):
"""
Starts a GlobusNativeAppFlowManager with specified parameters,
Confirms flow is initialized as expected, and can be used.
"""
# starting with no flow
self.assertIsNone(self.nac.current_oauth2_flow_manager)
# confirms flow initialized with specified values
flow = self.nac.oauth2_start_flow(
requested_scopes="scopes", redirect_uri="uri",
state="state", verifier=("v" * 43), refresh_tokens=True)
self.assertIsInstance(flow, GlobusNativeAppFlowManager)
self.assertEqual(flow.redirect_uri, "uri")
self.assertEqual(flow.requested_scopes, "scopes")
self.assertEqual(flow.state, "state")
self.assertTrue(flow.refresh_tokens)
# confirm client can get url via flow
url_res = self.nac.oauth2_get_authorize_url()
verifier, remade_challenge = make_native_app_challenge("v" * 43)
expected_vals = [self.nac.base_url + "v2/oauth2/authorize?",
"client_id=" + self.nac.client_id,
"redirect_uri=" + "uri",
"scope=" + "scopes",
"state=" + "state",
"code_challenge=" + quote_plus(remade_challenge),
"access_type=" + "offline"]
for val in expected_vals:
self.assertIn(val, url_res)
# confirm client can try exchanging code for tokens via flow
with self.assertRaises(AuthAPIError) as apiErr:
self.nac.oauth2_exchange_code_for_tokens("invalid_code")
self.assertEqual(apiErr.exception.http_status, 401)
self.assertEqual(apiErr.exception.code, "Error")
test_native_client_flow.py 文件源码
python
阅读 23
收藏 0
点赞 0
评论 0
评论列表
文章目录