diff options
author | Mark Felder <feld@FreeBSD.org> | 2020-09-23 11:56:22 -0500 |
---|---|---|
committer | Mark Felder <feld@FreeBSD.org> | 2020-09-23 11:56:22 -0500 |
commit | f3a1f9c3bbb7321876a09b3846b5e10ecf4af94f (patch) | |
tree | bcfd29188a841470cdeca478b1c5a3bbd4cc930a /test/web/fed_sockets/fetch_registry_test.exs | |
parent | 34d7e864db8f9cc7fb73ce2fef8466ce8e09ed85 (diff) | |
parent | e02101e15c425416975f756aca7f3b058006668d (diff) | |
download | pleroma-f3a1f9c3bbb7321876a09b3846b5e10ecf4af94f.tar.gz pleroma-f3a1f9c3bbb7321876a09b3846b5e10ecf4af94f.zip |
Merge branch 'develop' into feature/bulk-confirmation
Diffstat (limited to 'test/web/fed_sockets/fetch_registry_test.exs')
-rw-r--r-- | test/web/fed_sockets/fetch_registry_test.exs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/web/fed_sockets/fetch_registry_test.exs b/test/web/fed_sockets/fetch_registry_test.exs new file mode 100644 index 000000000..7bd2d995a --- /dev/null +++ b/test/web/fed_sockets/fetch_registry_test.exs @@ -0,0 +1,67 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.FedSockets.FetchRegistryTest do + use ExUnit.Case + + alias Pleroma.Web.FedSockets.FetchRegistry + alias Pleroma.Web.FedSockets.FetchRegistry.FetchRegistryData + + @json_message "hello" + @json_reply "hello back" + + setup do + start_supervised( + {Pleroma.Web.FedSockets.Supervisor, + [ + ping_interval: 8, + connection_duration: 15, + rejection_duration: 5, + fed_socket_fetches: [default: 10, interval: 10] + ]} + ) + + :ok + end + + test "fetches can be stored" do + uuid = FetchRegistry.register_fetch(@json_message) + + assert {:error, :waiting} = FetchRegistry.check_fetch(uuid) + end + + test "fetches can return" do + uuid = FetchRegistry.register_fetch(@json_message) + task = Task.async(fn -> FetchRegistry.register_fetch_received(uuid, @json_reply) end) + + assert {:error, :waiting} = FetchRegistry.check_fetch(uuid) + Task.await(task) + + assert {:ok, %FetchRegistryData{received_json: received_json}} = + FetchRegistry.check_fetch(uuid) + + assert received_json == @json_reply + end + + test "fetches are deleted once popped from stack" do + uuid = FetchRegistry.register_fetch(@json_message) + task = Task.async(fn -> FetchRegistry.register_fetch_received(uuid, @json_reply) end) + Task.await(task) + + assert {:ok, %FetchRegistryData{received_json: received_json}} = + FetchRegistry.check_fetch(uuid) + + assert received_json == @json_reply + assert {:ok, @json_reply} = FetchRegistry.pop_fetch(uuid) + + assert {:error, :missing} = FetchRegistry.check_fetch(uuid) + end + + test "fetches can time out" do + uuid = FetchRegistry.register_fetch(@json_message) + assert {:error, :waiting} = FetchRegistry.check_fetch(uuid) + Process.sleep(500) + assert {:error, :missing} = FetchRegistry.check_fetch(uuid) + end +end |