mirror of https://github.com/apache/maven.git
[MNG-7639] Add unit test for DefaultRepositorySystemSessionFactory#newRepositorySession (#1096)
Signed-off-by: crazyhzm <crazyhzm@apache.org>
This commit is contained in:
parent
29c0a95b0b
commit
8f19d9ae28
|
@ -0,0 +1,403 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.maven.internal.aether;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import org.apache.maven.artifact.InvalidRepositoryException;
|
||||
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.bridge.MavenRepositorySystem;
|
||||
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
|
||||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
import org.apache.maven.rtinfo.RuntimeInformation;
|
||||
import org.apache.maven.settings.Server;
|
||||
import org.apache.maven.settings.crypto.SettingsDecrypter;
|
||||
import org.codehaus.plexus.configuration.PlexusConfiguration;
|
||||
import org.codehaus.plexus.testing.PlexusTest;
|
||||
import org.codehaus.plexus.util.xml.Xpp3Dom;
|
||||
import org.eclipse.aether.ConfigurationProperties;
|
||||
import org.eclipse.aether.repository.RepositoryPolicy;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
|
||||
|
||||
/**
|
||||
* UT for {@link DefaultRepositorySystemSessionFactory}.
|
||||
*/
|
||||
@PlexusTest
|
||||
public class DefaultRepositorySystemSessionFactoryTest {
|
||||
|
||||
@Inject
|
||||
protected org.apache.maven.repository.RepositorySystem repositorySystem;
|
||||
|
||||
@Inject
|
||||
protected MavenRepositorySystem mavenRepositorySystem;
|
||||
|
||||
@Inject
|
||||
protected EventSpyDispatcher eventSpyDispatcher;
|
||||
|
||||
@Inject
|
||||
protected SettingsDecrypter settingsDecrypter;
|
||||
|
||||
@Inject
|
||||
protected org.eclipse.aether.RepositorySystem aetherRepositorySystem;
|
||||
|
||||
@Inject
|
||||
protected ArtifactHandlerManager artifactHandlerManager;
|
||||
|
||||
@Inject
|
||||
protected RuntimeInformation information;
|
||||
|
||||
@Test
|
||||
void isNoSnapshotUpdatesTest() throws InvalidRepositoryException {
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
assertNull(systemSessionFactory.newRepositorySession(request).getUpdatePolicy());
|
||||
|
||||
request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
request.setNoSnapshotUpdates(true);
|
||||
assertEquals(
|
||||
RepositoryPolicy.UPDATE_POLICY_NEVER,
|
||||
systemSessionFactory.newRepositorySession(request).getUpdatePolicy());
|
||||
}
|
||||
|
||||
@Test
|
||||
void isSnapshotUpdatesTest() throws InvalidRepositoryException {
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
request.setUpdateSnapshots(true);
|
||||
assertEquals(
|
||||
RepositoryPolicy.UPDATE_POLICY_ALWAYS,
|
||||
systemSessionFactory.newRepositorySession(request).getUpdatePolicy());
|
||||
}
|
||||
|
||||
@Test
|
||||
void wagonProviderConfigurationTest() throws InvalidRepositoryException {
|
||||
Server server = new Server();
|
||||
server.setId("repository");
|
||||
server.setUsername("jason");
|
||||
server.setPassword("abc123");
|
||||
Xpp3Dom configuration = new Xpp3Dom("configuration");
|
||||
Xpp3Dom wagonProvider = new Xpp3Dom("wagonProvider");
|
||||
wagonProvider.setValue("httpclient");
|
||||
configuration.addChild(wagonProvider);
|
||||
server.setConfiguration(configuration);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
List<Server> servers = new ArrayList<>();
|
||||
servers.add(server);
|
||||
request.setServers(servers);
|
||||
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
PlexusConfiguration plexusConfiguration = (PlexusConfiguration) systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get("aether.connector.wagon.config.repository");
|
||||
assertNotNull(plexusConfiguration);
|
||||
assertEquals(0, plexusConfiguration.getChildCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void httpConfigurationWithHttpHeadersTest() throws InvalidRepositoryException {
|
||||
Server server = new Server();
|
||||
server.setId("repository");
|
||||
server.setUsername("jason");
|
||||
server.setPassword("abc123");
|
||||
Xpp3Dom httpConfiguration = new Xpp3Dom("httpConfiguration");
|
||||
Xpp3Dom httpHeaders = new Xpp3Dom("httpHeaders");
|
||||
Xpp3Dom property = new Xpp3Dom("property");
|
||||
Xpp3Dom headerName = new Xpp3Dom("name");
|
||||
headerName.setValue("header");
|
||||
Xpp3Dom headerValue = new Xpp3Dom("value");
|
||||
headerValue.setValue("value");
|
||||
property.addChild(headerName);
|
||||
property.addChild(headerValue);
|
||||
httpHeaders.addChild(property);
|
||||
httpConfiguration.addChild(httpHeaders);
|
||||
|
||||
server.setConfiguration(httpConfiguration);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
List<Server> servers = new ArrayList<>();
|
||||
servers.add(server);
|
||||
request.setServers(servers);
|
||||
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
Map<String, String> headers = (Map<String, String>) systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get(ConfigurationProperties.HTTP_HEADERS + "." + server.getId());
|
||||
assertNotNull(headers);
|
||||
assertEquals(1, headers.size());
|
||||
assertEquals("value", headers.get("header"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void connectTimeoutConfigurationTest() throws InvalidRepositoryException {
|
||||
Server server = new Server();
|
||||
server.setId("repository");
|
||||
server.setUsername("jason");
|
||||
server.setPassword("abc123");
|
||||
Xpp3Dom configuration = new Xpp3Dom("configuration");
|
||||
Xpp3Dom connectTimeoutConfiguration = new Xpp3Dom("connectTimeout");
|
||||
connectTimeoutConfiguration.setValue("3000");
|
||||
configuration.addChild(connectTimeoutConfiguration);
|
||||
|
||||
server.setConfiguration(configuration);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
List<Server> servers = new ArrayList<>();
|
||||
servers.add(server);
|
||||
request.setServers(servers);
|
||||
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int connectionTimeout = (Integer) systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get(ConfigurationProperties.CONNECT_TIMEOUT + "." + server.getId());
|
||||
assertEquals(3000, connectionTimeout);
|
||||
}
|
||||
|
||||
@Test
|
||||
void connectionTimeoutFromHttpConfigurationTest() throws InvalidRepositoryException {
|
||||
Server server = new Server();
|
||||
server.setId("repository");
|
||||
server.setUsername("jason");
|
||||
server.setPassword("abc123");
|
||||
|
||||
Xpp3Dom configuration = new Xpp3Dom("configuration");
|
||||
Xpp3Dom httpConfiguration = new Xpp3Dom("httpConfiguration");
|
||||
Xpp3Dom all = new Xpp3Dom("all");
|
||||
Xpp3Dom connectTimeoutConfiguration = new Xpp3Dom("connectionTimeout");
|
||||
connectTimeoutConfiguration.setValue("3000");
|
||||
|
||||
all.addChild(connectTimeoutConfiguration);
|
||||
httpConfiguration.addChild(all);
|
||||
configuration.addChild(httpConfiguration);
|
||||
|
||||
server.setConfiguration(configuration);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
List<Server> servers = new ArrayList<>();
|
||||
servers.add(server);
|
||||
request.setServers(servers);
|
||||
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int connectionTimeout = (Integer) systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get(ConfigurationProperties.CONNECT_TIMEOUT + "." + server.getId());
|
||||
assertEquals(3000, connectionTimeout);
|
||||
}
|
||||
|
||||
@Test
|
||||
void requestTimeoutConfigurationTest() throws InvalidRepositoryException {
|
||||
Server server = new Server();
|
||||
server.setId("repository");
|
||||
server.setUsername("jason");
|
||||
server.setPassword("abc123");
|
||||
Xpp3Dom configuration = new Xpp3Dom("configuration");
|
||||
Xpp3Dom requestTimeoutConfiguration = new Xpp3Dom("requestTimeout");
|
||||
requestTimeoutConfiguration.setValue("3000");
|
||||
configuration.addChild(requestTimeoutConfiguration);
|
||||
|
||||
server.setConfiguration(configuration);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
List<Server> servers = new ArrayList<>();
|
||||
servers.add(server);
|
||||
request.setServers(servers);
|
||||
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int requestTimeout = (Integer) systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get(ConfigurationProperties.REQUEST_TIMEOUT + "." + server.getId());
|
||||
assertEquals(3000, requestTimeout);
|
||||
}
|
||||
|
||||
@Test
|
||||
void readTimeoutFromHttpConfigurationTest() throws InvalidRepositoryException {
|
||||
Server server = new Server();
|
||||
server.setId("repository");
|
||||
server.setUsername("jason");
|
||||
server.setPassword("abc123");
|
||||
|
||||
Xpp3Dom configuration = new Xpp3Dom("configuration");
|
||||
Xpp3Dom httpConfiguration = new Xpp3Dom("httpConfiguration");
|
||||
Xpp3Dom all = new Xpp3Dom("all");
|
||||
Xpp3Dom readTimeoutConfiguration = new Xpp3Dom("readTimeout");
|
||||
readTimeoutConfiguration.setValue("3000");
|
||||
|
||||
all.addChild(readTimeoutConfiguration);
|
||||
httpConfiguration.addChild(all);
|
||||
configuration.addChild(httpConfiguration);
|
||||
|
||||
server.setConfiguration(configuration);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
List<Server> servers = new ArrayList<>();
|
||||
servers.add(server);
|
||||
request.setServers(servers);
|
||||
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
int requestTimeout = (Integer) systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get(ConfigurationProperties.REQUEST_TIMEOUT + "." + server.getId());
|
||||
assertEquals(3000, requestTimeout);
|
||||
}
|
||||
|
||||
@Test
|
||||
void transportConfigurationTest() throws InvalidRepositoryException {
|
||||
DefaultRepositorySystemSessionFactory systemSessionFactory = new DefaultRepositorySystemSessionFactory(
|
||||
artifactHandlerManager,
|
||||
aetherRepositorySystem,
|
||||
null,
|
||||
settingsDecrypter,
|
||||
eventSpyDispatcher,
|
||||
mavenRepositorySystem,
|
||||
information);
|
||||
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepository(getLocalRepository());
|
||||
|
||||
// native
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("maven.resolver.transport", "native");
|
||||
request.setSystemProperties(properties);
|
||||
Map<String, Object> configProperties =
|
||||
systemSessionFactory.newRepositorySession(request).getConfigProperties();
|
||||
assertEquals(String.valueOf(Float.MAX_VALUE), configProperties.get("aether.priority.FileTransporterFactory"));
|
||||
assertEquals(String.valueOf(Float.MAX_VALUE), configProperties.get("aether.priority.HttpTransporterFactory"));
|
||||
properties.remove("maven.resolver.transport");
|
||||
|
||||
// wagon
|
||||
properties.setProperty("maven.resolver.transport", "wagon");
|
||||
request.setSystemProperties(properties);
|
||||
assertEquals(
|
||||
String.valueOf(Float.MAX_VALUE),
|
||||
systemSessionFactory
|
||||
.newRepositorySession(request)
|
||||
.getConfigProperties()
|
||||
.get("aether.priority.WagonTransporterFactory"));
|
||||
properties.remove("maven.resolver.transport");
|
||||
|
||||
// illegal
|
||||
properties.setProperty("maven.resolver.transport", "illegal");
|
||||
request.setSystemProperties(properties);
|
||||
IllegalArgumentException exception = assertThrowsExactly(
|
||||
IllegalArgumentException.class, () -> systemSessionFactory.newRepositorySession(request));
|
||||
assertEquals(
|
||||
"Unknown resolver transport 'illegal'. Supported transports are: wagon, native, auto",
|
||||
exception.getMessage());
|
||||
properties.remove("maven.resolver.transport");
|
||||
}
|
||||
|
||||
protected ArtifactRepository getLocalRepository() throws InvalidRepositoryException {
|
||||
File repoDir = new File(getBasedir(), "target/local-repo").getAbsoluteFile();
|
||||
|
||||
return repositorySystem.createLocalRepository(repoDir);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue