1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.plugins.war.overlay;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import org.apache.maven.plugin.testing.stubs.ArtifactStub;
25  import org.apache.maven.plugins.war.Overlay;
26  import org.apache.maven.plugins.war.stub.MavenProjectArtifactsStub;
27  import org.apache.maven.plugins.war.stub.WarArtifactStub;
28  import org.junit.jupiter.api.Test;
29  
30  import static org.apache.maven.plugins.war.Overlay.DEFAULT_EXCLUDES;
31  import static org.apache.maven.plugins.war.Overlay.DEFAULT_INCLUDES;
32  import static org.junit.jupiter.api.Assertions.assertEquals;
33  import static org.junit.jupiter.api.Assertions.assertNotNull;
34  import static org.junit.jupiter.api.Assertions.assertThrows;
35  
36  
37  
38  
39  class OverlayManagerTest {
40  
41      @Test
42      public void testEmptyProject() throws Exception {
43          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
44          final List<Overlay> overlays = new ArrayList<>();
45          final Overlay currentProjectOverlay = Overlay.createInstance();
46          OverlayManager manager =
47                  new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
48          assertNotNull(manager.getOverlays());
49          assertEquals(1, manager.getOverlays().size());
50          assertEquals(currentProjectOverlay, manager.getOverlays().get(0));
51      }
52  
53      
54      void testAutodetectSimpleOverlay(Overlay currentProjectOverlay) throws Exception {
55  
56          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
57          final ArtifactStub first = newWarArtifact("test", "test-webapp");
58          project.addArtifact(first);
59  
60          final List<Overlay> overlays = new ArrayList<>();
61  
62          final Overlay overlay = currentProjectOverlay;
63          OverlayManager manager = new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, overlay);
64          assertNotNull(manager.getOverlays());
65          assertEquals(2, manager.getOverlays().size());
66          assertEquals(overlay, manager.getOverlays().get(0));
67          assertEquals(new DefaultOverlay(first), manager.getOverlays().get(1));
68      }
69  
70      @Test
71      void testSimpleOverlay() throws Exception {
72  
73          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
74          final ArtifactStub first = newWarArtifact("test", "test-webapp");
75          project.addArtifact(first);
76  
77          final List<Overlay> overlays = new ArrayList<>();
78          overlays.add(new DefaultOverlay(first));
79  
80          final Overlay currentProjectOverlay = Overlay.createInstance();
81          OverlayManager manager =
82                  new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
83          assertNotNull(manager.getOverlays());
84          assertEquals(2, manager.getOverlays().size());
85          assertEquals(Overlay.createInstance(), manager.getOverlays().get(0));
86          assertEquals(overlays.get(0), manager.getOverlays().get(1));
87      }
88  
89      @Test
90      void testUnknownOverlay() throws Exception {
91  
92          final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
93          final ArtifactStub first = newWarArtifact("test", "test-webapp");
94          project.addArtifact(first);
95  
96          final List<Overlay> overlays = new ArrayList<>();
97          overlays.add(new Overlay("test", "test-webapp-2"));
98  
99          final Overlay currentProjectOverlay = Overlay.createInstance();
100         assertThrows(
101                 InvalidOverlayConfigurationException.class,
102                 () -> new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay));
103     }
104 
105     @Test
106     void testCustomCurrentProject() throws Exception {
107 
108         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
109         final ArtifactStub first = newWarArtifact("test", "test-webapp");
110         final ArtifactStub second = newWarArtifact("test", "test-webapp-2");
111         project.addArtifact(first);
112         project.addArtifact(second);
113 
114         final List<Overlay> overlays = new ArrayList<>();
115         overlays.add(new DefaultOverlay(first));
116         final Overlay currentProjectOverlay = Overlay.createInstance();
117         overlays.add(currentProjectOverlay);
118 
119         OverlayManager manager =
120                 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
121         assertNotNull(manager.getOverlays());
122         assertEquals(3, manager.getOverlays().size());
123         assertEquals(overlays.get(0), manager.getOverlays().get(0));
124         assertEquals(currentProjectOverlay, manager.getOverlays().get(1));
125         assertEquals(new DefaultOverlay(second), manager.getOverlays().get(2));
126     }
127 
128     @Test
129     void testOverlaysWithSameArtifactAndGroupId() throws Exception {
130 
131         final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
132         final ArtifactStub first = newWarArtifact("test", "test-webapp");
133         final ArtifactStub second = newWarArtifact("test", "test-webapp", "my-classifier");
134 
135         project.addArtifact(first);
136         project.addArtifact(second);
137 
138         final List<Overlay> overlays = new ArrayList<>();
139         overlays.add(new DefaultOverlay(first));
140         overlays.add(new DefaultOverlay(second));
141 
142         final Overlay currentProjectOverlay = Overlay.createInstance();
143         OverlayManager manager =
144                 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
145         assertNotNull(manager.getOverlays());
146         assertEquals(3, manager.getOverlays().size());
147         assertEquals(currentProjectOverlay, manager.getOverlays().get(0));
148         assertEquals(overlays.get(0), manager.getOverlays().get(1));
149         assertEquals(overlays.get(1), manager.getOverlays().get(2));
150     }
151 
152     protected ArtifactStub newWarArtifact(String groupId, String artifactId, String classifier) {
153         final WarArtifactStub a = new WarArtifactStub("");
154         a.setGroupId(groupId);
155         a.setArtifactId(artifactId);
156         if (classifier != null) {
157             a.setClassifier(classifier);
158         }
159         return a;
160     }
161 
162     protected ArtifactStub newWarArtifact(String groupId, String artifactId) {
163         return newWarArtifact(groupId, artifactId, null);
164     }
165 }