summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/plop_test.erl86
1 files changed, 53 insertions, 33 deletions
diff --git a/test/plop_test.erl b/test/plop_test.erl
index 26ac354..ce2a052 100644
--- a/test/plop_test.erl
+++ b/test/plop_test.erl
@@ -12,10 +12,14 @@
adding_verifying_test() ->
%%Pid = start(),
Pubkey = plop:testing_get_pubkey(),
- add(0, Pubkey),
- add(1, Pubkey),
- sth(0, Pubkey).
+ add_sth_add_sth(Pubkey).
%%stop(Pid).
+
+%% "Entries can be retrieved."
+get_entries_test_() ->
+ Entries = plop:get(1, 2),
+ [?_assertEqual(2, length(Entries)),
+ ?_assertMatch(#mtl{}, hd(Entries))].
%%% Setup.
%% start() ->
@@ -31,44 +35,60 @@ adding_verifying_test() ->
%% ?_assertEqual(Pid, whereis(plop))].
%%% Helpers.
+
+add_sth_add_sth(Pubkey) ->
+ add(0, Pubkey),
+ STH0 = sth(Pubkey),
+ add(1, Pubkey),
+ STH1 = sth(Pubkey),
+ ?assertNotEqual(STH0, STH1).
+
add(0, Pubkey) ->
- Msg = <<"some data">>,
- Entry = #timestamped_entry{timestamp = 4711,
- entry = #plop_entry{type = test,
- data = Msg}},
- SPT = plop:add(Entry),
- <<Version:8, _LogID:256, Timestamp:64, Signature/binary>> = SPT,
- Signed = <<0:8, 0:8, 4711:64, 2:16, Msg/binary>>,
+ Msg = crypto:rand_bytes(32),
+ Entry = #timestamped_entry{
+ timestamp = 4711,
+ entry = #plop_entry{
+ type = test,
+ data = Msg}},
+ DataSigned = <<0:8, 0:8, 4711:64, 2:16, Msg/binary>>,
+ #spt{
+ version = Version,
+ timestamp = Timestamp,
+ signature = #signature{signature = Signature}
+ } = plop:add(Entry),
?assertEqual(0, Version),
?assertEqual(4711, Timestamp),
- ?assert(public_key:verify(Signed, sha256, Signature, Pubkey));
-
+ ?assert(public_key:verify(DataSigned, sha256, Signature, Pubkey));
add(1, Pubkey) ->
- Msg = <<"some more data">>,
- Entry = #timestamped_entry{timestamp = 4712,
- entry = #plop_entry{type = test,
- data = Msg}},
- <<Version:8, _LogID:256, Timestamp:64, Signature/binary>> = plop:add(Entry),
- Signed = <<0:8, 0:8, 4712:64, 2:16, Msg/binary>>,
+ Msg = crypto:rand_bytes(32),
+ Entry = #timestamped_entry{
+ timestamp = 4712,
+ entry = #plop_entry{
+ type = test,
+ data = Msg}},
+ DataSigned = <<0:8, 0:8, 4712:64, 2:16, Msg/binary>>,
+ #spt{
+ version = Version,
+ timestamp = Timestamp,
+ signature = #signature{signature = Signature}
+ } = plop:add(Entry),
?assertEqual(0, Version),
?assertEqual(4712, Timestamp),
- ?assert(public_key:verify(Signed, sha256, Signature, Pubkey)).
+ ?assert(public_key:verify(DataSigned, sha256, Signature, Pubkey)).
+%% TODO
%% 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]),
- <<Treesize:64,
- Timestamp:64,
- Roothash:256,
- Signature/binary>> = STH,
- ?assertEqual(2, Treesize),
- Data = <<0:8, 2:8, Timestamp:64, Treesize:64, Roothash:256>>,
- ?assert(public_key:verify(Data, sha256, Signature, Pubkey)).
+sth(Pubkey) ->
+ #sth{
+ treesize = Treesize,
+ timestamp = Timestamp,
+ roothash = Roothash,
+ signature = #signature{signature = Signature}
+ } = STH = plop:sth(),
+ Data = list_to_binary([<<0:8, 1:8, Timestamp:64, Treesize:64>>, Roothash]),
+ ?assert(public_key:verify(Data, sha256, Signature, Pubkey)),
+ STH.
+