1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.RichMedia.CardTest do
6 use Pleroma.DataCase, async: true
8 alias Pleroma.UnstubbedConfigMock, as: ConfigMock
9 alias Pleroma.Web.CommonAPI
10 alias Pleroma.Web.RichMedia.Card
13 import Pleroma.Factory
17 mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
20 |> stub_with(Pleroma.Test.StaticConfig)
25 setup do: clear_config([:rich_media, :enabled], true)
27 test "crawls URL in activity" do
30 url = "https://example.com/ogp"
31 url_hash = Card.url_to_hash(url)
34 CommonAPI.post(user, %{
35 status: "[test](#{url})",
36 content_type: "text/markdown"
39 assert %Card{url_hash: ^url_hash, fields: _} = Card.get_by_activity(activity)
42 test "recrawls URLs on status edits/updates" do
43 original_url = "https://google.com/"
44 original_url_hash = Card.url_to_hash(original_url)
45 updated_url = "https://yahoo.com/"
46 updated_url_hash = Card.url_to_hash(updated_url)
49 {:ok, activity} = CommonAPI.post(user, %{status: "I like this site #{original_url}"})
52 Card.get_by_activity(activity)
55 %Card{url_hash: ^original_url_hash, fields: _},
56 Card.get_by_activity(activity)
59 {:ok, _} = CommonAPI.update(user, activity, %{status: "I like this site #{updated_url}"})
61 activity = Pleroma.Activity.get_by_id(activity.id)
64 Card.get_by_activity(activity)
67 %Card{url_hash: ^updated_url_hash, fields: _},
68 Card.get_by_activity(activity)