fef12651325ebbae419f9a96f9a5cf71aa5ff1fb
[akkoma] / test / web / rich_media / controllers / rich_media_controller_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.RichMedia.RichMediaControllerTest do
6 use Pleroma.Web.ConnCase
7 import Pleroma.Factory
8 import Tesla.Mock
9
10 setup do
11 mock(fn env -> apply(HttpRequestMock, :request, [env]) end)
12 :ok
13 end
14
15 describe "GET /api/rich_media/parse" do
16 setup do
17 user = insert(:user)
18
19 [user: user]
20 end
21
22 test "returns 404 if not metadata found", %{user: user} do
23 build_conn()
24 |> with_credentials(user.nickname, "test")
25 |> get("/api/rich_media/parse", %{"url" => "http://example.com/empty"})
26 |> json_response(404)
27 end
28
29 test "returns OGP metadata", %{user: user} do
30 response =
31 build_conn()
32 |> with_credentials(user.nickname, "test")
33 |> get("/api/rich_media/parse", %{"url" => "http://example.com/ogp"})
34 |> json_response(200)
35
36 assert response == %{
37 "image" => "http://ia.media-imdb.com/images/rock.jpg",
38 "title" => "The Rock",
39 "type" => "video.movie",
40 "url" => "http://www.imdb.com/title/tt0117500/"
41 }
42 end
43 end
44
45 defp with_credentials(conn, username, password) do
46 header_content = "Basic " <> Base.encode64("#{username}:#{password}")
47 put_req_header(conn, "authorization", header_content)
48 end
49 end