7400d2abc2e46641b704970afe83bbd12b33eded
[akkoma] / test / federation / federation_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Integration.FederationTest do
6 use Pleroma.DataCase
7
8 import Pleroma.Cluster
9
10 @federated1 :"federated1@127.0.0.1"
11
12 describe "federated cluster primitives" do
13 test "within/2 captures local bindings and executes block on remote node" do
14 captured_binding = :captured
15
16 result =
17 within @federated1 do
18 user = Pleroma.Factory.insert(:user)
19 {captured_binding, node(), user}
20 end
21
22 assert {:captured, @federated1, user} = result
23 refute Pleroma.User.get_by_id(user.id)
24 assert user.id == within(@federated1, do: Pleroma.User.get_by_id(user.id)).id
25 end
26
27 test "runs webserver on customized port" do
28 {nickname, url, url_404} =
29 within @federated1 do
30 import Pleroma.Web.Router.Helpers
31 user = Pleroma.Factory.insert(:user)
32 user_url = mastodon_api_url(Pleroma.Web.Endpoint, :user, user)
33 url_404 = mastodon_api_url(Pleroma.Web.Endpoint, :user, "not-exists")
34
35 {user.nickname, user_url, url_404}
36 end
37
38 assert {:ok, {{_, 200, _}, _headers, body}} = :httpc.request(~c"#{url}")
39 assert %{"acct" => ^nickname} = Jason.decode!(body)
40 assert {:ok, {{_, 404, _}, _headers, _body}} = :httpc.request(~c"#{url_404}")
41 end
42 end
43 end