View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.plugins.assembly.archive.phase;
20  
21  import java.io.IOException;
22  import java.util.Collections;
23  import java.util.LinkedHashMap;
24  
25  import org.apache.maven.artifact.Artifact;
26  import org.apache.maven.model.Model;
27  import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
28  import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
29  import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
30  import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
31  import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
32  import org.apache.maven.plugins.assembly.model.Assembly;
33  import org.apache.maven.plugins.assembly.model.DependencySet;
34  import org.apache.maven.project.MavenProject;
35  import org.apache.maven.project.ProjectBuilder;
36  import org.junit.jupiter.api.BeforeEach;
37  import org.junit.jupiter.api.Test;
38  import org.junit.jupiter.api.extension.ExtendWith;
39  import org.mockito.junit.jupiter.MockitoExtension;
40  import org.mockito.junit.jupiter.MockitoSettings;
41  import org.mockito.quality.Strictness;
42  
43  import static org.mockito.ArgumentMatchers.anyList;
44  import static org.mockito.ArgumentMatchers.eq;
45  import static org.mockito.ArgumentMatchers.isNull;
46  import static org.mockito.Mockito.mock;
47  import static org.mockito.Mockito.verify;
48  import static org.mockito.Mockito.when;
49  
50  @MockitoSettings(strictness = Strictness.WARN)
51  @ExtendWith(MockitoExtension.class)
52  public class DependencySetAssemblyPhaseTest {
53      private DependencySetAssemblyPhase phase;
54  
55      private DependencyResolver dependencyResolver;
56  
57      @BeforeEach
58      public void setUp() {
59          this.dependencyResolver = mock(DependencyResolver.class);
60  
61          this.phase = new DependencySetAssemblyPhase(mock(ProjectBuilder.class), dependencyResolver);
62      }
63  
64      @Test
65      public void testExecuteShouldAddOneDependencyFromProject()
66              throws AssemblyFormattingException, ArchiveCreationException, IOException,
67                      InvalidAssemblerConfigurationException, DependencyResolutionException {
68          final String outputLocation = "/out";
69  
70          final MavenProject project = newMavenProject("group", "project", "0");
71  
72          Artifact artifact = mock(Artifact.class);
73          project.setArtifact(artifact);
74  
75          final DependencySet ds = new DependencySet();
76          ds.setUseProjectArtifact(false);
77          ds.setOutputDirectory(outputLocation);
78          ds.setOutputFileNameMapping("${artifact.artifactId}");
79          ds.setUnpack(false);
80          ds.setScope(Artifact.SCOPE_COMPILE);
81          ds.setFileMode(Integer.toString(10, 8));
82  
83          final Assembly assembly = new Assembly();
84  
85          assembly.setId("test");
86          assembly.setIncludeBaseDirectory(false);
87          assembly.addDependencySet(ds);
88  
89          project.setArtifacts(Collections.singleton(artifact));
90  
91          when(dependencyResolver.resolveDependencySets(eq(assembly), isNull(), anyList()))
92                  .thenReturn(new LinkedHashMap<>());
93  
94          this.phase.execute(assembly, null, null);
95  
96          // result of easymock migration, should be assert of expected result instead of verifying methodcalls
97          verify(dependencyResolver).resolveDependencySets(eq(assembly), isNull(), anyList());
98      }
99  
100     @Test
101     public void testExecuteShouldNotAddDependenciesWhenProjectHasNone() throws Exception {
102         final Assembly assembly = new Assembly();
103         assembly.setId("test");
104         assembly.setIncludeBaseDirectory(false);
105 
106         when(dependencyResolver.resolveDependencySets(eq(assembly), isNull(), anyList()))
107                 .thenReturn(new LinkedHashMap<>());
108 
109         this.phase.execute(assembly, null, null);
110 
111         // result of easymock migration, should be assert of expected result instead of verifying methodcalls
112         verify(dependencyResolver).resolveDependencySets(eq(assembly), isNull(), anyList());
113     }
114 
115     private MavenProject newMavenProject(final String groupId, final String artifactId, final String version) {
116         final Model model = new Model();
117         model.setGroupId(groupId);
118         model.setArtifactId(artifactId);
119         model.setVersion(version);
120 
121         return new MavenProject(model);
122     }
123 }