1   /****************************************************************
2    * Licensed to the Apache Software Foundation (ASF) under one   *
3    * or more contributor license agreements.  See the NOTICE file *
4    * distributed with this work for additional information        *
5    * regarding copyright ownership.  The ASF licenses this file   *
6    * to you under the Apache License, Version 2.0 (the            *
7    * "License"); you may not use this file except in compliance   *
8    * with the License.  You may obtain a copy of the License at   *
9    *                                                              *
10   *   http://www.apache.org/licenses/LICENSE-2.0                 *
11   *                                                              *
12   * Unless required by applicable law or agreed to in writing,   *
13   * software distributed under the License is distributed on an  *
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15   * KIND, either express or implied.  See the License for the    *
16   * specific language governing permissions and limitations      *
17   * under the License.                                           *
18   ****************************************************************/
19  
20  package org.apache.jsieve.utils;
21  
22  import java.io.ByteArrayInputStream;
23  
24  import javax.mail.MessagingException;
25  import javax.mail.Session;
26  import javax.mail.internet.MimeMessage;
27  
28  import org.apache.jsieve.ConfigurationManager;
29  import org.apache.jsieve.exception.SieveException;
30  import org.apache.jsieve.mail.MailAdapter;
31  import org.apache.jsieve.parser.generated.Node;
32  import org.apache.jsieve.parser.generated.ParseException;
33  
34  /**
35   * Class JUnitUtils implements utility methods used during unit testing.
36   */
37  public class JUnitUtils {
38      /**
39       * Method interpret parses a script and evaluates it against a MailAdapter.
40       * 
41       * @param mail
42       * @param script
43       * @throws SieveException
44       * @throws ParseException
45       */
46      static public void interpret(MailAdapter mail, String script)
47              throws SieveException, ParseException {
48          new ConfigurationManager().build().interpret(mail,
49                  new ByteArrayInputStream(script.getBytes()));
50      }
51  
52      /**
53       * Method interpret parses a script and evaluates it against a MailAdapter.
54       * 
55       * @param mail
56       * @param script
57       * @throws SieveException
58       * @throws ParseException
59       */
60      static public Node parse(String script) throws SieveException,
61              ParseException {
62          return new ConfigurationManager().build().parse(
63                  new ByteArrayInputStream(script.getBytes()));
64      }
65  
66      /**
67       * Method createMimeMessage answers an empty MimeMessage.
68       * 
69       * @return MimeMessage
70       */
71      static public MimeMessage createMimeMessage() {
72          return new MimeMessage(Session.getDefaultInstance(System
73                  .getProperties()));
74      }
75  
76      /**
77       * Method createMail answers a SieveMailAdapter wrapping an empty
78       * MimeMessage.
79       * 
80       * @return SieveEnvelopeMailAdapter
81       */
82      static public MailAdapter createMail() {
83          return new SieveMailAdapter(createMimeMessage());
84      }
85  
86      /**
87       * Method createEnvelopeMail answers a SieveEnvelopeMailAdapter wrapping an
88       * empty MimeMessage.
89       * 
90       * @return SieveEnvelopeMailAdapter
91       */
92      static public SieveEnvelopeMailAdapter createEnvelopeMail() {
93          return new SieveEnvelopeMailAdapter(createMimeMessage());
94      }
95  
96      /**
97       * Method copyMail answers a copy of our mock MailAdapter.
98       * 
99       * @param mail
100      * @return MailAdapter
101      * @throws MessagingException
102      */
103     static public MailAdapter copyMail(SieveMailAdapter mail)
104             throws MessagingException {
105         MimeMessage message = new MimeMessage(mail.getMessage());
106         return new SieveMailAdapter(message);
107     }
108 
109     /**
110      * Constructor for JUnitUtils.
111      */
112     private JUnitUtils() {
113         super();
114     }
115 
116 }