View Javadoc
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  }