/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* 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.guvnor.common.services.project.backend.server;
import java.net.URL;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.guvnor.common.services.project.backend.server.utils.POMContentHandler;
import org.guvnor.common.services.project.model.Dependency;
import org.guvnor.common.services.project.model.POM;
import org.guvnor.common.services.project.service.POMService;
import org.guvnor.common.services.shared.metadata.MetadataService;
import org.guvnor.m2repo.service.M2RepoService;
import org.guvnor.test.TempFiles;
import org.guvnor.test.TestTempFileSystem;
import org.guvnor.test.WeldJUnitRunner;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.uberfire.backend.server.util.Paths;
import org.uberfire.io.IOService;
import org.uberfire.java.nio.file.Path;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@RunWith( WeldJUnitRunner.class )
public class POMServiceImplLoadTest {
@Inject
@Named( "ioStrategy" )
IOService ioService;
@Inject
POMContentHandler pomContentHandler;
@Mock
M2RepoService m2RepoService;
@Mock
MetadataService metadataService;
private POMService service;
private IOService ioServiceSpy;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks( this );
ioServiceSpy = spy( ioService );
service = new POMServiceImpl( ioServiceSpy,
pomContentHandler,
m2RepoService,
metadataService );
}
@Test
public void testLoad() throws Exception {
final URL url = this.getClass().getResource( "/TestProject/pom.xml" );
final Path path = ioService.get( url.toURI() );
POM pom = service.load( Paths.convert( path ) );
assertEquals( "org.test", pom.getGav().getGroupId() );
assertEquals( "my-test", pom.getGav().getArtifactId() );
assertEquals( "1.0", pom.getGav().getVersion() );
assertEquals( 2, pom.getDependencies().size() );
assertContainsDependency( "org.apache.commons", "commons-lang3", "compile",
pom.getDependencies() );
assertContainsDependency( "org.jboss.weld", "weld-core", "test",
pom.getDependencies() );
}
private void assertContainsDependency( String groupID,
String artifactID,
String scope,
List<Dependency> dependencies ) {
boolean foundOne = false;
for ( Dependency dependency : dependencies ) {
if ( groupID.equals( dependency.getGroupId() )
&& artifactID.equals( dependency.getArtifactId() )
&&
(
scope.equals( dependency.getScope() )
|| (scope.equals( "compile" ) && dependency.getScope() == null)
) ) {
foundOne = true;
}
}
assertTrue( "Did not find dependency: " + groupID + ":" + artifactID + ":" + scope, foundOne );
}
}