pleroma/test/web/rich_media/parsers/twitter_card_test.exs

114 lines
4.9 KiB
Elixir
Raw Normal View History

2019-08-06 13:19:28 -07:00
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
2019-08-06 13:19:28 -07: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
assert TwitterCard.parse([{"html", [], [{"head", [], []}, {"body", [], []}]}], %{}) ==
{:error, "No twitter card metadata found"}
2019-08-06 13:19:28 -07:00
end
test "parses twitter card with only name attributes" do
html =
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers3.html")
|> Floki.parse_document!()
2019-08-06 13:19:28 -07:00
assert TwitterCard.parse(html, %{}) ==
{:ok,
%{
2020-06-09 10:49:24 -07:00
"app:id:googleplay" => "com.nytimes.android",
"app:name:googleplay" => "NYTimes",
"app:url:googleplay" => "nytimes://reader/id/100000006583622",
"site" => nil,
"title" =>
2019-08-06 13:19:28 -07:00
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database. - The New York Times"
}}
end
test "parses twitter card with only property attributes" do
html =
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers2.html")
|> Floki.parse_document!()
2019-08-06 13:19:28 -07:00
assert TwitterCard.parse(html, %{}) ==
{:ok,
%{
2020-06-09 10:49:24 -07:00
"card" => "summary_large_image",
"description" =>
2019-08-06 13:19:28 -07:00
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
2020-06-09 10:49:24 -07:00
"image" =>
2019-08-06 13:19:28 -07:00
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
2020-06-09 10:49:24 -07:00
"image:alt" => "",
"title" =>
2019-08-06 13:19:28 -07:00
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
2020-06-09 10:49:24 -07:00
"url" =>
2019-08-06 13:19:28 -07:00
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
}}
end
test "parses twitter card with name & property attributes" do
html =
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers.html")
|> Floki.parse_document!()
2019-08-06 13:19:28 -07:00
assert TwitterCard.parse(html, %{}) ==
{:ok,
%{
2020-06-09 10:49:24 -07:00
"app:id:googleplay" => "com.nytimes.android",
"app:name:googleplay" => "NYTimes",
"app:url:googleplay" => "nytimes://reader/id/100000006583622",
"card" => "summary_large_image",
"description" =>
2019-08-06 13:19:28 -07:00
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
2020-06-09 10:49:24 -07:00
"image" =>
2019-08-06 13:19:28 -07:00
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
2020-06-09 10:49:24 -07:00
"image:alt" => "",
"site" => nil,
"title" =>
2019-08-06 13:19:28 -07:00
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
2020-06-09 10:49:24 -07:00
"url" =>
2019-08-06 13:19:28 -07:00
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
}}
end
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"
html =
File.read!("test/fixtures/margaret-corbin-grave-west-point.html") |> Floki.parse_document!()
assert TwitterCard.parse(html, %{}) ==
{:ok,
%{
2020-06-09 10:49:24 -07:00
"site" => "@atlasobscura",
"title" =>
"The Missing Grave of Margaret Corbin, Revolutionary War Veteran - Atlas Obscura",
2020-06-09 10:49:24 -07:00
"card" => "summary_large_image",
"image" => image_path
}}
end
2020-01-29 00:13:34 -08:00
test "takes first founded title in html head if there is html markup error" do
html =
File.read!("test/fixtures/nypd-facial-recognition-children-teenagers4.html")
|> Floki.parse_document!()
2020-01-29 00:13:34 -08:00
assert TwitterCard.parse(html, %{}) ==
{:ok,
%{
2020-06-09 10:49:24 -07:00
"site" => nil,
"title" =>
2020-01-29 00:13:34 -08:00
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database. - The New York Times",
2020-06-09 10:49:24 -07:00
"app:id:googleplay" => "com.nytimes.android",
"app:name:googleplay" => "NYTimes",
"app:url:googleplay" => "nytimes://reader/id/100000006583622"
2020-01-29 00:13:34 -08:00
}}
end
2019-08-06 13:19:28 -07:00
end