From 0b03240e5bc359cfc99ca1a1cdf24f6aaa47bd99 Mon Sep 17 00:00:00 2001 From: Gonzalo Ricco Date: Mon, 24 Feb 2020 21:13:40 -0300 Subject: [PATCH] Add rescue InvalidURIError in mastodon_url validation (#6174) [deploy] --- app/models/user.rb | 4 +++- spec/models/user_spec.rb | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 7f2d207f7..25f723cc0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -81,7 +81,7 @@ class User < ApplicationRecord validates :experience_level, numericality: { less_than_or_equal_to: 10 }, allow_blank: true validates :text_color_hex, format: /\A#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\z/, allow_blank: true validates :bg_color_hex, format: /\A#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\z/, allow_blank: true - validates :website_url, :employer_url, :mastodon_url, + validates :website_url, :employer_url, url: { allow_blank: true, no_local: true, schemes: %w[https http] } validates :facebook_url, format: /\A(http(s)?:\/\/)?(www.facebook.com|facebook.com)\/.*\Z/, @@ -612,6 +612,8 @@ class User < ApplicationRecord return if uri.host&.in?(Constants::ALLOWED_MASTODON_INSTANCES) errors.add(:mastodon_url, "is not an allowed Mastodon instance") + rescue URI::InvalidURIError + errors.add(:mastodon_url, "is not a valid url") end def tag_list diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 11608d4b0..2722c9d33 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -187,6 +187,11 @@ RSpec.describe User, type: :model do user.mastodon_url = "mastodon.social/@test" expect(user).not_to be_valid end + + it "does not accept an invalid url" do + user.mastodon_url = "ben .com" + expect(user).not_to be_valid + end end describe "#facebook_url" do