Fix admin notification with relative URLs

The test was passing because it was using the rack driver, but on real
browsers it wasn't generating the expected URL.
This commit is contained in:
Javi Martín
2021-03-25 19:56:27 +01:00
parent f33d2cc3b1
commit d7563be8b3
3 changed files with 9 additions and 2 deletions

View File

@@ -42,7 +42,7 @@ class AdminNotification < ApplicationRecord
def complete_link_url def complete_link_url
return unless link.present? return unless link.present?
unless self.link[/\Ahttp:\/\//] || self.link[/\Ahttps:\/\//] unless link =~ /\A(http:\/\/|https:\/\/|\/)/
self.link = "http://#{self.link}" self.link = "http://#{self.link}"
end end
end end

View File

@@ -43,6 +43,13 @@ describe AdminNotification do
expect(admin_notification.link).to eq("http://www.lol.consul.dev") expect(admin_notification.link).to eq("http://www.lol.consul.dev")
end end
it "does not modify a relative link" do
admin_notification.link = "/proposals"
expect(admin_notification).to be_valid
expect(admin_notification.link).to eq("/proposals")
end
it "does not modify a link with http://" do it "does not modify a link with http://" do
admin_notification.link = "http://lol.consul.dev" admin_notification.link = "http://lol.consul.dev"

View File

@@ -158,7 +158,7 @@ describe "Notifications" do
expect(page.current_url).to eq("https://www.external.link.dev/") expect(page.current_url).to eq("https://www.external.link.dev/")
end end
scenario "With internal link" do scenario "With internal link", :js do
admin_notification.update!(link: "/stats") admin_notification.update!(link: "/stats")
visit notifications_path visit notifications_path