Merge pull request #9739 from chrisroberts/f-midware-invalid-uri

Ignore URLs which cannot be parsed in the authentication middleware
This commit is contained in:
Chris Roberts 2018-04-27 17:03:02 -07:00 committed by GitHub
commit 39bb589f7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 5 deletions

View File

@ -35,11 +35,15 @@ module VagrantPlugins
token = client.token
env[:box_urls].map! do |url|
u = URI.parse(url)
if u.host != TARGET_HOST && REPLACEMENT_HOSTS.include?(u.host)
u.host = TARGET_HOST
u.to_s
else
begin
u = URI.parse(url)
if u.host != TARGET_HOST && REPLACEMENT_HOSTS.include?(u.host)
u.host = TARGET_HOST
u.to_s
else
url
end
rescue URI::Error
url
end
end

View File

@ -125,6 +125,15 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
end
end
it "ignores urls that it cannot parse" do
bad_url = "this is not a valid url"
# Ensure the bad URL does cause an exception
expect{ URI.parse(bad_url) }.to raise_error URI::Error
env[:box_urls] = [bad_url]
subject.call(env)
expect(env[:box_urls].first).to eq(bad_url)
end
it "returns original urls when not modified" do
to_persist = "file:////path/to/box.box"
to_change = VagrantPlugins::LoginCommand::AddAuthentication::