74 lines
2.8 KiB
Elixir
74 lines
2.8 KiB
Elixir
defmodule Mobilizon.Federation.ActivityPub.Transmogrifier.AcceptTest do
|
|
use Mobilizon.DataCase
|
|
|
|
import Mox
|
|
alias Mobilizon.Federation.ActivityPub.Transmogrifier
|
|
alias Mobilizon.Service.HTTP.ActivityPub.Mock
|
|
|
|
describe "Receiving an Accept Join Event activity from a foreign instance" do
|
|
@base_actor_data File.read!("test/fixtures/mastodon-actor.json")
|
|
|> Jason.decode!()
|
|
@actor_url "https://mobilizon.extinctionrebellion.fr/@anonymous"
|
|
@actor_data @base_actor_data
|
|
|> Map.put("id", @actor_url)
|
|
|> Map.put("preferredUsername", "anonymous")
|
|
|
|
@osmi_actor_url "https://mobilizon.extinctionrebellion.fr/@osmi"
|
|
@osmi_actor_data @base_actor_data
|
|
|> Map.put("id", @osmi_actor_url)
|
|
|> Map.put("preferredUsername", "osmi")
|
|
|
|
@xr_nantes_actor_url "https://mobilizon.extinctionrebellion.fr/@xr_nantes"
|
|
@xr_nantes_actor_data @base_actor_data
|
|
|> Map.put("id", @xr_nantes_actor_url)
|
|
|> Map.put("preferredUsername", "xr_nantes")
|
|
|
|
@event_url "https://mobilizon.extinctionrebellion.fr/events/d70f8e0d-62dc-4897-a855-ebcbe9798fc1"
|
|
@event_data File.read!("test/fixtures/mobilizon-post-activity.json")
|
|
|> Jason.decode!()
|
|
|> Map.get("object")
|
|
|> Map.put("id", @event_url)
|
|
|> Map.put("actor", @osmi_actor_url)
|
|
|> Map.put("attributedTo", @xr_nantes_actor_url)
|
|
|> Map.put("tag", [])
|
|
|
|
test "When the event is remote" do
|
|
object = %{
|
|
"actor" => @actor_url,
|
|
"id" =>
|
|
"https://mobilizon.extinctionrebellion.fr/join/event/b67cf172-af23-4ae8-b00e-a2e3643ccb21",
|
|
"object" =>
|
|
"https://mobilizon.extinctionrebellion.fr/events/d70f8e0d-62dc-4897-a855-ebcbe9798fc1",
|
|
"participationMessage" => nil,
|
|
"published" => "2022-03-28T20:11:11Z",
|
|
"type" => "Join"
|
|
}
|
|
|
|
activity = %{
|
|
"type" => "Accept",
|
|
"object" => object,
|
|
"actor" => @actor_url,
|
|
"id" =>
|
|
"https://mobilizon.extinctionrebellion.fr/join/event/b67cf172-af23-4ae8-b00e-a2e3643ccb21/activity"
|
|
}
|
|
|
|
Mock
|
|
|> expect(:call, 4, fn
|
|
%{method: :get, url: @actor_url}, _opts ->
|
|
{:ok, %Tesla.Env{status: 200, body: @actor_data}}
|
|
|
|
%{method: :get, url: @osmi_actor_url}, _opts ->
|
|
{:ok, %Tesla.Env{status: 200, body: @osmi_actor_data}}
|
|
|
|
%{method: :get, url: @xr_nantes_actor_url}, _opts ->
|
|
{:ok, %Tesla.Env{status: 200, body: @xr_nantes_actor_data}}
|
|
|
|
%{method: :get, url: @event_url}, _opts ->
|
|
{:ok, %Tesla.Env{status: 200, body: @event_data}}
|
|
end)
|
|
|
|
assert {:ok, _activity, _object} = Transmogrifier.handle_incoming(activity)
|
|
end
|
|
end
|
|
end
|