View Javadoc
1   package org.apache.maven.plugins.war.overlay;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import static org.apache.maven.plugins.war.Overlay.DEFAULT_INCLUDES;
23  import static org.apache.maven.plugins.war.Overlay.DEFAULT_EXCLUDES;
24  
25  import org.apache.maven.plugin.testing.stubs.ArtifactStub;
26  import org.apache.maven.plugins.war.Overlay;
27  import org.apache.maven.plugins.war.overlay.DefaultOverlay;
28  import org.apache.maven.plugins.war.overlay.InvalidOverlayConfigurationException;
29  import org.apache.maven.plugins.war.overlay.OverlayManager;
30  import org.apache.maven.plugins.war.stub.MavenProjectArtifactsStub;
31  import org.apache.maven.plugins.war.stub.WarArtifactStub;
32  import org.codehaus.plexus.PlexusTestCase;
33  
34  import java.util.ArrayList;
35  import java.util.List;
36  
37  /**
38   * @author Stephane Nicoll
39   * @version $Id: OverlayManagerTest.java 1781709 2017-02-04 21:11:45Z michaelo $
40   */
41  public class OverlayManagerTest
42      extends PlexusTestCase
43  {
44  
45  
46      public void testEmptyProject()
47          throws Exception
48      {
49          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
50          final List<Overlay> overlays = new ArrayList<Overlay>();
51          try
52          {
53              final Overlay currentProjectOVerlay = Overlay.createInstance();
54              OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
55                                                           currentProjectOVerlay );
56              assertNotNull( manager.getOverlays() );
57              assertEquals( 1, manager.getOverlays().size() );
58              assertEquals( currentProjectOVerlay, manager.getOverlays().get( 0 ) );
59          }
60          catch ( InvalidOverlayConfigurationException e )
61          {
62              e.printStackTrace();
63              fail( "Should not have failed to validate a valid overly config " + e.getMessage() );
64          }
65      }
66  
67      public void testAutodetectSimpleOverlay( Overlay currentProjectOverlay )
68          throws Exception
69      {
70  
71          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
72          final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
73          project.addArtifact( first );
74  
75          final List<Overlay> overlays = new ArrayList<Overlay>();
76  
77          try
78          {
79              final Overlay overlay = currentProjectOverlay;
80              OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
81                                                           overlay );
82              assertNotNull( manager.getOverlays() );
83              assertEquals( 2, manager.getOverlays().size() );
84              assertEquals( overlay, manager.getOverlays().get( 0 ) );
85              assertEquals( new DefaultOverlay( first ), manager.getOverlays().get( 1 ) );
86          }
87          catch ( InvalidOverlayConfigurationException e )
88          {
89              e.printStackTrace();
90              fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
91          }
92      }
93  
94      public void testSimpleOverlay()
95          throws Exception
96      {
97  
98          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
99          final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
100         project.addArtifact( first );
101 
102         final List<Overlay> overlays = new ArrayList<Overlay>();
103         overlays.add( new DefaultOverlay( first ) );
104 
105         try
106         {
107             final Overlay currentProjectOverlay = Overlay.createInstance();
108             OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
109                                                          currentProjectOverlay );
110             assertNotNull( manager.getOverlays() );
111             assertEquals( 2, manager.getOverlays().size() );
112             assertEquals( Overlay.createInstance(), manager.getOverlays().get( 0 ) );
113             assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
114         }
115         catch ( InvalidOverlayConfigurationException e )
116         {
117             e.printStackTrace();
118             fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
119         }
120     }
121 
122     public void testUnknonwnOverlay()
123         throws Exception
124     {
125 
126         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
127         final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
128         project.addArtifact( first );
129 
130         final List<Overlay> overlays = new ArrayList<Overlay>();
131         overlays.add( new Overlay( "test", "test-webapp-2" ) );
132 
133         try
134         {
135             final Overlay currentProjectOVerlay = Overlay.createInstance();
136             new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOVerlay );
137             fail( "Should have failed to validate an unknown overlay" );
138         }
139         catch ( InvalidOverlayConfigurationException e )
140         {
141             // OK
142         }
143     }
144 
145     public void testCustomCurrentProject()
146         throws Exception
147     {
148 
149         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
150         final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
151         final ArtifactStub second = newWarArtifact( "test", "test-webapp-2" );
152         project.addArtifact( first );
153         project.addArtifact( second );
154 
155         final List<Overlay> overlays = new ArrayList<Overlay>();
156         overlays.add( new DefaultOverlay( first ) );
157         final Overlay currentProjectOverlay = Overlay.createInstance();
158         overlays.add( currentProjectOverlay );
159 
160         try
161         {
162             OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
163                                                          currentProjectOverlay );
164             assertNotNull( manager.getOverlays() );
165             assertEquals( 3, manager.getOverlays().size() );
166             assertEquals( overlays.get( 0 ), manager.getOverlays().get( 0 ) );
167             assertEquals( currentProjectOverlay, manager.getOverlays().get( 1 ) );
168             assertEquals( new DefaultOverlay( second ), manager.getOverlays().get( 2 ) );
169 
170         }
171         catch ( InvalidOverlayConfigurationException e )
172         {
173             e.printStackTrace();
174             fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
175         }
176     }
177 
178     public void testOverlaysWithSameArtifactAndGroupId()
179         throws Exception
180     {
181 
182         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
183         final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
184         final ArtifactStub second = newWarArtifact( "test", "test-webapp", "my-classifier" );
185 
186         project.addArtifact( first );
187         project.addArtifact( second );
188 
189         final List<Overlay> overlays = new ArrayList<Overlay>();
190         overlays.add( new DefaultOverlay( first ) );
191         overlays.add( new DefaultOverlay( second ) );
192 
193         try
194         {
195             final Overlay currentProjectOverlay = Overlay.createInstance();
196             OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
197                                                          currentProjectOverlay );
198             assertNotNull( manager.getOverlays() );
199             assertEquals( 3, manager.getOverlays().size() );
200             assertEquals( currentProjectOverlay, manager.getOverlays().get( 0 ) );
201             assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
202             assertEquals( overlays.get( 1 ), manager.getOverlays().get( 2 ) );
203 
204         }
205         catch ( InvalidOverlayConfigurationException e )
206         {
207             e.printStackTrace();
208             fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
209         }
210     }
211 
212 
213     protected ArtifactStub newWarArtifact( String groupId, String artifactId, String classifier )
214     {
215         final WarArtifactStub a = new WarArtifactStub( getBasedir() );
216         a.setGroupId( groupId );
217         a.setArtifactId( artifactId );
218         if ( classifier != null )
219         {
220             a.setClassifier( classifier );
221         }
222         return a;
223     }
224 
225     protected ArtifactStub newWarArtifact( String groupId, String artifactId )
226     {
227         return newWarArtifact( groupId, artifactId, null );
228 
229     }
230 }