-module(plop_test). -include("plop.hrl"). -include_lib("eunit/include/eunit.hrl"). %% start_stop_test_() -> %% {"The server can be started, stopped and is regsitered", %% {setup, fun start/0, fun stop/1, fun is_registered/1}}. %% "Entries can be added and the STH changes." %% FIXME: This way, if a test fails, we don't stop plop. The tests %% must run and be validated in strict order though. adding_verifying_test() -> %%Pid = start(), Pubkey = plop:testing_get_pubkey(), add(0, Pubkey), add(1, Pubkey), sth(0, Pubkey). %%stop(Pid). %%% Setup. %% start() -> %% {ok, Pid} = plop:start_link("../test/rsakey.pem", "sikrit"), %% Pid. %% stop(_) -> %% plop:stop(). %%% Tests. %% is_registered(Pid) -> %% [?_assert(erlang:is_process_alive(Pid)), %% ?_assertEqual(Pid, whereis(plop))]. %%% Helpers. add(0, Pubkey) -> Msg = <<"some data">>, Entry = #timestamped_entry{timestamp = 4711, entry = #plop_entry{type = test, data = Msg}}, SPT = plop:add(Entry), <> = SPT, Signed = <<1:8, 0:8, 4711:64, 2:16, Msg/binary>>, ?assertEqual(1, Version), ?assertEqual(4711, Timestamp), ?assert(public_key:verify(Signed, sha256, Signature, Pubkey)); add(1, Pubkey) -> Msg = <<"some more data">>, Entry = #timestamped_entry{timestamp = 4712, entry = #plop_entry{type = test, data = Msg}}, <> = plop:add(Entry), Signed = <<1:8, 0:8, 4712:64, 2:16, Msg/binary>>, ?assertEqual(1, Version), ?assertEqual(4712, Timestamp), ?assert(public_key:verify(Signed, sha256, Signature, Pubkey)). %% add(2) -> %% TestVector = <<>>, %% %% Same data as in 0, should not result in new database entry. %% Entry = #timestamped_entry{timestamp = 4713, entry_type = test, entry = <<"some data">>}, %% SPT = plop:add(#spt{signature_type = test, entry = Entry}), %% ?assertEqual(TestVector, SPT), %% ?assertEqual(fixme, fixme). sth(0, Pubkey) -> STH = plop:sth(), %%io:format(element(2, file:open("testdata", write)), "~p", [STH]), <> = STH, ?assertEqual(2, Treesize), Data = <<1:8, 1:8, Timestamp:64, Treesize:64, Roothash:256>>, ?assert(public_key:verify(Data, sha256, Signature, Pubkey)).