@@ -221,7 +221,7 @@ public void createMailSession_OutlookMessageSmimeEncryptTest()
221221 .smimeName ("smime.p7m" )
222222 .build ());
223223 }
224-
224+
225225 @ Test
226226 public void createMailSession_OutlookMessageSmimeSignEncryptTest ()
227227 throws IOException , MessagingException , ExecutionException , InterruptedException {
@@ -230,9 +230,9 @@ public void createMailSession_OutlookMessageSmimeSignEncryptTest()
230230 builder .encryptWithSmime (new File (RESOURCES_PKCS + "/smime_test_user.pem.standard.crt" ));
231231 Email email = assertSendingEmail (builder , false , true , false , true , false );
232232 verifyReceivedOutlookEmail (email , true , true );
233-
233+
234234 EmailAssert .assertThat (email ).wasMergedWithSmimeSignedMessage ();
235-
235+
236236 EmailAssert .assertThat (email ).hasOriginalSmimeDetails (OriginalSmimeDetailsImpl .builder ()
237237 .smimeMode (SmimeMode .SIGNED_ENCRYPTED )
238238 .smimeMime ("application/pkcs7-mime" )
@@ -248,6 +248,32 @@ public void createMailSession_OutlookMessageSmimeSignEncryptTest()
248248 .smimeSignedBy ("Benny Bottema" )
249249 .build ());
250250 }
251+
252+ @ Test
253+ public void testEncryptSendAndReceiveDecrypt ()
254+ throws IOException , MessagingException , ExecutionException , InterruptedException {
255+ val builder = EmailHelper .createDummyEmailBuilder (null , true , true , true , false , false , false , false )
256+ .encryptWithSmime (new File (RESOURCES_PKCS + "/smime_test_user.pem.standard.crt" ));
257+
258+ Email email = assertSendingEmail (builder , false , true , false , false , false );
259+
260+ EmailAssert .assertThat (email ).wasMergedWithSmimeSignedMessage ();
261+
262+ EmailAssert .assertThat (email ).hasOriginalSmimeDetails (OriginalSmimeDetailsImpl .builder ()
263+ .smimeMode (SmimeMode .ENCRYPTED )
264+ .smimeMime ("application/pkcs7-mime" )
265+ .smimeType ("enveloped-data" )
266+ .smimeName ("smime.p7m" )
267+ .build ());
268+ EmailAssert .assertThat (email .getSmimeSignedEmail ()).hasOriginalSmimeDetails (OriginalSmimeDetailsImpl .builder ()
269+ .smimeMode (SmimeMode .PLAIN )
270+ .smimeMime (null )
271+ .smimeProtocol (null )
272+ .smimeMicalg (null )
273+ .smimeSignatureValid (null )
274+ .smimeSignedBy (null )
275+ .build ());
276+ }
251277
252278 private void verifyReceivedOutlookEmail (final Email email , final boolean smimeSigned , final boolean smimeEncrypted ) throws IOException {
253279 // Google SMTP overrode this, Outlook recognized it as: Benny Bottema <[email protected] >; on behalf of; lollypop <[email protected] > @@ -381,6 +407,17 @@ private Email assertSendingEmail(final EmailPopulatingBuilder originalEmailPopul
381407
382408 if (!skipChecksDueToSmime ) { // reading a signed mail is different from building a new one
383409 assertThat (receivedEmail ).isEqualTo (originalEmailPopulatingBuilder .buildEmail ());
410+ } else {
411+ val originalMail = originalEmailPopulatingBuilder .buildEmail ();
412+ EmailAssert .assertThat (receivedEmail ).hasSubject (originalMail .getSubject ());
413+ EmailAssert .assertThat (receivedEmail ).hasFromRecipient (originalMail .getFromRecipient ());
414+ EmailAssert .assertThat (receivedEmail ).hasOnlyRecipients (originalMail .getRecipients ());
415+ EmailAssert .assertThat (receivedEmail ).hasHTMLText (originalMail .getHTMLText ());
416+ EmailAssert .assertThat (receivedEmail ).hasPlainText (originalMail .getPlainText ());
417+ EmailAssert .assertThat (receivedEmail ).hasCalendarMethod (originalMail .getCalendarMethod ());
418+ EmailAssert .assertThat (receivedEmail ).hasCalendarText (originalMail .getCalendarText ());
419+ EmailAssert .assertThat (receivedEmail ).hasBounceToRecipient (originalMail .getBounceToRecipient ());
420+ EmailAssert .assertThat (receivedEmail ).hasDispositionNotificationTo (originalMail .getDispositionNotificationTo ());
384421 }
385422
386423 return receivedEmail ;
0 commit comments