summaryrefslogtreecommitdiff
path: root/test/web/fed_sockets/fetch_registry_test.exs
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-09-18 11:58:23 +0000
committerlain <lain@soykaf.club>2020-09-18 11:58:23 +0000
commit875b6654ec3f4cd0dd965bd3d2bdc1f67bb9c07a (patch)
tree0c2b3f2ba7b582a2e8ae4a83dbef42e8132c7b47 /test/web/fed_sockets/fetch_registry_test.exs
parent49584a9928f02b461a0356332440084473ea6b69 (diff)
parentf2ef9735c52c648a03de4af41f19bb4ec857de03 (diff)
downloadpleroma-875b6654ec3f4cd0dd965bd3d2bdc1f67bb9c07a.tar.gz
pleroma-875b6654ec3f4cd0dd965bd3d2bdc1f67bb9c07a.zip
Merge branch 'websocket-data-fed' into 'develop'
Federate data through persistent websocket connections See merge request pleroma/pleroma!2408
Diffstat (limited to 'test/web/fed_sockets/fetch_registry_test.exs')
-rw-r--r--test/web/fed_sockets/fetch_registry_test.exs67
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