diff options
Diffstat (limited to 'test/web/mastodon_api')
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 81 | 
1 files changed, 61 insertions, 20 deletions
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 1d9f5a816..93ef630f2 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -2684,33 +2684,50 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do                 |> post("/api/v1/statuses/#{activity_two.id}/pin")                 |> json_response(400)      end +  end -    test "Status rich-media Card", %{conn: conn, user: user} do +  describe "cards" do +    setup do        Pleroma.Config.put([:rich_media, :enabled], true) + +      on_exit(fn -> +        Pleroma.Config.put([:rich_media, :enabled], false) +      end) + +      user = insert(:user) +      %{user: user} +    end + +    test "returns rich-media card", %{conn: conn, user: user} do        {:ok, activity} = CommonAPI.post(user, %{"status" => "http://example.com/ogp"}) +      card_data = %{ +        "image" => "http://ia.media-imdb.com/images/rock.jpg", +        "provider_name" => "www.imdb.com", +        "provider_url" => "http://www.imdb.com", +        "title" => "The Rock", +        "type" => "link", +        "url" => "http://www.imdb.com/title/tt0117500/", +        "description" => +          "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", +        "pleroma" => %{ +          "opengraph" => %{ +            "image" => "http://ia.media-imdb.com/images/rock.jpg", +            "title" => "The Rock", +            "type" => "video.movie", +            "url" => "http://www.imdb.com/title/tt0117500/", +            "description" => +              "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer." +          } +        } +      } +        response =          conn          |> get("/api/v1/statuses/#{activity.id}/card")          |> json_response(200) -      assert response == %{ -               "image" => "http://ia.media-imdb.com/images/rock.jpg", -               "provider_name" => "www.imdb.com", -               "provider_url" => "http://www.imdb.com", -               "title" => "The Rock", -               "type" => "link", -               "url" => "http://www.imdb.com/title/tt0117500/", -               "description" => nil, -               "pleroma" => %{ -                 "opengraph" => %{ -                   "image" => "http://ia.media-imdb.com/images/rock.jpg", -                   "title" => "The Rock", -                   "type" => "video.movie", -                   "url" => "http://www.imdb.com/title/tt0117500/" -                 } -               } -             } +      assert response == card_data        # works with private posts        {:ok, activity} = @@ -2722,9 +2739,33 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do          |> get("/api/v1/statuses/#{activity.id}/card")          |> json_response(200) -      assert response_two == response +      assert response_two == card_data +    end + +    test "replaces missing description with an empty string", %{conn: conn, user: user} do +      {:ok, activity} = CommonAPI.post(user, %{"status" => "http://example.com/ogp-missing-data"}) + +      response = +        conn +        |> get("/api/v1/statuses/#{activity.id}/card") +        |> json_response(:ok) -      Pleroma.Config.put([:rich_media, :enabled], false) +      assert response == %{ +               "type" => "link", +               "title" => "Pleroma", +               "description" => "", +               "image" => nil, +               "provider_name" => "pleroma.social", +               "provider_url" => "https://pleroma.social", +               "url" => "https://pleroma.social/", +               "pleroma" => %{ +                 "opengraph" => %{ +                   "title" => "Pleroma", +                   "type" => "website", +                   "url" => "https://pleroma.social/" +                 } +               } +             }      end    end  | 
