1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.FedSockets.FetchRegistryTest do
8 alias Pleroma.Web.FedSockets.FetchRegistry
9 alias Pleroma.Web.FedSockets.FetchRegistry.FetchRegistryData
12 @json_reply "hello back"
16 {Pleroma.Web.FedSockets.Supervisor,
19 connection_duration: 15,
20 rejection_duration: 5,
21 fed_socket_fetches: [default: 10, interval: 10]
28 test "fetches can be stored" do
29 uuid = FetchRegistry.register_fetch(@json_message)
31 assert {:error, :waiting} = FetchRegistry.check_fetch(uuid)
34 test "fetches can return" do
35 uuid = FetchRegistry.register_fetch(@json_message)
36 task = Task.async(fn -> FetchRegistry.register_fetch_received(uuid, @json_reply) end)
38 assert {:error, :waiting} = FetchRegistry.check_fetch(uuid)
41 assert {:ok, %FetchRegistryData{received_json: received_json}} =
42 FetchRegistry.check_fetch(uuid)
44 assert received_json == @json_reply
47 test "fetches are deleted once popped from stack" do
48 uuid = FetchRegistry.register_fetch(@json_message)
49 task = Task.async(fn -> FetchRegistry.register_fetch_received(uuid, @json_reply) end)
52 assert {:ok, %FetchRegistryData{received_json: received_json}} =
53 FetchRegistry.check_fetch(uuid)
55 assert received_json == @json_reply
56 assert {:ok, @json_reply} = FetchRegistry.pop_fetch(uuid)
58 assert {:error, :missing} = FetchRegistry.check_fetch(uuid)
61 test "fetches can time out" do
62 uuid = FetchRegistry.register_fetch(@json_message)
63 assert {:error, :waiting} = FetchRegistry.check_fetch(uuid)
65 assert {:error, :missing} = FetchRegistry.check_fetch(uuid)