54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule Pleroma.Web.RichMedia.RichMediaControllerTest do
 | 
						|
  use Pleroma.Web.ConnCase
 | 
						|
  import Pleroma.Factory
 | 
						|
 | 
						|
  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")}
 | 
						|
 | 
						|
      %{method: :get, url: "http://example.com/empty"} ->
 | 
						|
        %Tesla.Env{status: 200, body: "hello"}
 | 
						|
    end)
 | 
						|
 | 
						|
    :ok
 | 
						|
  end
 | 
						|
 | 
						|
  describe "GET /api/rich_media/parse" do
 | 
						|
    setup do
 | 
						|
      user = insert(:user)
 | 
						|
 | 
						|
      [user: user]
 | 
						|
    end
 | 
						|
 | 
						|
    test "returns 404 if not metadata found", %{user: user} do
 | 
						|
      build_conn()
 | 
						|
      |> with_credentials(user.nickname, "test")
 | 
						|
      |> get("/api/rich_media/parse", %{"url" => "http://example.com/empty"})
 | 
						|
      |> json_response(404)
 | 
						|
    end
 | 
						|
 | 
						|
    test "returns OGP metadata", %{user: user} do
 | 
						|
      response =
 | 
						|
        build_conn()
 | 
						|
        |> with_credentials(user.nickname, "test")
 | 
						|
        |> get("/api/rich_media/parse", %{"url" => "http://example.com/ogp"})
 | 
						|
        |> json_response(200)
 | 
						|
 | 
						|
      assert response == %{
 | 
						|
               "image" => "http://ia.media-imdb.com/images/rock.jpg",
 | 
						|
               "title" => "The Rock",
 | 
						|
               "type" => "video.movie",
 | 
						|
               "url" => "http://www.imdb.com/title/tt0117500/"
 | 
						|
             }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  defp with_credentials(conn, username, password) do
 | 
						|
    header_content = "Basic " <> Base.encode64("#{username}:#{password}")
 | 
						|
    put_req_header(conn, "authorization", header_content)
 | 
						|
  end
 | 
						|
end
 |