2019-04-29 20:27:42 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-12-20 23:27:17 -05:00
|
|
|
RSpec.describe UrlValidator do
|
2023-06-21 10:00:19 -04:00
|
|
|
subject(:validate) { validator.validate_each(record, :website, record.website) }
|
|
|
|
|
2017-12-20 23:27:17 -05:00
|
|
|
let(:record) { Fabricate.build(:user_profile, user: Fabricate.build(:user)) }
|
|
|
|
let(:validator) { described_class.new(attributes: :website) }
|
|
|
|
|
|
|
|
[
|
|
|
|
"http://https://google.com",
|
|
|
|
"http://google/",
|
|
|
|
"ftp://ftp.google.com",
|
|
|
|
"http:///what.is.this",
|
|
|
|
"http://meta.discourse.org TEST",
|
|
|
|
].each do |invalid_url|
|
|
|
|
it "#{invalid_url} should not be valid" do
|
|
|
|
record.website = invalid_url
|
|
|
|
validate
|
|
|
|
expect(record.errors[:website]).to be_present
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
%w[
|
|
|
|
http://discourse.productions
|
|
|
|
https://google.com
|
2017-12-21 01:22:55 -05:00
|
|
|
http://xn--nw2a.xn--j6w193g/
|
|
|
|
http://見.香港/
|
2017-12-20 23:27:17 -05:00
|
|
|
].each do |valid_url|
|
|
|
|
it "#{valid_url} should be valid" do
|
|
|
|
record.website = valid_url
|
|
|
|
validate
|
|
|
|
expect(record.errors[:website]).to_not be_present
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|