From e034a62c2d7741f22239997fd7035e668b7ac1d1 Mon Sep 17 00:00:00 2001 From: Edouard Tisserant Date: Thu, 3 Dec 2015 21:56:34 +0100 Subject: [PATCH] Added attchements test, fixed asserts, now testing for real --- androidTests/app/assets/pep.png | Bin 0 -> 2334 bytes androidTests/app/assets/spinner.gif | Bin 0 -> 5011 bytes androidTests/app/assets/yml2.tar.bz2 | Bin 0 -> 48688 bytes .../main/java/com/pep/k9/MainActivity.java | 254 +++++++++++------- 4 files changed, 152 insertions(+), 102 deletions(-) create mode 100644 androidTests/app/assets/pep.png create mode 100644 androidTests/app/assets/spinner.gif create mode 100644 androidTests/app/assets/yml2.tar.bz2 diff --git a/androidTests/app/assets/pep.png b/androidTests/app/assets/pep.png new file mode 100644 index 0000000000000000000000000000000000000000..207a9b36a1a464e4809beb5b4228f7b619d91e98 GIT binary patch literal 2334 zcmd6p>06SC8pb_!tjVM2yH%44I`4^n8bN%k;d9M5OeSdfe7trUF6b>lJ$;l}> zIoiAZxEUAnLRuVK_EQKCXw3WjckBJ$`|ZgkH=5u78^cSd=ag)=>8e6@NH)r-f?pO zk;8lc3Hwla@ZSdcYjkib=t(iHAt2v^yb-DDr`|aiM^4t6d zZ1cA^-kPHLNGwl4w?GFzjp-2?sq%tYw3rVU^^DSazCyavzSVo9-&?TP5E{g+wn;!C ztUj0Tu-L$98Ei5= z;X2Nz23I4oF;^aAZ*;NUmXaY~gtyQZLFo$UyAKF@Fa*NUoL((igxxt&CE+gV9zC4C z(c<#bY18h0jd*jeAxx8Ky{Li76ivPj8;-=&l45mb!+^IMOXaJ;T7%dFfDLiu>hvLx zq-z`R=cbiq7jUgx&-Q-m>le&`4WncNoMDENaw&}>>r2Wg@VN*Q+Em@u8FuO4!BlI6 zHH~Nq*GGGkE11E_1c^AVIHOVR7Fou`Rh{{CFK~kN9x5+Ff=Hgn8)P9arJ zY+(VXh%JpCvH%gTx0?eCrzek6IiiMI)_QlF+cGz(2*2{Jkqeq8ZNSEre6#%GcxzLQ z`~u2)A#1Pf;Iyfrri6CiV|S64c3Sq9CxGE^4BdeuD5Lvtw>B<_2cs7`0i&D<`qDE*zTfwwCwi? zG``6%_l@}RCo<4_POY62qLrh49Y(~472B}QO}OXD2$bY{L*>$3TTqR}vHpZ-K?T4< zzguoE+ylMVtZ&9}_eFPPxc>?M5?e2{s}iFi#d1Q>dwxp{RDS?n^`!9j044P_r8n6`N;PEQJqV`@5&(G}${BI=5I+pnQe8DA2Ct=@nsy`)#~>R(_!&bwcUMh*iIh zD!3Lb_Vk*4I^ttI!f=IwYl0VPY;PaKL%-<{UN?h&RFX@{)J_^tFuDW-Tb?MF8ESlP zm2|vwRnp_xF6qXV6j#D^uNfkvmZiquRSnQD0e`2fvmk*?gm*?G80w;j9UimJpL;B{ zBhkF~LyuA{aEuX7X$~Bbx?Qzda8DM|VYW{TU6oxbk6mYYWIc-Fp9(E<>G^lMVoqYjXGz8Ad9LjJ(ySjl{c7T5C#bJ&MGModW@LjWe+SxODH z(yqn}0v9@!cN?U#%_GYq2FU=edd69F@Wn9|(JOM}`{&^1oxycy(XFyy87)L0ZD?(_7W-Mwyi7@yko67L9Uii>j!TWhv<8${XRhfRCPD z;M(~CMwU?}=TwbUGdu@{^xC{hW|h@i?r#>B?1Q~Ic++P7p|VHiq$O@wC>uabX&w#& zv$ZAyx=#6U+dwr)w;3nWDi_BI7qj0<6=vRF|5}h=nNUQxV<538i*a|!@8J2=l9j$T z&I2{<^_R@Fp=kB|fSvIo0ZJGMEC*hcQ} dVbZ6P?Y_UD{^~+Y{_*$7IXR&1YizIF`yYUIiPr!C literal 0 HcmV?d00001 diff --git a/androidTests/app/assets/spinner.gif b/androidTests/app/assets/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..c22262d1bc092efb072fd817df4cec96449a5d17 GIT binary patch literal 5011 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 E?|PBwvH$=8 literal 0 HcmV?d00001 diff --git a/androidTests/app/assets/yml2.tar.bz2 b/androidTests/app/assets/yml2.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b0562f3a1671092251d8360b620f53e6168000b1 GIT binary patch literal 48688 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 literal 0 HcmV?d00001 diff --git a/androidTests/app/src/main/java/com/pep/k9/MainActivity.java b/androidTests/app/src/main/java/com/pep/k9/MainActivity.java index aae876a..b77b456 100644 --- a/androidTests/app/src/main/java/com/pep/k9/MainActivity.java +++ b/androidTests/app/src/main/java/com/pep/k9/MainActivity.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import java.util.Arrays; import java.util.Vector; import java.util.Date; @@ -48,8 +49,8 @@ public class MainActivity extends AppCompatActivity { //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { try { - testPEpAliceBobJohn(); - //testPEpTypes(); + //testPEpAliceBobJohn(); + testPEpTypes(); } catch (Exception ex) { Log.e("PEPTEST", "##################### TEST Exception ####################",ex); @@ -80,7 +81,7 @@ public class MainActivity extends AppCompatActivity { // byte buffer into a string return new String(LoadAssetAsBuffer(fname)); } - public void testPEpTypes() throws pEpException, IOException { + public void testPEpTypes() throws pEpException, IOException, AssertionError { Engine e; @@ -93,41 +94,41 @@ public class MainActivity extends AppCompatActivity { // Note : this looks like some target code, ins't it ? // Call getter before call to getter - assert msg.getDir()==null; - assert msg.getId()==null; - assert msg.getLongmsg()==null; - assert msg.getLongmsg()==null; - assert msg.getLongmsgFormatted()==null; - assert msg.getAttachments()==null; - assert msg.getSent()==null; - assert msg.getRecv()==null; - assert msg.getFrom()==null; - assert msg.getTo()==null; - assert msg.getRecvBy()==null; - assert msg.getCc()==null; - assert msg.getBcc()==null; - assert msg.getInReplyTo()==null; - assert msg.getReferences()==null; - assert msg.getKeywords()==null; - assert msg.getComments()==null; - assert msg.getOptFields()==null; - assert msg.getEncFormat()==null; + if(!(msg.getDir()==null)) throw new AssertionError(); + if(!(msg.getId()==null)) throw new AssertionError(); + if(!(msg.getLongmsg()==null)) throw new AssertionError(); + if(!(msg.getLongmsgFormatted()==null)) throw new AssertionError(); + if(!(msg.getAttachments()==null)) throw new AssertionError(); + if(!(msg.getSent()==null)) throw new AssertionError(); + if(!(msg.getRecv()==null)) throw new AssertionError(); + if(!(msg.getFrom()==null)) throw new AssertionError(); + if(!(msg.getTo()==null)) throw new AssertionError(); + if(!(msg.getRecvBy()==null)) throw new AssertionError(); + if(!(msg.getCc()==null)) throw new AssertionError(); + if(!(msg.getBcc()==null)) throw new AssertionError(); + if(!(msg.getInReplyTo()==null)) throw new AssertionError(); + if(!(msg.getReferences()==null)) throw new AssertionError(); + if(!(msg.getKeywords()==null)) throw new AssertionError(); + if(!(msg.getComments()==null)) throw new AssertionError(); + if(!(msg.getOptFields()==null)) throw new AssertionError(); + if(!(msg.getEncFormat()==null)) throw new AssertionError(); // Call setter with non-null and check getter returns the same msg.setDir(Message.Direction.Outgoing); - assert msg.getDir()==Message.Direction.Outgoing; + if(!(msg.getDir()==Message.Direction.Outgoing)) throw new AssertionError(); msg.setId("1234ID"); - assert msg.getId().equals("1234ID"); + if(!(msg.getId().equals("1234ID"))) throw new AssertionError(); + msg.setShortmsg("ShrtMsg"); - assert msg.getLongmsg().equals("ShrtMsg"); + if(!(msg.getShortmsg().equals("ShrtMsg"))) throw new AssertionError(); msg.setLongmsg("Loooooooooooooonger Message"); - assert msg.getLongmsg().equals("Loooooooooooooonger Message"); + if(!(msg.getLongmsg().equals("Loooooooooooooonger Message"))) throw new AssertionError(); msg.setLongmsgFormatted(""); - assert msg.getLongmsgFormatted().equals(""); + if(!(msg.getLongmsgFormatted().equals(""))) throw new AssertionError(); { Vector attachments = new Vector(); @@ -138,22 +139,23 @@ public class MainActivity extends AppCompatActivity { msg.setAttachments(attachments); Vector detach = msg.getAttachments(); Blob dblb = detach.firstElement(); - assert dblb.filename.equals(blb.filename); - assert dblb.data.equals(blb.data); + if(!(dblb.filename.equals(blb.filename))) throw new AssertionError(); + if(!(Arrays.equals(dblb.data, blb.data))) throw new AssertionError(); } { Date now = new Date(); msg.setSent(now); - assert msg.getSent().equals(now); + Date res = msg.getSent(); + if(!(res.equals(now))) throw new AssertionError(); } { Date now = new Date(); msg.setRecv(now); - assert msg.getRecv().equals(now); + if(!(msg.getRecv().equals(now))) throw new AssertionError(); } { @@ -167,11 +169,11 @@ public class MainActivity extends AppCompatActivity { msg.setFrom(alice); Identity _alice = msg.getFrom(); - assert _alice.username.equals("Alice Test"); - assert _alice.address.equals("pep.test.alice@pep-project.org"); - assert _alice.user_id.equals("111"); - assert _alice.me == true; - assert _alice.fpr == null; + if(!(_alice.username.equals("Alice Test"))) throw new AssertionError(); + if(!(_alice.address.equals("pep.test.alice@pep-project.org"))) throw new AssertionError(); + if(!(_alice.user_id.equals("111"))) throw new AssertionError(); + if(!(_alice.me == true)) throw new AssertionError(); + if(!(_alice.fpr == null)) throw new AssertionError(); } { @@ -188,11 +190,11 @@ public class MainActivity extends AppCompatActivity { Vector _rcpts = msg.getTo(); Identity _alice = _rcpts.firstElement(); - assert _alice.username.equals("Alice Test"); - assert _alice.address.equals("pep.test.alice@pep-project.org"); - assert _alice.user_id.equals("111"); - assert _alice.me == true; - assert _alice.fpr == null; + if(!(_alice.username.equals("Alice Test"))) throw new AssertionError(); + if(!(_alice.address.equals("pep.test.alice@pep-project.org"))) throw new AssertionError(); + if(!(_alice.user_id.equals("111"))) throw new AssertionError(); + if(!(_alice.me == true)) throw new AssertionError(); + if(!(_alice.fpr == null)) throw new AssertionError(); } { @@ -206,11 +208,11 @@ public class MainActivity extends AppCompatActivity { msg.setRecvBy(alice); Identity _alice = msg.getRecvBy(); - assert _alice.username.equals("Alice Test"); - assert _alice.address.equals("pep.test.alice@pep-project.org"); - assert _alice.user_id.equals("111"); - assert _alice.me == true; - assert _alice.fpr == null; + if(!(_alice.username.equals("Alice Test"))) throw new AssertionError(); + if(!(_alice.address.equals("pep.test.alice@pep-project.org"))) throw new AssertionError(); + if(!(_alice.user_id.equals("111"))) throw new AssertionError(); + if(!(_alice.me == true)) throw new AssertionError(); + if(!(_alice.fpr == null)) throw new AssertionError(); } { @@ -227,11 +229,11 @@ public class MainActivity extends AppCompatActivity { Vector _rcpts = msg.getCc(); Identity _alice = _rcpts.firstElement(); - assert _alice.username.equals("Alice Test"); - assert _alice.address.equals("pep.test.alice@pep-project.org"); - assert _alice.user_id.equals("111"); - assert _alice.me == true; - assert _alice.fpr == null; + if(!(_alice.username.equals("Alice Test"))) throw new AssertionError(); + if(!(_alice.address.equals("pep.test.alice@pep-project.org"))) throw new AssertionError(); + if(!(_alice.user_id.equals("111"))) throw new AssertionError(); + if(!(_alice.me == true)) throw new AssertionError(); + if(!(_alice.fpr == null)) throw new AssertionError(); } { @@ -248,11 +250,11 @@ public class MainActivity extends AppCompatActivity { Vector _rcpts = msg.getBcc(); Identity _alice = _rcpts.firstElement(); - assert _alice.username.equals("Alice Test"); - assert _alice.address.equals("pep.test.alice@pep-project.org"); - assert _alice.user_id.equals("111"); - assert _alice.me == true; - assert _alice.fpr == null; + if(!(_alice.username.equals("Alice Test"))) throw new AssertionError(); + if(!(_alice.address.equals("pep.test.alice@pep-project.org"))) throw new AssertionError(); + if(!(_alice.user_id.equals("111"))) throw new AssertionError(); + if(!(_alice.me == true)) throw new AssertionError(); + if(!(_alice.fpr == null)) throw new AssertionError(); } { @@ -262,7 +264,7 @@ public class MainActivity extends AppCompatActivity { msg.setInReplyTo(strvec); Vector _strvec = msg.getInReplyTo(); - assert _strvec.firstElement().equals("Blub"); + if(!(_strvec.firstElement().equals("Blub"))) throw new AssertionError(); } { @@ -272,7 +274,7 @@ public class MainActivity extends AppCompatActivity { msg.setReferences(strvec); Vector _strvec = msg.getReferences(); - assert _strvec.firstElement().equals("Blub"); + if(!(_strvec.firstElement().equals("Blub"))) throw new AssertionError(); } { @@ -282,11 +284,11 @@ public class MainActivity extends AppCompatActivity { msg.setKeywords(strvec); Vector _strvec = msg.getKeywords(); - assert _strvec.firstElement().equals("Blub"); + if(!(_strvec.firstElement().equals("Blub"))) throw new AssertionError(); } msg.setComments("No comment."); - assert msg.getComments().equals("No comment."); + if(!(msg.getComments().equals("No comment."))) throw new AssertionError(); { ArrayList> pairs = new ArrayList>(); @@ -296,75 +298,75 @@ public class MainActivity extends AppCompatActivity { msg.setOptFields(pairs); ArrayList> _pairs = msg.getOptFields(); Pair _pair = _pairs.get(0); - assert _pair.first.equals("left"); - assert _pair.second.equals("right"); + if(!(_pair.first.equals("left"))) throw new AssertionError(); + if(!(_pair.second.equals("right"))) throw new AssertionError(); } msg.setEncFormat(Message.EncFormat.PEP); - assert msg.getEncFormat()==Message.EncFormat.PEP; + if(!(msg.getEncFormat()==Message.EncFormat.PEP)) throw new AssertionError(); // Call setter with null call to getter msg.setDir(null); - assert msg.getDir()==null; + if(!(msg.getDir()==null)) throw new AssertionError(); msg.setId(null); - assert msg.getId()==null; + if(!(msg.getId()==null)) throw new AssertionError(); msg.setShortmsg(null); - assert msg.getLongmsg()==null; + if(!(msg.getLongmsg()==null)) throw new AssertionError(); msg.setLongmsg(null); - assert msg.getLongmsg()==null; + if(!(msg.getLongmsg()==null)) throw new AssertionError(); msg.setLongmsgFormatted(null); - assert msg.getLongmsgFormatted()==null; + if(!(msg.getLongmsgFormatted()==null)) throw new AssertionError(); msg.setAttachments(null); - assert msg.getAttachments()==null; + if(!(msg.getAttachments()==null)) throw new AssertionError(); msg.setSent(null); - assert msg.getSent()==null; + if(!(msg.getSent()==null)) throw new AssertionError(); msg.setRecv(null); - assert msg.getRecv()==null; + if(!(msg.getRecv()==null)) throw new AssertionError(); msg.setFrom(null); - assert msg.getFrom()==null; + if(!(msg.getFrom()==null)) throw new AssertionError(); msg.setTo(null); - assert msg.getTo()==null; + if(!(msg.getTo()==null)) throw new AssertionError(); msg.setRecvBy(null); - assert msg.getRecvBy()==null; + if(!(msg.getRecvBy()==null)) throw new AssertionError(); msg.setCc(null); - assert msg.getCc()==null; + if(!(msg.getCc()==null)) throw new AssertionError(); msg.setBcc(null); - assert msg.getBcc()==null; + if(!(msg.getBcc()==null)) throw new AssertionError(); msg.setInReplyTo(null); - assert msg.getInReplyTo()==null; + if(!(msg.getInReplyTo()==null)) throw new AssertionError(); msg.setReferences(null); - assert msg.getReferences()==null; + if(!(msg.getReferences()==null)) throw new AssertionError(); msg.setKeywords(null); - assert msg.getKeywords()==null; + if(!(msg.getKeywords()==null)) throw new AssertionError(); msg.setComments(null); - assert msg.getComments()==null; + if(!(msg.getComments()==null)) throw new AssertionError(); msg.setOptFields(null); - assert msg.getOptFields()==null; + if(!(msg.getOptFields()==null)) throw new AssertionError(); msg.setEncFormat(null); - assert msg.getEncFormat()==null; + if(!(msg.getEncFormat()==null)) throw new AssertionError(); Log.d("PEPTEST", "Test finished"); } - public void testPEpAliceBobJohn() throws pEpException, IOException { + public void testPEpAliceBobJohn() throws pEpException, IOException, AssertionError { Engine e; // load @@ -447,42 +449,90 @@ public class MainActivity extends AppCompatActivity { msg.setOptFields(pairs); } + byte[] gif = LoadAssetAsBuffer("spinner.gif"); + byte[] png = LoadAssetAsBuffer("pep.png"); + byte[] tbz = LoadAssetAsBuffer("yml2.tar.bz2"); + { + Vector attachments = new Vector(); + { + Blob b = new Blob(); + b.data = png; + b.filename = "pep.png"; + b.mime_type = "image/png"; + attachments.add(b); + } + { + Blob b = new Blob(); + b.data = gif; + b.filename = "spinner.gif"; + b.mime_type = "image/png"; + attachments.add(b); + } + { + Blob b = new Blob(); + b.data = tbz; + b.filename = "yml.tar.bz2"; + b.mime_type = "application/x-gtar"; + attachments.add(b); + } + msg.setAttachments(attachments); + } + msg.setDir(Message.Direction.Outgoing); - assert e.outgoing_message_color(msg).equals(Color.pEpRatingReliable); + if(!(e.outgoing_message_color(msg).equals(Color.pEpRatingReliable))) throw new AssertionError(); Message enc = null; enc = e.encrypt_message(msg, null); - assert enc != null; + if(!(enc != null)) throw new AssertionError(); - assert enc.getShortmsg().equals("pEp"); - assert enc.getLongmsg().contains("pep-project.org"); + if(!(enc.getShortmsg().equals("pEp"))) throw new AssertionError(); + if(!(enc.getLongmsg().contains("pep-project.org"))) throw new AssertionError(); Vector attachments = enc.getAttachments(); - assert e.toUTF16(attachments.get(1).data).startsWith("-----BEGIN PGP MESSAGE-----"); + if(!(e.toUTF16(attachments.get(1).data).startsWith("-----BEGIN PGP MESSAGE-----"))) throw new AssertionError(); Engine.decrypt_message_Return result = null; result = e.decrypt_message(enc); - assert result.dst.getShortmsg().equals("hello, world"); - assert result.dst.getLongmsg().equals("this is a test"); + if(!(result.dst.getShortmsg().equals("hello, world"))) throw new AssertionError(); + if(!(result.dst.getLongmsg().equals("this is a test"))) throw new AssertionError(); ArrayList> _pairs = result.dst.getOptFields(); + /* FIXME ? { - String fbz = null; - String rcvd = null; + byte msk = 0; for (Pair _pair : _pairs) { - if (_pair.first.equals("Received")) - rcvd = _pair.second; - if (_pair.first.equals("X-Foobaz")) - fbz = _pair.second; + if (_pair.first.equals("Received")) { + if(!(_pair.second.equals("in time"))) throw new AssertionError(); + msk |= 1; + }else if (_pair.first.equals("X-Foobaz")) { + if(!(_pair.second.equals("of course"))) throw new AssertionError(); + msk |= 2; + } } - /* FIXME ? - assert rcvd!=null && rcvd.equals("in time"); - assert fbz!=null && fbz.equals("of course"); - */ - + if(!(msk == 3)) throw new AssertionError(); } + */ + { + Vector detach = msg.getAttachments(); + byte msk = 0; + for (Blob dblb : detach) { + if (dblb.filename.equals("pep.png")) { + if(!(dblb.data.equals(png))) throw new AssertionError(); + if(!(dblb.mime_type.equals("image/png"))) throw new AssertionError(); + msk |= 1; + }else if (dblb.filename.equals("spinner.gif")) { + if(!(dblb.data.equals(gif))) throw new AssertionError(); + if(!(dblb.mime_type.equals("image/gif"))) throw new AssertionError(); + msk |= 2; + }else if (dblb.filename.equals("yml2.tar.bz2")) { + if(!(dblb.data.equals(tbz))) throw new AssertionError(); + if(!(dblb.mime_type.equals("application/x-gtar"))) throw new AssertionError(); + msk |= 4; + } + } + if(!(msk == 7)) throw new AssertionError(); + } } - }