Skip to content

Commit bf0350e

Browse files
authored
Merge pull request #9 from secondlife/signal/unredirect-header
Do not pass Authorization header to redirects
2 parents 0f2283d + cc2c658 commit bf0350e

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

autobuild/autobuild_tool_install.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -193,25 +193,23 @@ def package_cache_path(package):
193193

194194

195195
def download_package(package_url: str, timeout=120, creds=None, package_name="") -> http.client.HTTPResponse:
196-
headers = {}
197-
if creds:
196+
req = urllib.request.Request(package_url)
198197

198+
if creds:
199199
try:
200200
token_var = CREDENTIAL_ENVVARS[creds]
201201
except KeyError:
202202
logger.warning(f"Unrecognized creds={creds} value")
203203

204204
token = os.environ.get(token_var)
205205
if token:
206-
headers["Authorization"] = f"Bearer {token}"
206+
req.add_unredirected_header("Authorization", f"Bearer {token}")
207207
else:
208208
raise CredentialsNotFoundError(
209209
f"Package {package_name} is set to use '{creds}' credentials type but no {token_var} "
210210
"environment variable is set"
211211
)
212212

213-
req = urllib.request.Request(package_url, headers=headers)
214-
215213
return urllib.request.urlopen(req, data=None, timeout=timeout)
216214

217215

tests/test_install.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ def test_download(self, mock_urlopen: MagicMock):
750750
with envvar("AUTOBUILD_GITHUB_TOKEN", None):
751751
autobuild_tool_install.download_package("https://example.org/foo.tar.bz2")
752752
mock_urlopen.assert_called()
753+
got_req = mock_urlopen.mock_calls[0].args[0]
754+
self.assertIsNone(got_req.unredirected_hdrs.get("Authorization"))
753755

754756
@patch("urllib.request.urlopen")
755757
def test_download_github(self, mock_urlopen: MagicMock):
@@ -758,7 +760,7 @@ def test_download_github(self, mock_urlopen: MagicMock):
758760
autobuild_tool_install.download_package("https://example.org/foo.tar.bz2", creds="github")
759761
mock_urlopen.assert_called()
760762
got_req = mock_urlopen.mock_calls[0].args[0]
761-
self.assertEqual(got_req.headers["Authorization"], "Bearer token-123")
763+
self.assertEqual(got_req.unredirected_hdrs["Authorization"], "Bearer token-123")
762764

763765
@patch("urllib.request.urlopen")
764766
def test_download_gitlab(self, mock_urlopen: MagicMock):
@@ -767,7 +769,7 @@ def test_download_gitlab(self, mock_urlopen: MagicMock):
767769
autobuild_tool_install.download_package("https://example.org/foo.tar.bz2", creds="gitlab")
768770
mock_urlopen.assert_called()
769771
got_req = mock_urlopen.mock_calls[0].args[0]
770-
self.assertEqual(got_req.headers["Authorization"], "Bearer token-123")
772+
self.assertEqual(got_req.unredirected_hdrs["Authorization"], "Bearer token-123")
771773

772774
@patch("urllib.request.urlopen")
773775
def test_download_github_without_creds(self, mock_urlopen: MagicMock):

0 commit comments

Comments
 (0)