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 }