49 lines
1.3 KiB
Elixir
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
|