floof/test/floof_test.exs

65 lines
2.2 KiB
Elixir
Raw Normal View History

2022-11-22 15:41:59 +00:00
defmodule FloofTest do
use ExUnit.Case
doctest Floof
2022-11-23 23:56:38 +00:00
test "SessionManager basic" do
cur = self()
2022-11-24 19:01:34 +00:00
2022-11-23 23:56:38 +00:00
spawn_link(fn ->
Floof.SessionManager.push(:a, 0)
Floof.SessionManager.push(:a, 2)
Floof.SessionManager.push(:a, 3)
assert Floof.SessionManager.pop(:a) == {:value, 0}
assert Floof.SessionManager.pop(:a) == {:value, 2}
assert Floof.SessionManager.pop(:a) == {:value, 3}
assert Floof.SessionManager.pop(:a) == :empty
2022-11-24 19:01:34 +00:00
send(cur, :done)
2022-11-23 23:56:38 +00:00
end)
spawn_link(fn ->
Floof.SessionManager.push(:b, 50)
Floof.SessionManager.push(:b, 12)
Floof.SessionManager.push(:b, 1)
assert Floof.SessionManager.pop(:b) == {:value, 50}
assert Floof.SessionManager.pop(:b) == {:value, 12}
assert Floof.SessionManager.pop(:b) == {:value, 1}
assert Floof.SessionManager.pop(:b) == :empty
2022-11-24 19:01:34 +00:00
send(cur, :done)
2022-11-23 23:56:38 +00:00
end)
2022-11-24 19:01:34 +00:00
for _ <- [1, 2] do
2022-11-23 23:56:38 +00:00
receive do
:done -> nil
end
end
2022-11-22 15:41:59 +00:00
end
2022-11-24 15:30:14 +00:00
test "Simple usage" do
# kp = :enacl.sign_keypair()
# :ok = File.write("mock_keydb/test01.secret", kp.secret)
# {:ok, pkname} = :FloofProtocol.encode(:RDNSequence, [{:RelativeDistinguishedName, {0, 9, 2342, 19200300, 100, 1, 25}, "test"}])
# :ok = File.write("mock_keydb/" <> Base.url_encode64(pkname), kp.public)
{:ok, secret_key} = File.read("mock_keydb/test01.secret")
2022-11-24 19:01:34 +00:00
source = [{:RelativeDistinguishedName, {0, 9, 2342, 19_200_300, 100, 1, 25}, "test"}]
msg_id = <<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>>
2022-11-24 15:30:14 +00:00
msg_topic = [{:RelativeDistinguishedName, {2, 5, 4, 41}, "test topic"}]
msg_inner = Floof.Message.pack_inner(msg_id, msg_topic, [], :info, <<0, 0>>)
ttl = :erlang.convert_time_unit(:erlang.system_time(), :native, :second) + 60
msg_outer = Floof.Message.build_outer(source, ttl, [], secret_key, msg_inner)
{:ok, msg_encd} = :FloofProtocol.encode(:ProtoMessage, {:xfer, msg_outer})
2022-11-24 17:32:48 +00:00
Floof.Distributor.register(self())
2022-11-24 15:30:14 +00:00
2022-11-24 19:01:34 +00:00
{:ok, socket} = :gen_tcp.connect({127, 0, 0, 1}, 2540, packet: 4, active: false)
2022-11-24 17:56:15 +00:00
:gen_tcp.send(socket, msg_encd)
:gen_tcp.close(socket)
2022-11-24 15:30:14 +00:00
receive do
{:fwdxfer, {id, _}} -> assert id == msg_id
end
end
2022-11-22 15:41:59 +00:00
end