/*
* Copyright 2013 Harald Wellmann
*
* Licensed 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.ops4j.pax.url.mvn;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.junit.Assert.assertThat;
import static org.junit.Assume.assumeNotNull;
import java.io.File;
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.apache.maven.settings.building.DefaultSettingsBuilder;
import org.apache.maven.settings.building.DefaultSettingsBuilderFactory;
import org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
import org.apache.maven.settings.building.SettingsBuildingException;
import org.apache.maven.settings.building.SettingsBuildingRequest;
import org.apache.maven.settings.building.SettingsBuildingResult;
import org.apache.maven.settings.crypto.DefaultSettingsDecryptionRequest;
import org.apache.maven.settings.crypto.SettingsDecryptionResult;
import org.junit.Test;
import org.ops4j.pax.url.mvn.internal.ConfigurableSettingsDecrypter;
import org.ops4j.pax.url.mvn.internal.PaxUrlSecDispatcher;
import org.sonatype.plexus.components.cipher.DefaultPlexusCipher;
import org.sonatype.plexus.components.cipher.PlexusCipherException;
public class SettingsBuilderTest {
@Test
public void readMirrorWithEnvironmentVariable() throws SettingsBuildingException {
assumeNotNull( System.getenv( "NEXUS_ROOT" ) );
DefaultSettingsBuilderFactory factory = new DefaultSettingsBuilderFactory();
DefaultSettingsBuilder builder = factory.newInstance();
SettingsBuildingRequest request = new DefaultSettingsBuildingRequest();
request.setUserSettingsFile( new File( "src/test/resources", "settings-mirror-env.xml" ) );
SettingsBuildingResult result = builder.build( request );
assertThat( result, is( notNullValue() ) );
assertThat( result.getProblems().isEmpty(), is( true ) );
Settings settings = result.getEffectiveSettings();
assertThat( settings, is( notNullValue() ) );
assertThat( settings.getMirrors().size(), is (1));
Mirror mirror = settings.getMirrors().get(0);
assertThat( mirror.getId(), is( "nexus" ) );
assertThat( mirror.getMirrorOf(), is( "central" ) );
assertThat( mirror.getUrl(), is( System.getenv( "NEXUS_ROOT" ) + "/content/groups/public" ) );
}
@Test
public void readSettingsWithEncryptedPassword() throws SettingsBuildingException, PlexusCipherException {
DefaultSettingsBuilderFactory factory = new DefaultSettingsBuilderFactory();
DefaultSettingsBuilder builder = factory.newInstance();
SettingsBuildingRequest request = new DefaultSettingsBuildingRequest();
request.setUserSettingsFile( new File( "src/test/resources", "settings-auth-encrypted.xml" ) );
SettingsBuildingResult result = builder.build( request );
assertThat( result, is( notNullValue() ) );
assertThat( result.getProblems().isEmpty(), is( true ) );
Settings settings = result.getEffectiveSettings();
DefaultSettingsDecryptionRequest decryptionRequest = new DefaultSettingsDecryptionRequest( settings );
ConfigurableSettingsDecrypter decrypter = new ConfigurableSettingsDecrypter();
PaxUrlSecDispatcher secDispatcher = new PaxUrlSecDispatcher();
secDispatcher.setCipher( new DefaultPlexusCipher() );
secDispatcher.setConfigurationFile( "src/test/resources/settings-security.xml" );
decrypter.setSecurityDispatcher( secDispatcher );
SettingsDecryptionResult decryptionResult = decrypter.decrypt( decryptionRequest );
Server server = decryptionResult.getServer();
assertThat( server.getPassword(), is( "ops4j" ) );
}
}