diff --git a/app/liquid_tags/soundcloud_tag.rb b/app/liquid_tags/soundcloud_tag.rb index ce37bac5b..ce9768d9f 100644 --- a/app/liquid_tags/soundcloud_tag.rb +++ b/app/liquid_tags/soundcloud_tag.rb @@ -35,11 +35,12 @@ class SoundcloudTag < LiquidTagBase end def valid_link?(link) - link.include?("soundcloud.com") + (link =~ /\Ahttps:\/\/soundcloud\.com\/([a-zA-Z0-9\_\-]){3,25}\/(sets\/)?([a-zA-Z0-9\_\-]){3,255}\Z/)&. + zero? end def raise_error - raise StandardError, "Invalid Soundcloud URL" + raise StandardError, "Invalid Soundcloud URL - try taking off any URL params: '?something=value'" end end diff --git a/spec/liquid_tags/soundcloud_tag_spec.rb b/spec/liquid_tags/soundcloud_tag_spec.rb index 8ed5a8816..a1eb3df4c 100644 --- a/spec/liquid_tags/soundcloud_tag_spec.rb +++ b/spec/liquid_tags/soundcloud_tag_spec.rb @@ -4,7 +4,6 @@ require "nokogiri" RSpec.describe SoundcloudTag, type: :liquid_template do describe "#link" do let(:soundcloud_link) { "https://soundcloud.com/user-261265215/dev-to-review-episode-2" } - let(:evil_string) { "" } let(:url_segment) { "https://w.soundcloud.com/player/?url" } def generate_new_liquid(link) @@ -29,15 +28,5 @@ RSpec.describe SoundcloudTag, type: :liquid_template do generate_new_liquid("invalid_soundcloud_link") end.to raise_error(StandardError) end - - it "strips script input" do - allow(ActionController::Base.helpers).to receive(:strip_tags).and_return(evil_string) - - liquid = generate_new_liquid(evil_string) - rendered_soundcloud_iframe = liquid.render - iframe_src = extract_iframe_src(rendered_soundcloud_iframe) - - expect(iframe_src[url_segment]).not_to include("