1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.dependency;
20
21 import java.lang.reflect.Field;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import junit.framework.TestCase;
26 import org.apache.maven.artifact.repository.ArtifactRepository;
27 import org.apache.maven.execution.MavenSession;
28 import org.apache.maven.project.ProjectBuildingRequest;
29
30 import static org.apache.maven.plugins.dependency.AbstractDependencyMojoTest.ConcreteDependencyMojo.createConcreteDependencyMojoWithArtifactRepositories;
31 import static org.apache.maven.plugins.dependency.AbstractDependencyMojoTest.ConcreteDependencyMojo.createConcreteDependencyMojoWithPluginRepositories;
32 import static org.mockito.Mockito.mock;
33 import static org.mockito.Mockito.when;
34
35 public class AbstractDependencyMojoTest extends TestCase {
36 private MavenSession session = mock(MavenSession.class);
37
38 private ProjectBuildingRequest buildingRequest = mock(ProjectBuildingRequest.class);
39
40 private ArrayList<ArtifactRepository> artifactRepos = new ArrayList<>();
41
42 private ArrayList<ArtifactRepository> pluginRepos = new ArrayList<>();
43
44 static class ConcreteDependencyMojo extends AbstractDependencyMojo {
45 static ConcreteDependencyMojo createConcreteDependencyMojoWithArtifactRepositories(
46 MavenSession mavenSession, List<ArtifactRepository> artifactRepos)
47 throws NoSuchFieldException, IllegalAccessException {
48 ConcreteDependencyMojo cdm = new ConcreteDependencyMojo();
49 cdm.session = mavenSession;
50
51 Field par = AbstractDependencyMojo.class.getDeclaredField("remoteRepositories");
52 par.setAccessible(true);
53 par.set(cdm, artifactRepos);
54
55 return cdm;
56 }
57
58 static ConcreteDependencyMojo createConcreteDependencyMojoWithPluginRepositories(
59 MavenSession mavenSession, List<ArtifactRepository> pluginRepos)
60 throws NoSuchFieldException, IllegalAccessException {
61 ConcreteDependencyMojo cdm = new ConcreteDependencyMojo();
62 cdm.session = mavenSession;
63
64 Field par = AbstractDependencyMojo.class.getDeclaredField("remotePluginRepositories");
65 par.setAccessible(true);
66 par.set(cdm, pluginRepos);
67
68 return cdm;
69 }
70
71 @Override
72 protected void doExecute() {}
73 }
74
75 @Override
76 protected void setUp() throws Exception {
77 pluginRepos.add(newRepositoryWithId("pr-central"));
78 pluginRepos.add(newRepositoryWithId("pr-plugins"));
79
80 artifactRepos.add(newRepositoryWithId("ar-central"));
81 artifactRepos.add(newRepositoryWithId("ar-snapshots"));
82 artifactRepos.add(newRepositoryWithId("ar-staging"));
83
84 when(session.getProjectBuildingRequest()).thenReturn(buildingRequest);
85 }
86
87 private static ArtifactRepository newRepositoryWithId(String id) {
88 ArtifactRepository repo = mock(ArtifactRepository.class);
89 when(repo.getId()).thenReturn(id);
90 return repo;
91 }
92
93 public void testNewResolveArtifactProjectBuildingRequestRemoteRepositoriesSize()
94 throws NoSuchFieldException, IllegalAccessException {
95 AbstractDependencyMojo mojo = createConcreteDependencyMojoWithArtifactRepositories(session, artifactRepos);
96
97 ProjectBuildingRequest pbr = mojo.newResolveArtifactProjectBuildingRequest();
98 List<ArtifactRepository> rrepos = pbr.getRemoteRepositories();
99
100 assertEquals(3, rrepos.size());
101 }
102
103 public void testNewResolveArtifactProjectBuildingRequestRemoteRepositoriesContents()
104 throws NoSuchFieldException, IllegalAccessException {
105 AbstractDependencyMojo mojo = createConcreteDependencyMojoWithArtifactRepositories(session, artifactRepos);
106
107 ProjectBuildingRequest pbr = mojo.newResolveArtifactProjectBuildingRequest();
108 List<ArtifactRepository> rrepos = pbr.getRemoteRepositories();
109
110 assertEquals("ar-central", rrepos.get(0).getId());
111 assertEquals("ar-snapshots", rrepos.get(1).getId());
112 assertEquals("ar-staging", rrepos.get(2).getId());
113 }
114
115 public void testNewResolvePluginProjectBuildingRequestRemoteRepositoriesSize()
116 throws NoSuchFieldException, IllegalAccessException {
117 AbstractDependencyMojo mojo = createConcreteDependencyMojoWithPluginRepositories(session, pluginRepos);
118
119 ProjectBuildingRequest pbr = mojo.newResolvePluginProjectBuildingRequest();
120 List<ArtifactRepository> rrepos = pbr.getRemoteRepositories();
121
122 assertEquals(2, rrepos.size());
123 }
124
125 public void testNewResolvePluginProjectBuildingRequestRemoteRepositoriesContents()
126 throws NoSuchFieldException, IllegalAccessException {
127 AbstractDependencyMojo mojo = createConcreteDependencyMojoWithPluginRepositories(session, pluginRepos);
128
129 ProjectBuildingRequest pbr = mojo.newResolvePluginProjectBuildingRequest();
130 List<ArtifactRepository> rrepos = pbr.getRemoteRepositories();
131
132 assertEquals("pr-central", rrepos.get(0).getId());
133 assertEquals("pr-plugins", rrepos.get(1).getId());
134 }
135 }