Files
parrhesia/test/parrhesia/tasks/nip66_publisher_test.exs

49 lines
1.3 KiB
Elixir

defmodule Parrhesia.Tasks.Nip66PublisherTest do
use Parrhesia.IntegrationCase, async: false
alias Parrhesia.API.Events
alias Parrhesia.API.Identity
alias Parrhesia.API.RequestContext
alias Parrhesia.Tasks.Nip66Publisher
test "publishes a NIP-66 snapshot when ticked" do
path =
Path.join(
System.tmp_dir!(),
"parrhesia_nip66_worker_#{System.unique_integer([:positive, :monotonic])}.json"
)
on_exit(fn ->
_ = File.rm(path)
end)
probe_fun = fn _target, _probe_opts, _publish_opts ->
{:ok, %{checks: [:open], metrics: %{rtt_open_ms: 8}, relay_info: nil, relay_info_body: nil}}
end
worker =
start_supervised!(
{Nip66Publisher,
name: nil,
interval_ms: 60_000,
path: path,
now: 1_700_000_123,
probe_fun: probe_fun,
config: [enabled: true, publish_interval_seconds: 600, targets: [%{listener: :public}]]}
)
send(worker, :tick)
_ = :sys.get_state(worker)
{:ok, %{pubkey: pubkey}} = Identity.get(path: path)
assert {:ok, events} =
Events.query(
[%{"authors" => [pubkey], "kinds" => [10_166, 30_166]}],
context: %RequestContext{}
)
assert Enum.sort(Enum.map(events, & &1["kind"])) == [10_166, 30_166]
end
end