parser_test.exs 3.44 KB
Newer Older
Maxim Filippov's avatar
Maxim Filippov committed
1
2
3
4
5
6
7
8
9
10
defmodule Pleroma.Web.RichMedia.ParserTest do
  use ExUnit.Case, async: true

  setup do
    Tesla.Mock.mock(fn
      %{
        method: :get,
        url: "http://example.com/ogp"
      } ->
        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/ogp.html")}
11

Maxim Filippov's avatar
Maxim Filippov committed
12
13
14
15
16
17
      %{
        method: :get,
        url: "http://example.com/twitter-card"
      } ->
        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")}

Maxim Filippov's avatar
Maxim Filippov committed
18
19
20
21
22
23
24
25
26
27
28
29
      %{
        method: :get,
        url: "http://example.com/oembed"
      } ->
        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.html")}

      %{
        method: :get,
        url: "http://example.com/oembed.json"
      } ->
        %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.json")}

30
31
      %{method: :get, url: "http://example.com/empty"} ->
        %Tesla.Env{status: 200, body: "hello"}
Maxim Filippov's avatar
Maxim Filippov committed
32
33
34
35
36
    end)

    :ok
  end

37
38
39
40
  test "returns error when no metadata present" do
    assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/empty")
  end

Maxim Filippov's avatar
Maxim Filippov committed
41
42
  test "parses ogp" do
    assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp") ==
43
44
45
46
47
48
49
             {:ok,
              %{
                image: "http://ia.media-imdb.com/images/rock.jpg",
                title: "The Rock",
                type: "video.movie",
                url: "http://www.imdb.com/title/tt0117500/"
              }}
Maxim Filippov's avatar
Maxim Filippov committed
50
  end
Maxim Filippov's avatar
Maxim Filippov committed
51
52
53
54
55
56
57
58
59
60
61
62

  test "parses twitter card" do
    assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/twitter-card") ==
             {:ok,
              %{
                card: "summary",
                site: "@flickr",
                image: "https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg",
                title: "Small Island Developing States Photo Submission",
                description: "View the album on Flickr."
              }}
  end
Maxim Filippov's avatar
Maxim Filippov committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

  test "parses OEmbed" do
    assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/oembed") ==
             {:ok,
              %{
                "author_name" => "bees",
                "author_url" => "https://www.flickr.com/photos/bees/",
                "cache_age" => 3600,
                "flickr_type" => "photo",
                "height" => "768",
                "html" =>
                  "<a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/bees/2362225867/\" title=\"Bacon Lollys by bees, on Flickr\"><img src=\"https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_b.jpg\" width=\"1024\" height=\"768\" alt=\"Bacon Lollys\"></a><script async src=\"https://embedr.flickr.com/assets/client-code.js\" charset=\"utf-8\"></script>",
                "license" => "All Rights Reserved",
                "license_id" => 0,
                "provider_name" => "Flickr",
                "provider_url" => "https://www.flickr.com/",
                "thumbnail_height" => 150,
                "thumbnail_url" =>
                  "https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_q.jpg",
                "thumbnail_width" => 150,
                "title" => "Bacon Lollys",
                "type" => "photo",
                "url" => "https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_b.jpg",
                "version" => "1.0",
                "web_page" => "https://www.flickr.com/photos/bees/2362225867/",
                "web_page_short_url" => "https://flic.kr/p/4AK2sc",
                "width" => "1024"
              }}
  end
Maxim Filippov's avatar
Maxim Filippov committed
92
end