Commit 95ae2557 by Adam

fix flaky test for oauth redirects (TNL-4190) (#12187)

parent 47e4804b
...@@ -66,7 +66,6 @@ class OAuth2PermissionDelegationTests(WebAppTest): ...@@ -66,7 +66,6 @@ class OAuth2PermissionDelegationTests(WebAppTest):
else: else:
self.oauth_page.wait_for(check_redirect, 'redirected to invalid URL') self.oauth_page.wait_for(check_redirect, 'redirected to invalid URL')
@flaky # TODO, fix this: TNL-4190
def test_accepting_redirects(self): def test_accepting_redirects(self):
""" """
If you accept the request, you're redirected to the redirect_url with If you accept the request, you're redirected to the redirect_url with
...@@ -77,14 +76,34 @@ class OAuth2PermissionDelegationTests(WebAppTest): ...@@ -77,14 +76,34 @@ class OAuth2PermissionDelegationTests(WebAppTest):
# This redirects to an invalid URI. # This redirects to an invalid URI.
self.oauth_page.confirm() self.oauth_page.confirm()
self.oauth_page.wait_for_element_absence('input[name=authorize]', 'Authorization button is not present') self.oauth_page.wait_for_element_absence(
'input[name=authorize]', 'Authorization button is not present'
)
# Due to a bug in ChromeDriver, when chrome is on invalid URI,self.browser.current_url outputs def check_query_string():
# data:text/html,chromewebdata. When this happens in our case,query string is present in the title. """
# So to get query string, we branch out based on selected browser. Checks that 'code' appears in the browser's current url.
if self.browser.name == 'chrome': """
query = self._qs(self.browser.title)
else:
query = self._qs(self.browser.current_url) query = self._qs(self.browser.current_url)
return 'code' in query
def check_query_string_chrome():
"""
Similar to check_query_string, but, due to a bug in ChromeDriver,
when chrome is on an invalid URI, `self.browser.current_url` outputs
"data:text/html,chromewebdata" instead of the current URI.
However, since the query string is present in the `title`, we use
that for chrome.
"""
query = self._qs(self.browser.title)
return 'code' in query
self.assertIn('code', query) if self.browser.name == 'chrome':
self.oauth_page.wait_for(
check_query_string_chrome, 'redirected with correct query parameters (chrome)'
)
else:
self.oauth_page.wait_for(
check_query_string, 'redirected with correct query parameters'
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment