59 lines
1.9 KiB
Ruby
59 lines
1.9 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe Giphy::Image, type: :service do
|
|
describe "self.valid_url?" do
|
|
context "when the URL is not a giphy URL" do
|
|
it "returns false if the URI scheme is not https" do
|
|
url = "http://media.giphy.com/media/H7NQUsEwTGfjkr9QoG/giphy.gif"
|
|
|
|
expect(described_class.valid_url?(url)).to be false
|
|
end
|
|
|
|
it "returns false if the URI has userinfo" do
|
|
url = "https://username:password@media.giphy.com/media/H7NQUsEwTGfjkr9QoG/giphy.gif"
|
|
|
|
expect(described_class.valid_url?(url)).to be false
|
|
end
|
|
|
|
it "returns false if the URI has a fragment" do
|
|
url = "https://media.giphy.com/media/H7NQUsEwTGfjkr9QoG/giphy.gif#a-fragment"
|
|
|
|
expect(described_class.valid_url?(url)).to be false
|
|
end
|
|
|
|
it "returns false if the URI contains query params" do
|
|
url = "https://media.giphy.com/media/H7NQUsEwTGfjkr9QoG/giphy.gif?query_param=1"
|
|
|
|
expect(described_class.valid_url?(url)).to be false
|
|
end
|
|
|
|
it "returns false if the host is not a subdomain of giphy.com" do
|
|
url = "https://example.com/some_url"
|
|
|
|
expect(described_class.valid_url?(url)).to be false
|
|
end
|
|
end
|
|
|
|
context "when the URI host is giphy.com and it ends with .gif" do
|
|
it "returns true if the URI host is media.giphy.com" do
|
|
url = "https://media.giphy.com/media/H7NQUsEwTGfjkr9QoG/giphy.gif"
|
|
|
|
expect(described_class.valid_url?(url)).to be true
|
|
end
|
|
|
|
it "returns true if the URI host is i.giphy.com" do
|
|
url = "https://i.giphy.com/l0O9xQNSsQKmfSeUU.gif"
|
|
|
|
expect(described_class.valid_url?(url)).to be true
|
|
end
|
|
end
|
|
|
|
context "when the URI host is giphy.com and it does not end with .gif" do
|
|
it "returns false" do
|
|
url = "https://i.giphy.com/l0O9xQNSsQKmfSeUU"
|
|
|
|
expect(described_class.valid_url?(url)).to be false
|
|
end
|
|
end
|
|
end
|
|
end
|