diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2021-02-26 14:02:06 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-26 14:02:06 +0000 |
commit | 15090de85075c9d7d54479b4bfd79057de64059b (patch) | |
tree | 70ba6e557818865d128d77839227e6331942df7d /tests/rest/client/v1/utils.py | |
parent | Call out the need for an X-Forwarded-Proto in the upgrade notes (#9501) (diff) | |
download | synapse-15090de85075c9d7d54479b4bfd79057de64059b.tar.xz |
SSO: redirect to public URL before setting cookies (#9436)
... otherwise, we don't get the cookie back.
Diffstat (limited to 'tests/rest/client/v1/utils.py')
-rw-r--r-- | tests/rest/client/v1/utils.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/rest/client/v1/utils.py b/tests/rest/client/v1/utils.py index 8231a423f3..946740aa5d 100644 --- a/tests/rest/client/v1/utils.py +++ b/tests/rest/client/v1/utils.py @@ -542,13 +542,30 @@ class RestHelper: if client_redirect_url: params["redirectUrl"] = client_redirect_url - # hit the redirect url (which will issue a cookie and state) + # hit the redirect url (which should redirect back to the redirect url. This + # is the easiest way of figuring out what the Host header ought to be set to + # to keep Synapse happy. channel = make_request( self.hs.get_reactor(), self.site, "GET", "/_matrix/client/r0/login/sso/redirect?" + urllib.parse.urlencode(params), ) + assert channel.code == 302 + + # hit the redirect url again with the right Host header, which should now issue + # a cookie and redirect to the SSO provider. + location = channel.headers.getRawHeaders("Location")[0] + parts = urllib.parse.urlsplit(location) + channel = make_request( + self.hs.get_reactor(), + self.site, + "GET", + urllib.parse.urlunsplit(("", "") + parts[2:]), + custom_headers=[ + ("Host", parts[1]), + ], + ) assert channel.code == 302 channel.extract_cookies(cookies) |