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.artifact.resolver.filter;
20  
21  import java.util.Arrays;
22  import java.util.Collections;
23  
24  import org.apache.maven.artifact.Artifact;
25  import org.apache.maven.model.Exclusion;
26  import org.junit.jupiter.api.BeforeEach;
27  import org.junit.jupiter.api.Test;
28  
29  import static org.hamcrest.CoreMatchers.is;
30  import static org.hamcrest.MatcherAssert.assertThat;
31  import static org.mockito.Mockito.mock;
32  import static org.mockito.Mockito.when;
33  
34  class ExclusionArtifactFilterTest {
35      private Artifact artifact;
36      private Artifact artifact2;
37  
38      @BeforeEach
39      void setup() {
40          artifact = mock(Artifact.class);
41          when(artifact.getGroupId()).thenReturn("org.apache.maven");
42          when(artifact.getArtifactId()).thenReturn("maven-core");
43  
44          artifact2 = mock(Artifact.class);
45          when(artifact2.getGroupId()).thenReturn("org.junit.jupiter");
46          when(artifact2.getArtifactId()).thenReturn("junit-jupiter-engine");
47      }
48  
49      @Test
50      void testExcludeExact() {
51          Exclusion exclusion = new Exclusion();
52          exclusion.setGroupId("org.apache.maven");
53          exclusion.setArtifactId("maven-core");
54          ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
55  
56          assertThat(filter.include(artifact), is(false));
57      }
58  
59      @Test
60      void testExcludeNoMatch() {
61          Exclusion exclusion = new Exclusion();
62          exclusion.setGroupId("org.apache.maven");
63          exclusion.setArtifactId("maven-model");
64          ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
65  
66          assertThat(filter.include(artifact), is(true));
67      }
68  
69      @Test
70      void testExcludeGroupIdWildcard() {
71          Exclusion exclusion = new Exclusion();
72          exclusion.setGroupId("*");
73          exclusion.setArtifactId("maven-core");
74          ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
75  
76          assertThat(filter.include(artifact), is(false));
77      }
78  
79      @Test
80      void testExcludeGroupIdWildcardNoMatch() {
81          Exclusion exclusion = new Exclusion();
82          exclusion.setGroupId("*");
83          exclusion.setArtifactId("maven-compat");
84          ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
85  
86          assertThat(filter.include(artifact), is(true));
87      }
88  
89      @Test
90      void testExcludeArtifactIdWildcard() {
91          Exclusion exclusion = new Exclusion();
92          exclusion.setGroupId("org.apache.maven");
93          exclusion.setArtifactId("*");
94          ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
95  
96          assertThat(filter.include(artifact), is(false));
97      }
98  
99      @Test
100     void testExcludeArtifactIdWildcardNoMatch() {
101         Exclusion exclusion = new Exclusion();
102         exclusion.setGroupId("org.apache.groovy");
103         exclusion.setArtifactId("*");
104         ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
105 
106         assertThat(filter.include(artifact), is(true));
107     }
108 
109     @Test
110     void testExcludeAllWildcard() {
111         Exclusion exclusion = new Exclusion();
112         exclusion.setGroupId("*");
113         exclusion.setArtifactId("*");
114         ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
115 
116         assertThat(filter.include(artifact), is(false));
117     }
118 
119     @Test
120     void testMultipleExclusionsExcludeArtifactIdWildcard() {
121         Exclusion exclusion1 = new Exclusion();
122         exclusion1.setGroupId("org.apache.groovy");
123         exclusion1.setArtifactId("*");
124 
125         Exclusion exclusion2 = new Exclusion();
126         exclusion2.setGroupId("org.apache.maven");
127         exclusion2.setArtifactId("maven-core");
128 
129         ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Arrays.asList(exclusion1, exclusion2));
130 
131         assertThat(filter.include(artifact), is(false));
132     }
133 
134     @Test
135     void testMultipleExclusionsExcludeGroupIdWildcard() {
136         Exclusion exclusion1 = new Exclusion();
137         exclusion1.setGroupId("*");
138         exclusion1.setArtifactId("maven-model");
139 
140         Exclusion exclusion2 = new Exclusion();
141         exclusion2.setGroupId("org.apache.maven");
142         exclusion2.setArtifactId("maven-core");
143 
144         ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Arrays.asList(exclusion1, exclusion2));
145 
146         assertThat(filter.include(artifact), is(false));
147     }
148 
149     @Test
150     void testExcludeWithGlob() {
151         Exclusion exclusion = new Exclusion();
152         exclusion.setGroupId("*");
153         exclusion.setArtifactId("maven-*");
154         ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
155 
156         assertThat(filter.include(artifact), is(false));
157         assertThat(filter.include(artifact2), is(true));
158     }
159 
160     @Test
161     void testExcludeWithGlobStar() {
162         Exclusion exclusion = new Exclusion();
163         exclusion.setGroupId("**");
164         exclusion.setArtifactId("maven-**");
165         ExclusionArtifactFilter filter = new ExclusionArtifactFilter(Collections.singletonList(exclusion));
166 
167         assertThat(filter.include(artifact), is(false));
168         assertThat(filter.include(artifact2), is(true));
169     }
170 }