diff options
| author | William Pitcock <nenolod@dereferenced.org> | 2019-04-23 22:55:21 +0000 | 
|---|---|---|
| committer | William Pitcock <nenolod@dereferenced.org> | 2019-04-23 23:03:45 +0000 | 
| commit | f5535e5743f755c66dcf92a8d4d2c06520cb72c8 (patch) | |
| tree | 3d852bc1669f5f523cabe1c724ef2353adb5771f /test | |
| parent | cc93775ebf539598075c0b9afb96c60c8bede6b5 (diff) | |
| download | pleroma-f5535e5743f755c66dcf92a8d4d2c06520cb72c8.tar.gz pleroma-f5535e5743f755c66dcf92a8d4d2c06520cb72c8.zip  | |
html: lock down allowed class attributes to only those related to microformats
Diffstat (limited to 'test')
| -rw-r--r-- | test/html_test.exs | 71 | 
1 files changed, 71 insertions, 0 deletions
diff --git a/test/html_test.exs b/test/html_test.exs index 0b5d3d892..08738276e 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -20,6 +20,18 @@ defmodule Pleroma.HTMLTest do      <img src="http://example.com/image.jpg" onerror="alert('hacked')">    """ +  @html_span_class_sample """ +    <span class="animate-spin">hi</span> +  """ + +  @html_span_microformats_sample """ +    <span class="h-card"><a class="u-url mention">@<span>foo</span></a></span> +  """ + +  @html_span_invalid_microformats_sample """ +    <span class="h-card"><a class="u-url mention animate-spin">@<span>foo</span></a></span> +  """ +    describe "StripTags scrubber" do      test "works as expected" do        expected = """ @@ -64,6 +76,36 @@ defmodule Pleroma.HTMLTest do        assert expected == HTML.filter_tags(@html_onerror_sample, Pleroma.HTML.Scrubber.TwitterText)      end + +    test "does not allow spans with invalid classes" do +      expected = """ +      <span>hi</span> +      """ + +      assert expected == +               HTML.filter_tags(@html_span_class_sample, Pleroma.HTML.Scrubber.TwitterText) +    end + +    test "does allow microformats" do +      expected = """ +      <span class="h-card"><a class="u-url mention">@<span>foo</span></a></span> +      """ + +      assert expected == +               HTML.filter_tags(@html_span_microformats_sample, Pleroma.HTML.Scrubber.TwitterText) +    end + +    test "filters invalid microformats markup" do +      expected = """ +      <span class="h-card"><a>@<span>foo</span></a></span> +      """ + +      assert expected == +               HTML.filter_tags( +                 @html_span_invalid_microformats_sample, +                 Pleroma.HTML.Scrubber.TwitterText +               ) +    end    end    describe "default scrubber" do @@ -88,5 +130,34 @@ defmodule Pleroma.HTMLTest do        assert expected == HTML.filter_tags(@html_onerror_sample, Pleroma.HTML.Scrubber.Default)      end + +    test "does not allow spans with invalid classes" do +      expected = """ +      <span>hi</span> +      """ + +      assert expected == HTML.filter_tags(@html_span_class_sample, Pleroma.HTML.Scrubber.Default) +    end + +    test "does allow microformats" do +      expected = """ +      <span class="h-card"><a class="u-url mention">@<span>foo</span></a></span> +      """ + +      assert expected == +               HTML.filter_tags(@html_span_microformats_sample, Pleroma.HTML.Scrubber.Default) +    end + +    test "filters invalid microformats markup" do +      expected = """ +      <span class="h-card"><a>@<span>foo</span></a></span> +      """ + +      assert expected == +               HTML.filter_tags( +                 @html_span_invalid_microformats_sample, +                 Pleroma.HTML.Scrubber.Default +               ) +    end    end  end  | 
