floof/test/floof_test.exs
Alain Zscheile c48367ff09 send public key with every message
this is more efficient and solves key distribution concerns
2022-11-26 23:41:56 +01:00

28 lines
1 KiB
Elixir

defmodule FloofTest do
use ExUnit.Case
doctest Floof
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("test/test01.secret")
msg_topic = [{:RelativeDistinguishedName, {2, 5, 4, 41}, "test topic"}]
msg_inner = Floof.Message.pack_inner(msg_topic, [], :info, <<0, 0>>)
msg_outer = Floof.Message.build_outer(10, [], secret_key, msg_inner)
{:ok, msg_encd} = :FloofProtocol.encode(:ProtoMessage, {:xfer, msg_outer})
Floof.Distributor.register(self())
{:ok, socket} = :gen_tcp.connect({127, 0, 0, 1}, 2540, packet: 4, active: false)
:gen_tcp.send(socket, msg_encd)
:gen_tcp.close(socket)
receive do
{:fwdxfer, {id, _}} -> assert id == :crypto.hash(:blake2b, msg_inner)
end
end
end