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.codehaus.plexus.PlexusTestCase;
29
30 import static org.apache.maven.plugins.war.Overlay.DEFAULT_EXCLUDES;
31 import static org.apache.maven.plugins.war.Overlay.DEFAULT_INCLUDES;
32
33
34
35
36 public class OverlayManagerTest extends PlexusTestCase {
37
38 public void testEmptyProject() throws Exception {
39 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
40 final List<Overlay> overlays = new ArrayList<>();
41 try {
42 final Overlay currentProjectOverlay = Overlay.createInstance();
43 OverlayManager manager =
44 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
45 assertNotNull(manager.getOverlays());
46 assertEquals(1, manager.getOverlays().size());
47 assertEquals(currentProjectOverlay, manager.getOverlays().get(0));
48 } catch (InvalidOverlayConfigurationException e) {
49 e.printStackTrace();
50 fail("Should not have failed to validate a valid overly config " + e.getMessage());
51 }
52 }
53
54 public 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 try {
63 final Overlay overlay = currentProjectOverlay;
64 OverlayManager manager = new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, overlay);
65 assertNotNull(manager.getOverlays());
66 assertEquals(2, manager.getOverlays().size());
67 assertEquals(overlay, manager.getOverlays().get(0));
68 assertEquals(new DefaultOverlay(first), manager.getOverlays().get(1));
69 } catch (InvalidOverlayConfigurationException e) {
70 e.printStackTrace();
71 fail("Should not have failed to validate a valid overlay config " + e.getMessage());
72 }
73 }
74
75 public void testSimpleOverlay() throws Exception {
76
77 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
78 final ArtifactStub first = newWarArtifact("test", "test-webapp");
79 project.addArtifact(first);
80
81 final List<Overlay> overlays = new ArrayList<>();
82 overlays.add(new DefaultOverlay(first));
83
84 try {
85 final Overlay currentProjectOverlay = Overlay.createInstance();
86 OverlayManager manager =
87 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
88 assertNotNull(manager.getOverlays());
89 assertEquals(2, manager.getOverlays().size());
90 assertEquals(Overlay.createInstance(), manager.getOverlays().get(0));
91 assertEquals(overlays.get(0), manager.getOverlays().get(1));
92 } catch (InvalidOverlayConfigurationException e) {
93 e.printStackTrace();
94 fail("Should not have failed to validate a valid overlay config " + e.getMessage());
95 }
96 }
97
98 public void testUnknownOverlay() throws Exception {
99
100 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
101 final ArtifactStub first = newWarArtifact("test", "test-webapp");
102 project.addArtifact(first);
103
104 final List<Overlay> overlays = new ArrayList<>();
105 overlays.add(new Overlay("test", "test-webapp-2"));
106
107 try {
108 final Overlay currentProjectOverlay = Overlay.createInstance();
109 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
110 fail("Should have failed to validate an unknown overlay");
111 } catch (InvalidOverlayConfigurationException e) {
112
113 }
114 }
115
116 public void testCustomCurrentProject() throws Exception {
117
118 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
119 final ArtifactStub first = newWarArtifact("test", "test-webapp");
120 final ArtifactStub second = newWarArtifact("test", "test-webapp-2");
121 project.addArtifact(first);
122 project.addArtifact(second);
123
124 final List<Overlay> overlays = new ArrayList<>();
125 overlays.add(new DefaultOverlay(first));
126 final Overlay currentProjectOverlay = Overlay.createInstance();
127 overlays.add(currentProjectOverlay);
128
129 try {
130 OverlayManager manager =
131 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
132 assertNotNull(manager.getOverlays());
133 assertEquals(3, manager.getOverlays().size());
134 assertEquals(overlays.get(0), manager.getOverlays().get(0));
135 assertEquals(currentProjectOverlay, manager.getOverlays().get(1));
136 assertEquals(new DefaultOverlay(second), manager.getOverlays().get(2));
137
138 } catch (InvalidOverlayConfigurationException e) {
139 e.printStackTrace();
140 fail("Should not have failed to validate a valid overlay config " + e.getMessage());
141 }
142 }
143
144 public void testOverlaysWithSameArtifactAndGroupId() throws Exception {
145
146 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
147 final ArtifactStub first = newWarArtifact("test", "test-webapp");
148 final ArtifactStub second = newWarArtifact("test", "test-webapp", "my-classifier");
149
150 project.addArtifact(first);
151 project.addArtifact(second);
152
153 final List<Overlay> overlays = new ArrayList<>();
154 overlays.add(new DefaultOverlay(first));
155 overlays.add(new DefaultOverlay(second));
156
157 try {
158 final Overlay currentProjectOverlay = Overlay.createInstance();
159 OverlayManager manager =
160 new OverlayManager(overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOverlay);
161 assertNotNull(manager.getOverlays());
162 assertEquals(3, manager.getOverlays().size());
163 assertEquals(currentProjectOverlay, manager.getOverlays().get(0));
164 assertEquals(overlays.get(0), manager.getOverlays().get(1));
165 assertEquals(overlays.get(1), manager.getOverlays().get(2));
166
167 } catch (InvalidOverlayConfigurationException e) {
168 e.printStackTrace();
169 fail("Should not have failed to validate a valid overlay config " + e.getMessage());
170 }
171 }
172
173 protected ArtifactStub newWarArtifact(String groupId, String artifactId, String classifier) {
174 final WarArtifactStub a = new WarArtifactStub(getBasedir());
175 a.setGroupId(groupId);
176 a.setArtifactId(artifactId);
177 if (classifier != null) {
178 a.setClassifier(classifier);
179 }
180 return a;
181 }
182
183 protected ArtifactStub newWarArtifact(String groupId, String artifactId) {
184 return newWarArtifact(groupId, artifactId, null);
185 }
186 }