2019-08-06 14:19:28 -06:00
|
|
|
# Pleroma: A lightweight social networking server
|
2020-03-01 22:08:45 -07:00
|
|
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
2019-08-06 14:19:28 -06:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
|
|
|
use ExUnit.Case, async: true
|
|
|
|
alias Pleroma.Web.RichMedia.Parsers.TwitterCard
|
|
|
|
|
|
|
|
test "returns error when html not contains twitter card" do
|
2020-06-11 07:57:31 -06:00
|
|
|
assert TwitterCard.parse([{"html", [], [{"head", [], []}, {"body", [], []}]}], %{}) == %{}
|
2019-08-06 14:19:28 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
test "parses twitter card with only name attributes" do
|
2020-02-15 15:55:26 -07:00
|
|
|
html =
|
|
|
|
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers3.html")
|
|
|
|
|> Floki.parse_document!()
|
2019-08-06 14:19:28 -06:00
|
|
|
|
|
|
|
assert TwitterCard.parse(html, %{}) ==
|
2020-06-11 07:57:31 -06:00
|
|
|
%{
|
|
|
|
"app:id:googleplay": "com.nytimes.android",
|
|
|
|
"app:name:googleplay": "NYTimes",
|
|
|
|
"app:url:googleplay": "nytimes://reader/id/100000006583622",
|
|
|
|
site: nil,
|
|
|
|
description:
|
|
|
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
|
|
|
image:
|
|
|
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-facebookJumbo.jpg",
|
|
|
|
type: "article",
|
|
|
|
url:
|
|
|
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html",
|
|
|
|
title:
|
|
|
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database."
|
|
|
|
}
|
2019-08-06 14:19:28 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
test "parses twitter card with only property attributes" do
|
2020-02-15 15:55:26 -07:00
|
|
|
html =
|
|
|
|
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers2.html")
|
|
|
|
|> Floki.parse_document!()
|
2019-08-06 14:19:28 -06:00
|
|
|
|
|
|
|
assert TwitterCard.parse(html, %{}) ==
|
2020-06-11 07:57:31 -06:00
|
|
|
%{
|
|
|
|
card: "summary_large_image",
|
|
|
|
description:
|
|
|
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
|
|
|
image:
|
|
|
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
|
|
|
|
"image:alt": "",
|
|
|
|
title:
|
|
|
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
|
|
|
url:
|
|
|
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html",
|
|
|
|
type: "article"
|
|
|
|
}
|
2019-08-06 14:19:28 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
test "parses twitter card with name & property attributes" do
|
2020-02-15 15:55:26 -07:00
|
|
|
html =
|
|
|
|
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers.html")
|
|
|
|
|> Floki.parse_document!()
|
2019-08-06 14:19:28 -06:00
|
|
|
|
|
|
|
assert TwitterCard.parse(html, %{}) ==
|
2020-06-11 07:57:31 -06:00
|
|
|
%{
|
|
|
|
"app:id:googleplay": "com.nytimes.android",
|
|
|
|
"app:name:googleplay": "NYTimes",
|
|
|
|
"app:url:googleplay": "nytimes://reader/id/100000006583622",
|
|
|
|
card: "summary_large_image",
|
|
|
|
description:
|
|
|
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
|
|
|
image:
|
|
|
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
|
|
|
|
"image:alt": "",
|
|
|
|
site: nil,
|
|
|
|
title:
|
|
|
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
|
|
|
url:
|
|
|
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html",
|
|
|
|
type: "article"
|
|
|
|
}
|
2019-08-06 14:19:28 -06:00
|
|
|
end
|
2020-01-28 09:29:27 -07:00
|
|
|
|
|
|
|
test "respect only first title tag on the page" do
|
|
|
|
image_path =
|
|
|
|
"https://assets.atlasobscura.com/media/W1siZiIsInVwbG9hZHMvYXNzZXRzLzkwYzgyMzI4LThlMDUtNGRiNS05MDg3LTUzMGUxZTM5N2RmMmVkOTM5ZDM4MGM4OTIx" <>
|
|
|
|
"YTQ5MF9EQVIgZXhodW1hdGlvbiBvZiBNYXJnYXJldCBDb3JiaW4gZ3JhdmUgMTkyNi5qcGciXSxbInAiLCJjb252ZXJ0IiwiIl0sWyJwIiwiY29udmVydCIsIi1xdWFsaXR5IDgxIC1hdXRvLW9" <>
|
|
|
|
"yaWVudCJdLFsicCIsInRodW1iIiwiNjAweD4iXV0/DAR%20exhumation%20of%20Margaret%20Corbin%20grave%201926.jpg"
|
|
|
|
|
2020-02-15 15:55:26 -07:00
|
|
|
html =
|
|
|
|
File.read!("test/fixtures/margaret-corbin-grave-west-point.html") |> Floki.parse_document!()
|
2020-01-28 09:29:27 -07:00
|
|
|
|
|
|
|
assert TwitterCard.parse(html, %{}) ==
|
2020-06-11 07:57:31 -06:00
|
|
|
%{
|
|
|
|
site: "@atlasobscura",
|
|
|
|
title: "The Missing Grave of Margaret Corbin, Revolutionary War Veteran",
|
|
|
|
card: "summary_large_image",
|
|
|
|
image: image_path,
|
|
|
|
description:
|
|
|
|
"She's the only woman veteran honored with a monument at West Point. But where was she buried?",
|
|
|
|
site_name: "Atlas Obscura",
|
|
|
|
type: "article",
|
|
|
|
url: "http://www.atlasobscura.com/articles/margaret-corbin-grave-west-point"
|
|
|
|
}
|
2020-01-28 09:29:27 -07:00
|
|
|
end
|
2020-01-29 01:13:34 -07:00
|
|
|
|
|
|
|
test "takes first founded title in html head if there is html markup error" do
|
2020-02-15 15:55:26 -07:00
|
|
|
html =
|
|
|
|
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers4.html")
|
|
|
|
|> Floki.parse_document!()
|
2020-01-29 01:13:34 -07:00
|
|
|
|
|
|
|
assert TwitterCard.parse(html, %{}) ==
|
2020-06-11 07:57:31 -06:00
|
|
|
%{
|
|
|
|
site: nil,
|
|
|
|
title:
|
|
|
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
|
|
|
"app:id:googleplay": "com.nytimes.android",
|
|
|
|
"app:name:googleplay": "NYTimes",
|
|
|
|
"app:url:googleplay": "nytimes://reader/id/100000006583622",
|
|
|
|
description:
|
|
|
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
|
|
|
image:
|
|
|
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-facebookJumbo.jpg",
|
|
|
|
type: "article",
|
|
|
|
url:
|
|
|
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
|
|
|
|
}
|
2020-01-29 01:13:34 -07:00
|
|
|
end
|
2019-08-06 14:19:28 -06:00
|
|
|
end
|