Fix 500er when calling protocol handler with invalid URL

This commit is contained in:
Benjamin Neff 2019-04-28 11:33:56 +02:00
parent 035b6f39fc
commit 91aae4d755
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
2 changed files with 18 additions and 4 deletions

View file

@ -10,8 +10,10 @@ class DiasporaLinkService
end
def find_or_fetch_entity
if type && guid
entity_finder.find || fetch_entity
end
end
private
@ -38,8 +40,8 @@ class DiasporaLinkService
def parse
normalize
match = DiasporaFederation::Federation::DiasporaUrlParser::DIASPORA_URL_REGEX.match(link)
@author = match[1]
@type = match[2]
@guid = match[3]
if match
@author, @type, @guid = match.captures
end
end
end

View file

@ -40,5 +40,17 @@ describe DiasporaLinkService do
expect(service.find_or_fetch_entity).to be_nil
end
end
context "with invalid links" do
it "returns nil when the link is invalid" do
service = described_class.new("web+diaspora://something_invalid")
expect(service.find_or_fetch_entity).to be_nil
end
it "returns nil when the author is valid, but rest of the link is invalid" do
service = described_class.new("web+diaspora://#{alice.diaspora_handle}/foo/bar")
expect(service.find_or_fetch_entity).to be_nil
end
end
end
end