1 /** 2 * Copyright (c) 2014-2017, jcabi.com 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 1) Redistributions of source code must retain the above 8 * copyright notice, this list of conditions and the following 9 * disclaimer. 2) Redistributions in binary form must reproduce the above 10 * copyright notice, this list of conditions and the following 11 * disclaimer in the documentation and/or other materials provided 12 * with the distribution. 3) Neither the name of the jcabi.com nor 13 * the names of its contributors may be used to endorse or promote 14 * products derived from this software without specific prior written 15 * permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT 19 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 21 * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 28 * OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 package com.jcabi.email.postman; 31 32 import com.jcabi.email.Envelope; 33 import com.jcabi.email.Postman; 34 import com.jcabi.email.stamp.StRecipient; 35 import com.jcabi.email.stamp.StSender; 36 import org.junit.Test; 37 import org.mockito.Mockito; 38 39 /** 40 * Test case for {@link PostNoLoops}. 41 * 42 * @author Yegor Bugayenko (yegor256@gmail.com) 43 * @version $Id: e8463a3b6c7823e1278c2cf7acc0bcf778095dc9 $ 44 * @since 1.6 45 */ 46 public final class PostNoLoopsTest { 47 48 /** 49 * PostNoLoops can ignore messages. 50 * @throws Exception If fails 51 */ 52 @Test 53 @SuppressWarnings("unchecked") 54 public void ignoresLoopMessages() throws Exception { 55 final Postman post = Mockito.mock(Postman.class); 56 final String email = "test@example.com"; 57 new PostNoLoops(post).send( 58 new Envelope.Mime() 59 .with(new StRecipient(email)) 60 .with(new StRecipient("hello@example.com")) 61 .with(new StSender("Jeff", email)) 62 ); 63 Mockito.verify(post, Mockito.never()).send(Mockito.any(Envelope.class)); 64 } 65 66 /** 67 * PostNoLoops can pass normal messages through. 68 * @throws Exception If fails 69 */ 70 @Test 71 @SuppressWarnings("unchecked") 72 public void doesntTouchNormalMessages() throws Exception { 73 final Postman post = Mockito.mock(Postman.class); 74 new PostNoLoops(post).send( 75 new Envelope.Mime() 76 .with(new StRecipient("jeff@example.com")) 77 .with(new StSender("Walter", "walter@example.com")) 78 ); 79 Mockito.verify(post).send(Mockito.any(Envelope.class)); 80 } 81 82 }