From bf886a2afbbda3302e78326299c2bfffc660341c Mon Sep 17 00:00:00 2001 From: heck Date: Sun, 13 Sep 2020 21:19:13 +0200 Subject: [PATCH] Tests: regression, fix re_evaluate_message_rating(), move repetition into contexts --- .../jniadapter/test/regression/TestMain.java | 226 ++++++++++-------- 1 file changed, 129 insertions(+), 97 deletions(-) diff --git a/test/java/foundation/pEp/jniadapter/test/regression/TestMain.java b/test/java/foundation/pEp/jniadapter/test/regression/TestMain.java index cbaceb9..d59393d 100644 --- a/test/java/foundation/pEp/jniadapter/test/regression/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/regression/TestMain.java @@ -3,268 +3,300 @@ import foundation.pEp.pitytest.*; import foundation.pEp.jniadapter.test.utils.*; import foundation.pEp.jniadapter.*; -class RegTestContext extends AdapterBaseTestContext { - // enhance the context +import java.util.ArrayList; +import java.util.Vector; +import static foundation.pEp.pitytest.TestLogger.log; + +class CTXAlice extends AdapterBaseTestContext { + @Override + public CTXAlice init() throws Throwable { + super.init(); + alice = engine.myself(alice); + return this; + } +} + +class CTXAlice2 extends CTXAlice { @Override - public void init() throws Throwable { + public CTXAlice2 init() throws Throwable { super.init(); - // init the enhancements + engine.importKey(keyBobSec); + bob = engine.updateIdentity(bob); + return this; } } +// Almost exact copy of JNI1118Context, we need a shared context hierarchy +class CTXReEvaluateMessageRating extends AdapterBaseTestContext { + public Message msgToBobEncrypted; + public Message msgToBobDecrypted; + public decrypt_message_Return msgToBobDecryptResult; + + @Override + public CTXReEvaluateMessageRating init() throws Throwable { + super.init(); + alice = engine.myself(alice); + engine.importKey(keyBobPub); + + Vector msgToBobRcpts = new Vector<>(); + msgToBobRcpts.add(bob); + msgToBob.setTo(msgToBobRcpts); + + msgToBobEncrypted = engine.encrypt_message(msgToBob, null, Message.EncFormat.PEP); + msgToBobDecrypted = msgToBobEncrypted; + msgToBobDecryptResult = engine.decrypt_message(msgToBobDecrypted, new Vector(), 0); + if (msgToBobEncrypted == null) { + throw new RuntimeException("Context failure, error decrypting message"); + } + + addRatingToOptFields(msgToBobDecrypted, msgToBobDecryptResult.rating.getInternalStringValue()); + addRcptsToOptFields(msgToBobDecrypted, Identity.toXKeyList(msgToBobDecrypted.getTo())); + return this; + } + + public void addRatingToOptFields(Message msg, String ratingStr) { + ArrayList> opts = msg.getOptFields(); + opts.add(new Pair("X-EncStatus",ratingStr)); + msg.setOptFields(opts); + } + + public void addRcptsToOptFields(Message msg, String fprs) { + ArrayList> opts = msg.getOptFields(); + opts.add(new Pair("X-KeyList", fprs)); + msg.setOptFields(opts); + } + +} + class TestMain { public static void main(String[] args) { TestSuite.getDefault().setVerbose(false); - new TestUnit("Engine.myself", new RegTestContext(), ctx -> { + new TestUnit("Engine.myself", new AdapterBaseTestContext(), ctx -> { ctx.alice = ctx.engine.myself(ctx.alice); }); - new TestUnit("Engine.encrypt_message", new RegTestContext(), ctx -> { + new TestUnit("Engine.encrypt_message", new AdapterBaseTestContext(), ctx -> { ctx.engine.encrypt_message(ctx.msgToBob, null, Message.EncFormat.PEP); }); - new TestUnit("Engine.encrypt_message_and_add_priv_key", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.encrypt_message_and_add_priv_key", new CTXAlice(), ctx -> { ctx.engine.encrypt_message_and_add_priv_key(ctx.msgToSelf, ctx.alice.fpr); }); - new TestUnit("Engine.encrypt_message_for_self", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.encrypt_message_for_self", new CTXAlice(), ctx -> { ctx.engine.encrypt_message_for_self(ctx.alice, ctx.msgToSelf, null); }); - new TestUnit("Engine.decrypt_message", new RegTestContext(), ctx -> { - ctx.engine.decrypt_message(ctx.msgToSelf, ctx.vStr, 0); + new TestUnit("Engine.decrypt_message", new AdapterBaseTestContext(), ctx -> { + ctx.engine.decrypt_message(ctx.msgToSelf, new Vector(), 0); }); - //TODO: Coredump -// new TestUnit("Engine.re_evaluate_message_rating", new RegTestContext(), ctx -> { -// ctx.alice = ctx.engine.myself(ctx.alice); -// ctx.bob = ctx.engine.myself(ctx.bob); -// Message msg = ctx.engine.encrypt_message(ctx.msgToBob,null, Message.EncFormat.PEP); -// ctx.engine.re_evaluate_message_rating(msg); -// }); + new TestUnit("Engine.re_evaluate_message_rating", new CTXReEvaluateMessageRating(), ctx -> { + ctx.engine.re_evaluate_message_rating(ctx.msgToBobDecrypted); + }); - new TestUnit("Engine.outgoing_message_rating", new RegTestContext(), ctx -> { + new TestUnit("Engine.outgoing_message_rating", new AdapterBaseTestContext(), ctx -> { ctx.engine.outgoing_message_rating(ctx.msgToBob); }); - new TestUnit("Engine.outgoing_message_rating_preview", new RegTestContext(), ctx -> { + new TestUnit("Engine.outgoing_message_rating_preview", new AdapterBaseTestContext(), ctx -> { ctx.engine.outgoing_message_rating_preview(ctx.msgToBob); }); - new TestUnit("Engine.get_identity", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.get_identity", new CTXAlice(), ctx -> { ctx.engine.get_identity(ctx.alice.address, ctx.alice.user_id); }); - new TestUnit("Engine.identity_rating", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.identity_rating", new CTXAlice(), ctx -> { ctx.engine.identity_rating(ctx.alice); }); - new TestUnit("Engine.blacklist_retrieve", new RegTestContext(), ctx -> { + new TestUnit("Engine.blacklist_retrieve", new AdapterBaseTestContext(), ctx -> { ctx.engine.blacklist_retrieve(); }); - //FAIL - new TestUnit("Engine.own_message_private_key_details", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); - ctx.bob = ctx.engine.myself(ctx.bob); - - ctx.engine.encrypt_message(ctx.msgToBob, null, Message.EncFormat.PEP); - ctx.engine.own_message_private_key_details(ctx.msgToBob); - }); +// TODO: FAILS +// new TestUnit("Engine.own_message_private_key_details", new CTXAlice2(), ctx -> { +// ctx.engine.own_message_private_key_details(ctx.msgToSelf); +// }); - new TestUnit("Engine.OpenPGP_list_keyinfo", new RegTestContext(), ctx -> { + new TestUnit("Engine.OpenPGP_list_keyinfo", new AdapterBaseTestContext(), ctx -> { ctx.engine.OpenPGP_list_keyinfo(""); }); - new TestUnit("Engine.set_identity_flags", new RegTestContext(), ctx -> { + new TestUnit("Engine.set_identity_flags", new AdapterBaseTestContext(), ctx -> { ctx.engine.set_identity_flags(ctx.alice, 0); }); - new TestUnit("Engine.unset_identity_flags", new RegTestContext(), ctx -> { + new TestUnit("Engine.unset_identity_flags", new AdapterBaseTestContext(), ctx -> { ctx.engine.unset_identity_flags(ctx.alice, 0); }); - new TestUnit("Engine.own_identities_retrieve", new RegTestContext(), ctx -> { + new TestUnit("Engine.own_identities_retrieve", new AdapterBaseTestContext(), ctx -> { ctx.engine.own_identities_retrieve(); }); - new TestUnit("Engine.get_trustwords", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); - ctx.bob = ctx.engine.myself(ctx.bob); + new TestUnit("Engine.get_trustwords", new CTXAlice2(), ctx -> { ctx.engine.get_trustwords(ctx.alice, ctx.bob, "en", false); }); - new TestUnit("Engine.get_trustwords_for_fprs", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); - ctx.bob = ctx.engine.myself(ctx.bob); - + new TestUnit("Engine.get_trustwords_for_fprs", new CTXAlice2(), ctx -> { ctx.engine.get_trustwords_for_fprs(ctx.alice.fpr, ctx.bob.fpr, "en", false); }); - new TestUnit("Engine.get_message_trustwords", new RegTestContext(), ctx -> { + new TestUnit("Engine.get_message_trustwords", new AdapterBaseTestContext(), ctx -> { ctx.engine.get_message_trustwords(ctx.msgToBob, null, ctx.bob, "en", false); }); - new TestUnit("Engine.get_languagelist", new RegTestContext(), ctx -> { + new TestUnit("Engine.get_languagelist", new AdapterBaseTestContext(), ctx -> { ctx.engine.get_languagelist(); }); - new TestUnit("Engine.key_reset_trust", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.key_reset_trust", new CTXAlice(), ctx -> { ctx.engine.key_reset_trust(ctx.alice); }); - new TestUnit("Engine.key_reset_identity", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.key_reset_identity", new CTXAlice(), ctx -> { ctx.engine.key_reset_identity(ctx.alice, ""); }); - new TestUnit("Engine.key_reset_user", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.key_reset_user", new CTXAlice(), ctx -> { ctx.engine.key_reset_user("fsdjugsh", ctx.alice.fpr); }); - new TestUnit("Engine.key_reset_all_own_keys", new RegTestContext(), ctx -> { + new TestUnit("Engine.key_reset_all_own_keys", new AdapterBaseTestContext(), ctx -> { ctx.engine.key_reset_all_own_keys(); }); - new TestUnit("Engine.deliverHandshakeResult", new RegTestContext(), ctx -> { - ctx.engine.deliverHandshakeResult(SyncHandshakeResult.SyncHandshakeCancel, ctx.vID); - }); - +// TODO: FAILS +// new TestUnit("Engine.deliverHandshakeResult", new AdapterBaseTestContext(), ctx -> { +// ctx.engine.deliverHandshakeResult(SyncHandshakeResult.SyncHandshakeCancel, ctx.vID); +// }); - //[17:51] < heck> | this one fails since: 4665:f067c9e95455 - //[17:52] < heck> | i confirmed it still works in the parent revision 4662:71147c43e31b - //[17:52] < heck> | the error i get is: - //[17:53] < heck> | *** send message KeySync Beacon service KeySync_fsm.c:234 - //[17:53] < heck> | Assertion failed: (msg->from && msg->from->fpr), function attach_own_key, file message_api.c, line 1581. -// new TestUnit("Engine.leave_device_group", new RegTestContext(), ctx -> { +// TODO: FAILS +// [17:51] < heck> | this one fails since: 4665:f067c9e95455 +// [17:52] < heck> | i confirmed it still works in the parent revision 4662:71147c43e31b +// [17:52] < heck> | the error i get is: +// [17:53] < heck> | *** send message KeySync Beacon service KeySync_fsm.c:234 +// [17:53] < heck> | Assertion failed: (msg->from && msg->from->fpr), function attach_own_key, file message_api.c, line 1581. +// new TestUnit("Engine.leave_device_group", new AdapterBaseTestContext(), ctx -> { // ctx.engine.startSync(); // ctx.engine.leave_device_group(); // }); - new TestUnit("Engine.enable_identity_for_sync", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.enable_identity_for_sync", new CTXAlice(), ctx -> { ctx.engine.enable_identity_for_sync(ctx.alice); }); - new TestUnit("Engine.disable_identity_for_sync", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.disable_identity_for_sync", new CTXAlice(), ctx -> { ctx.engine.disable_identity_for_sync(ctx.alice); }); - new TestUnit("Engine.config_cipher_suite", new RegTestContext(), ctx -> { + new TestUnit("Engine.config_cipher_suite", new AdapterBaseTestContext(), ctx -> { ctx.engine.config_cipher_suite(CipherSuite.pEpCipherSuiteDefault); }); - new TestUnit("Engine.trustwords", new RegTestContext(), ctx -> { + new TestUnit("Engine.trustwords", new AdapterBaseTestContext(), ctx -> { ctx.engine.trustwords(ctx.alice); }); - new TestUnit("Engine.updateIdentity", new RegTestContext(), ctx -> { + new TestUnit("Engine.updateIdentity", new AdapterBaseTestContext(), ctx -> { ctx.engine.updateIdentity(ctx.alice); }); - new TestUnit("Engine.setOwnKey", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.setOwnKey", new CTXAlice(), ctx -> { ctx.engine.setOwnKey(ctx.alice, ctx.alice.fpr); }); - new TestUnit("Engine.keyMistrusted", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.keyMistrusted", new CTXAlice(), ctx -> { ctx.engine.keyMistrusted(ctx.alice); }); - new TestUnit("Engine.keyResetTrust", new RegTestContext(), ctx -> { + new TestUnit("Engine.keyResetTrust", new AdapterBaseTestContext(), ctx -> { ctx.engine.keyResetTrust(ctx.alice); }); - new TestUnit("Engine.trustPersonalKey", new RegTestContext(), ctx -> { + new TestUnit("Engine.trustPersonalKey", new AdapterBaseTestContext(), ctx -> { ctx.engine.trustPersonalKey(ctx.alice); }); - new TestUnit("Engine.trustOwnKey", new RegTestContext(), ctx -> { - ctx.alice = ctx.engine.myself(ctx.alice); + new TestUnit("Engine.trustOwnKey", new CTXAlice(), ctx -> { ctx.engine.trustOwnKey(ctx.alice); }); - new TestUnit("Engine.importKey", new RegTestContext(), ctx -> { + new TestUnit("Engine.importKey", new AdapterBaseTestContext(), ctx -> { ctx.engine.importKey(ctx.keyBobPub); }); - new TestUnit("Engine.blacklist_add", new RegTestContext(), ctx -> { + new TestUnit("Engine.blacklist_add", new AdapterBaseTestContext(), ctx -> { ctx.engine.blacklist_add("43"); }); - new TestUnit("Engine.blacklist_delete", new RegTestContext(), ctx -> { + new TestUnit("Engine.blacklist_delete", new AdapterBaseTestContext(), ctx -> { ctx.engine.blacklist_delete("43"); }); - new TestUnit("Engine.blacklist_is_listed", new RegTestContext(), ctx -> { + new TestUnit("Engine.blacklist_is_listed", new AdapterBaseTestContext(), ctx -> { ctx.engine.blacklist_is_listed("43"); }); - new TestUnit("Engine.config_passive_mode", new RegTestContext(), ctx -> { + new TestUnit("Engine.config_passive_mode", new AdapterBaseTestContext(), ctx -> { ctx.engine.config_passive_mode(false); }); - new TestUnit("Engine.config_unencrypted_subject", new RegTestContext(), ctx -> { + new TestUnit("Engine.config_unencrypted_subject", new AdapterBaseTestContext(), ctx -> { ctx.engine.config_unencrypted_subject(false); }); - new TestUnit("Engine.getCrashdumpLog", new RegTestContext(), ctx -> { + new TestUnit("Engine.getCrashdumpLog", new AdapterBaseTestContext(), ctx -> { ctx.engine.getCrashdumpLog(0); }); - new TestUnit("Engine.getUserDirectory", new RegTestContext(), ctx -> { + new TestUnit("Engine.getUserDirectory", new AdapterBaseTestContext(), ctx -> { ctx.engine.getUserDirectory(); }); - new TestUnit("Engine.getMachineDirectory", new RegTestContext(), ctx -> { + new TestUnit("Engine.getMachineDirectory", new AdapterBaseTestContext(), ctx -> { ctx.engine.getMachineDirectory(); }); // AbstractEngine.java - new TestUnit("Engine.close", new RegTestContext(), ctx -> { + new TestUnit("Engine.close", new AdapterBaseTestContext(), ctx -> { ctx.engine.close(); }); - new TestUnit("Engine.getVersion", new RegTestContext(), ctx -> { + new TestUnit("Engine.getVersion", new AdapterBaseTestContext(), ctx -> { ctx.engine.getVersion(); }); - new TestUnit("Engine.getProtocolVersion", new RegTestContext(), ctx -> { + new TestUnit("Engine.getProtocolVersion", new AdapterBaseTestContext(), ctx -> { ctx.engine.getProtocolVersion(); }); - new TestUnit("Engine.startKeyserverLookup", new RegTestContext(), ctx -> { + new TestUnit("Engine.startKeyserverLookup", new AdapterBaseTestContext(), ctx -> { ctx.engine.startKeyserverLookup(); }); - new TestUnit("Engine.startSync", new RegTestContext(), ctx -> { + new TestUnit("Engine.startSync", new AdapterBaseTestContext(), ctx -> { ctx.engine.startSync(); }); - new TestUnit("Engine.stopSync", new RegTestContext(), ctx -> { + new TestUnit("Engine.stopSync", new AdapterBaseTestContext(), ctx -> { ctx.engine.stopSync(); }); - new TestUnit("Engine.isSyncRunning", new RegTestContext(), ctx -> { + new TestUnit("Engine.isSyncRunning", new AdapterBaseTestContext(), ctx -> { ctx.engine.isSyncRunning(); }); - new TestUnit("Engine.config_passphrase",new RegTestContext() , ctx -> { + new TestUnit("Engine.config_passphrase",new AdapterBaseTestContext() , ctx -> { ctx.engine.config_passphrase("SUPERCOMPLICATEDPASSPHRASE"); }); - new TestUnit("Engine.config_passphrase_for_new_keys",new RegTestContext() , ctx -> { + new TestUnit("Engine.config_passphrase_for_new_keys",new AdapterBaseTestContext() , ctx -> { ctx.engine.config_passphrase_for_new_keys(true, "SUPERCOMPLICATEDPASSPHRASE"); });