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.dependency.utils;
20  
21  import javax.inject.Provider;
22  
23  import java.util.stream.Stream;
24  
25  import org.apache.maven.execution.MavenExecutionRequest;
26  import org.apache.maven.execution.MavenSession;
27  import org.eclipse.aether.RepositorySystemSession;
28  import org.eclipse.aether.repository.RemoteRepository;
29  import org.eclipse.aether.repository.RepositoryPolicy;
30  import org.junit.jupiter.api.Test;
31  import org.junit.jupiter.api.extension.ExtendWith;
32  import org.junit.jupiter.params.ParameterizedTest;
33  import org.junit.jupiter.params.provider.Arguments;
34  import org.junit.jupiter.params.provider.MethodSource;
35  import org.mockito.InjectMocks;
36  import org.mockito.Mock;
37  import org.mockito.junit.jupiter.MockitoExtension;
38  
39  import static org.assertj.core.api.Assertions.assertThat;
40  import static org.assertj.core.api.Assertions.assertThatCode;
41  import static org.junit.jupiter.params.provider.Arguments.of;
42  import static org.mockito.Mockito.when;
43  
44  @ExtendWith(MockitoExtension.class)
45  class ResolverUtilTest {
46  
47      @Mock
48      private MavenExecutionRequest executionRequest;
49  
50      @Mock
51      private RepositorySystemSession repositorySystemSession;
52  
53      @Mock
54      private MavenSession mavenSession;
55  
56      @Mock
57      private Provider<MavenSession> sessionProvider;
58  
59      @InjectMocks
60      private ResolverUtil resolverUtil;
61  
62      public static Stream<Arguments> prepareRepositoryTest() {
63  
64          return Stream.of(
65                  of("", "temp", "default", ""),
66                  of("https://repo.maven.apache.org", "temp", "default", "https://repo.maven.apache.org"),
67                  of("central::https://repo.maven.apache.org", "central", "default", "https://repo.maven.apache.org"),
68                  of("central::::https://repo.maven.apache.org", "central", "default", "https://repo.maven.apache.org"),
69                  of(
70                          "central::layout2::https://repo.maven.apache.org",
71                          "central",
72                          "layout2",
73                          "https://repo.maven.apache.org"));
74      }
75  
76      @ParameterizedTest
77      @MethodSource
78      void prepareRepositoryTest(String repository, String id, String type, String url) {
79          when(sessionProvider.get()).thenReturn(mavenSession);
80          when(mavenSession.getRepositorySession()).thenReturn(repositorySystemSession);
81          when(mavenSession.getRequest()).thenReturn(executionRequest);
82          when(executionRequest.isUpdateSnapshots()).thenReturn(true);
83  
84          RemoteRepository remoteRepository = resolverUtil.prepareRemoteRepository(repository);
85  
86          assertThat(remoteRepository).isNotNull();
87          assertThat(remoteRepository.getId()).isEqualTo(id);
88          assertThat(remoteRepository.getContentType()).isEqualTo(type);
89          assertThat(remoteRepository.getUrl()).isEqualTo(url);
90  
91          RepositoryPolicy snapshotPolicy = remoteRepository.getPolicy(true);
92          assertThat(snapshotPolicy).isNotNull();
93          assertThat(snapshotPolicy.getUpdatePolicy()).isEqualTo(RepositoryPolicy.UPDATE_POLICY_ALWAYS);
94          assertThat(snapshotPolicy.getChecksumPolicy()).isEqualTo(RepositoryPolicy.CHECKSUM_POLICY_WARN);
95  
96          RepositoryPolicy releasePolicy = remoteRepository.getPolicy(true);
97          assertThat(releasePolicy).isNotNull();
98          assertThat(releasePolicy.getUpdatePolicy()).isEqualTo(RepositoryPolicy.UPDATE_POLICY_ALWAYS);
99          assertThat(releasePolicy.getChecksumPolicy()).isEqualTo(RepositoryPolicy.CHECKSUM_POLICY_WARN);
100     }
101 
102     @Test
103     void prepareRepositoryWithNull() {
104         assertThatCode(() -> resolverUtil.prepareRemoteRepository(null))
105                 .isExactlyInstanceOf(NullPointerException.class)
106                 .hasMessage("repository must be not null");
107     }
108 }