docbrown/spec/services/giphy/image_spec.rb
2019-11-20 13:01:30 -05:00

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