/** * Adds an entry to the <code>IndexPacket</code>. If an entry with the same DHT key * exists in the packet already, nothing happens. * @param entry */ public void put(IndexPacketEntry entry) { if (contains(entry.emailPacketKey)) return; entries.add(entry); }
@Test public void testSendAnonymousEmail() throws Exception { testEmail = new Email(true); testEmail.setFrom(new InternetAddress("anonymous")); testEmail.addRecipient(RecipientType.TO, new InternetAddress("Erika Mustermann <m-5~1dZ0MrGdyAWu-C2ecNAB5LCCsHQpeSfjn-r~mqMfNvroR98~BRmReUDmb0la-r-pBHLMtflrJE7aTrGwDTBm5~AJFEm-9SJPZnyGs-ed5pOj4Db65yJml1y1n77qr1~mM4GITl6KuIoxg8YwvPrCIlXe2hiiDCoC-uY9-np9UY>")); testEmail.setSubject("Test", "UTF-8"); testEmail.setText("foobar"); op.sendEmail(testEmail); ArgumentCaptor<DhtStorablePacket> arg = ArgumentCaptor.forClass(DhtStorablePacket.class); verify(dht, times(2)).store(arg.capture()); List<DhtStorablePacket> values = arg.getAllValues(); assertTrue(values.get(0) instanceof EncryptedEmailPacket); assertTrue(values.get(1) instanceof IndexPacket); assertTrue(((IndexPacket)values.get(1)).contains(((EncryptedEmailPacket)values.get(0)).getDhtKey())); } }
@Test public void testSendEmail() throws Exception { EmailIdentity identity = TestUtil.createTestIdentities().get(0).identity; String address = "tester <" + identity.getKey() + ">"; when(identities.extractIdentity(address)).thenReturn(identity); testEmail = new Email(true); testEmail.setFrom(new InternetAddress(address)); testEmail.addRecipient(RecipientType.TO, new InternetAddress("Erika Mustermann <m-5~1dZ0MrGdyAWu-C2ecNAB5LCCsHQpeSfjn-r~mqMfNvroR98~BRmReUDmb0la-r-pBHLMtflrJE7aTrGwDTBm5~AJFEm-9SJPZnyGs-ed5pOj4Db65yJml1y1n77qr1~mM4GITl6KuIoxg8YwvPrCIlXe2hiiDCoC-uY9-np9UY>")); testEmail.setSubject("Test", "UTF-8"); testEmail.setText("foobar"); op.sendEmail(testEmail); ArgumentCaptor<DhtStorablePacket> arg = ArgumentCaptor.forClass(DhtStorablePacket.class); verify(dht, times(2)).store(arg.capture()); List<DhtStorablePacket> values = arg.getAllValues(); assertTrue(values.get(0) instanceof EncryptedEmailPacket); assertTrue(values.get(1) instanceof IndexPacket); assertTrue(((IndexPacket)values.get(1)).contains(((EncryptedEmailPacket)values.get(0)).getDhtKey())); }
@Test public void testMergePackets() { for (int i=0; i<8; i+=2) { IndexPacket mergedPacket = new IndexPacket(indexPacket1, indexPacket2); // Verify that the merged packet and the two original packets all have the same email destination key assertEquals(mergedPacket.getDhtKey(), indexPacket1.getDhtKey()); assertEquals(mergedPacket.getDhtKey(), indexPacket2.getDhtKey()); // Verify that the merged packet contains the email packet keys from the original two packets assertEquals(5, mergedPacket.getNumEntries()); for (IndexPacketEntry entry: indexPacket1) assertTrue("Merged packet does not contain key: " + entry.emailPacketKey, mergedPacket.contains(entry.emailPacketKey)); for (IndexPacketEntry entry: indexPacket2) assertTrue("Merged packet does not contain key: " + entry.emailPacketKey, mergedPacket.contains(entry.emailPacketKey)); } }