private StorageAsset getAssetByPath( String assetPath ) | private StorageAsset getAssetByPath( String assetPath ) | ||||
{ | { | ||||
log.debug( "Get asset {}", assetPath ); | |||||
return getStorage( ).getAsset( assetPath ); | return getStorage( ).getAsset( assetPath ); | ||||
} | } | ||||
org.apache.archiva.repository.ManagedRepository repository = repositoryRegistry.getManagedRepository(repositoryId); | org.apache.archiva.repository.ManagedRepository repository = repositoryRegistry.getManagedRepository(repositoryId); | ||||
log.debug( "Finding artifact path for {}, {}, {}, {}", groupId, artifactId, version, packaging ); | |||||
ItemSelector selector = ArchivaItemSelector.builder( ) | ItemSelector selector = ArchivaItemSelector.builder( ) | ||||
.withNamespace( groupId ) | .withNamespace( groupId ) | ||||
.withProjectId( artifactId ) | .withProjectId( artifactId ) |
package org.apache.archiva.web;/* | |||||
* 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. | |||||
*/ | |||||
import com.fasterxml.jackson.databind.ObjectMapper; | |||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | |||||
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; | |||||
import junit.framework.TestCase; | |||||
import org.apache.archiva.redback.integration.security.role.RedbackRoleConstants; | |||||
import org.apache.archiva.redback.rest.api.model.User; | |||||
import org.apache.archiva.redback.rest.api.services.LdapGroupMappingService; | |||||
import org.apache.archiva.redback.rest.api.services.LoginService; | |||||
import org.apache.archiva.redback.rest.api.services.RoleManagementService; | |||||
import org.apache.archiva.redback.rest.api.services.UserService; | |||||
import org.apache.archiva.redback.rest.api.services.v2.AuthenticationService; | |||||
import org.apache.archiva.redback.rest.services.BaseSetup; | |||||
import org.apache.archiva.redback.rest.services.FakeCreateAdminService; | |||||
import org.apache.commons.lang3.SystemUtils; | |||||
import org.apache.cxf.common.util.Base64Utility; | |||||
import org.apache.cxf.jaxrs.client.JAXRSClientFactory; | |||||
import org.apache.cxf.jaxrs.client.WebClient; | |||||
import org.apache.cxf.transport.servlet.CXFServlet; | |||||
import org.eclipse.jetty.server.HttpConnectionFactory; | |||||
import org.eclipse.jetty.server.Server; | |||||
import org.eclipse.jetty.server.ServerConnector; | |||||
import org.eclipse.jetty.server.session.SessionHandler; | |||||
import org.eclipse.jetty.servlet.ServletContextHandler; | |||||
import org.eclipse.jetty.servlet.ServletHolder; | |||||
import org.junit.After; | |||||
import org.junit.Before; | |||||
import org.junit.runner.RunWith; | |||||
import org.junit.runners.JUnit4; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.web.context.ContextLoaderListener; | |||||
import javax.ws.rs.core.MediaType; | |||||
import java.util.Collections; | |||||
import java.util.concurrent.atomic.AtomicReference; | |||||
/** | |||||
* @author Olivier Lamy | |||||
*/ | |||||
@RunWith(JUnit4.class) | |||||
public abstract class AbstractRestServicesTest | |||||
extends TestCase | |||||
{ | |||||
protected Logger log = LoggerFactory.getLogger( getClass() ); | |||||
private static AtomicReference<Server> server = new AtomicReference<>(); | |||||
private static AtomicReference<ServerConnector> serverConnector = new AtomicReference<>(); | |||||
public String authorizationHeader = getAdminAuthzHeader(); | |||||
/** | |||||
* Returns the server that was started, or null if not initialized before. | |||||
* @return | |||||
*/ | |||||
public Server getServer() { | |||||
return this.server.get(); | |||||
} | |||||
public int getServerPort() { | |||||
ServerConnector connector = serverConnector.get(); | |||||
if (connector!=null) { | |||||
return connector.getLocalPort(); | |||||
} else { | |||||
return 0; | |||||
} | |||||
} | |||||
JacksonJaxbJsonProvider getJsonProvider() { | |||||
JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider( ); | |||||
ObjectMapper mapper = new ObjectMapper( ); | |||||
mapper.registerModule( new JavaTimeModule( ) ); | |||||
provider.setMapper( mapper ); | |||||
return provider; | |||||
} | |||||
/** | |||||
* Returns true, if the server does exist and is running. | |||||
* @return true, if server does exist and is running. | |||||
*/ | |||||
public boolean isServerRunning() { | |||||
return this.server.get() != null && this.server.get().isRunning(); | |||||
} | |||||
/** | |||||
* Returns the timeout in ms for rest requests. The timeout can be set by | |||||
* the system property <code>rest.test.timeout</code>. | |||||
* @return The timeout value in ms. | |||||
*/ | |||||
public long getTimeout() | |||||
{ | |||||
return Long.getLong( "rest.test.timeout", 1000000 ); | |||||
} | |||||
public static String encode( String uid, String password ) | |||||
{ | |||||
return "Basic " + Base64Utility.encode( ( uid + ":" + password ).getBytes() ); | |||||
} | |||||
public static String getAdminAuthzHeader() | |||||
{ | |||||
return encode( RedbackRoleConstants.ADMINISTRATOR_ACCOUNT_NAME, BaseSetup.getAdminPwd() ); | |||||
} | |||||
protected String getSpringConfigLocation() | |||||
{ | |||||
return "classpath*:spring-context.xml,classpath*:META-INF/spring-context.xml"; | |||||
} | |||||
protected String getRestServicesPath() | |||||
{ | |||||
return "restServices"; | |||||
} | |||||
@Before | |||||
public void startServer() | |||||
throws Exception | |||||
{ | |||||
log.info("Starting server"); | |||||
log.info( "User config {}", System.getProperty( "archiva.user.configFileName" ) ); | |||||
log.info( "Appserver base {}", System.getProperty( "appserver.base" ) ); | |||||
Server myServer = new Server(); | |||||
this.server.set(myServer); | |||||
this.serverConnector.set(new ServerConnector( myServer, new HttpConnectionFactory())); | |||||
myServer.addConnector(serverConnector.get()); | |||||
ServletHolder servletHolder = new ServletHolder( new CXFServlet() ); | |||||
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); | |||||
context.setResourceBase( SystemUtils.JAVA_IO_TMPDIR ); | |||||
context.setSessionHandler( new SessionHandler( ) ); | |||||
context.addServlet( servletHolder, "/" + getRestServicesPath() + "/*" ); | |||||
context.setInitParameter( "contextConfigLocation", getSpringConfigLocation() ); | |||||
context.addEventListener(new ContextLoaderListener()); | |||||
getServer().setHandler( context ); | |||||
getServer().start(); | |||||
if (log.isDebugEnabled()) | |||||
{ | |||||
log.debug( "Jetty dump: {}", getServer().dump() ); | |||||
} | |||||
log.info( "Started server on port {}", getServerPort() ); | |||||
UserService userService = getUserService(); | |||||
User adminUser = new User(); | |||||
adminUser.setUsername( RedbackRoleConstants.ADMINISTRATOR_ACCOUNT_NAME ); | |||||
adminUser.setPassword( BaseSetup.getAdminPwd() ); | |||||
adminUser.setFullName( "the admin user" ); | |||||
adminUser.setEmail( "toto@toto.fr" ); | |||||
if( !userService.createAdminUser( adminUser ) ) { | |||||
log.info( "Could not create admin user." ); | |||||
} | |||||
FakeCreateAdminService fakeCreateAdminService = getFakeCreateAdminService(); | |||||
//assertTrue( res.booleanValue() ); | |||||
} | |||||
protected FakeCreateAdminService getFakeCreateAdminService() | |||||
{ | |||||
return JAXRSClientFactory.create( | |||||
"http://localhost:" + getServerPort()+ "/" + getRestServicesPath() + "/fakeCreateAdminService/", | |||||
FakeCreateAdminService.class, Collections.singletonList( getJsonProvider() ) ); | |||||
} | |||||
@After | |||||
public void stopServer() | |||||
throws Exception | |||||
{ | |||||
if ( getServer() != null ) | |||||
{ | |||||
log.info("Stopping server"); | |||||
getServer().stop(); | |||||
} | |||||
} | |||||
protected UserService getUserService() | |||||
{ | |||||
return getUserService( null ); | |||||
} | |||||
// START SNIPPET: get-user-service | |||||
protected UserService getUserService( String authzHeader ) | |||||
{ | |||||
UserService service = | |||||
JAXRSClientFactory.create( "http://localhost:" + getServerPort() + "/" + getRestServicesPath() + "/redbackServices/", | |||||
UserService.class, Collections.singletonList( new JacksonJaxbJsonProvider() ) ); | |||||
// time out for debuging purpose | |||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( getTimeout() ); | |||||
if ( authzHeader != null ) | |||||
{ | |||||
WebClient.client( service ).header( "Authorization", authzHeader ); | |||||
} | |||||
WebClient.client(service).header("Referer","http://localhost:"+getServerPort()); | |||||
WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE ); | |||||
WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE ); | |||||
return service; | |||||
} | |||||
// END SNIPPET: get-user-service | |||||
protected RoleManagementService getRoleManagementService( String authzHeader ) | |||||
{ | |||||
RoleManagementService service = | |||||
JAXRSClientFactory.create( "http://localhost:" + getServerPort() + "/" + getRestServicesPath() + "/redbackServices/", | |||||
RoleManagementService.class, | |||||
Collections.singletonList( new JacksonJaxbJsonProvider() ) ); | |||||
// for debuging purpose | |||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( getTimeout() ); | |||||
if ( authzHeader != null ) | |||||
{ | |||||
WebClient.client( service ).header( "Authorization", authzHeader ); | |||||
} | |||||
WebClient.client(service).header("Referer","http://localhost:"+getServerPort()); | |||||
WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE ); | |||||
WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE ); | |||||
return service; | |||||
} | |||||
protected LoginService getLoginService( String authzHeader ) | |||||
{ | |||||
LoginService service = | |||||
JAXRSClientFactory.create( "http://localhost:" + getServerPort() + "/" + getRestServicesPath() + "/redbackServices/", | |||||
LoginService.class, Collections.singletonList( getJsonProvider() ) ); | |||||
// for debuging purpose | |||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( getTimeout() ); | |||||
if ( authzHeader != null ) | |||||
{ | |||||
WebClient.client( service ).header( "Authorization", authzHeader ); | |||||
} | |||||
WebClient.client(service).header("Referer","http://localhost:"+getServerPort()); | |||||
WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE ); | |||||
WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE ); | |||||
return service; | |||||
} | |||||
protected AuthenticationService getLoginServiceV2( String authzHeader ) | |||||
{ | |||||
AuthenticationService service = | |||||
JAXRSClientFactory.create( "http://localhost:" + getServerPort() + "/" + getRestServicesPath() + "/v2/redback/", | |||||
AuthenticationService.class, Collections.singletonList( getJsonProvider() ) ); | |||||
// for debuging purpose | |||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( getTimeout() ); | |||||
if ( authzHeader != null ) | |||||
{ | |||||
WebClient.client( service ).header( "Authorization", authzHeader ); | |||||
} | |||||
WebClient.client(service).header("Referer","http://localhost:"+getServerPort()); | |||||
WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE ); | |||||
WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE ); | |||||
return service; | |||||
} | |||||
protected LdapGroupMappingService getLdapGroupMappingService( String authzHeader ) | |||||
{ | |||||
LdapGroupMappingService service = | |||||
JAXRSClientFactory.create( "http://localhost:" + getServerPort() + "/" + getRestServicesPath() + "/redbackServices/", | |||||
LdapGroupMappingService.class, | |||||
Collections.singletonList( getJsonProvider() ) ); | |||||
// for debuging purpose | |||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( getTimeout() ); | |||||
if ( authzHeader != null ) | |||||
{ | |||||
WebClient.client( service ).header( "Authorization", authzHeader ); | |||||
} | |||||
WebClient.client(service).header("Referer","http://localhost:"+getServerPort()); | |||||
WebClient.client( service ).accept( MediaType.APPLICATION_JSON_TYPE ); | |||||
WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE ); | |||||
return service; | |||||
} | |||||
} |
package org.apache.archiva; | |||||
package org.apache.archiva.web; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; | import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; | ||||
import org.apache.archiva.redback.rest.services.AbstractRestServicesTest; | import org.apache.archiva.redback.rest.services.AbstractRestServicesTest; | ||||
import org.apache.archiva.remotedownload.DownloadArtifactsTest; | |||||
import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; | import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; | ||||
import org.apache.archiva.web.api.RuntimeInfoService; | import org.apache.archiva.web.api.RuntimeInfoService; | ||||
import org.apache.archiva.web.model.ApplicationRuntimeInfo; | import org.apache.archiva.web.model.ApplicationRuntimeInfo; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.nio.file.Files; | import java.nio.file.Files; | ||||
import java.nio.file.Path; | import java.nio.file.Path; | ||||
import java.nio.file.Paths; | |||||
import java.util.Collections; | import java.util.Collections; | ||||
/** | /** |
package org.apache.archiva; | |||||
package org.apache.archiva.web; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.security; | |||||
package org.apache.archiva.web.mock.security; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
*/ | */ | ||||
import org.apache.archiva.admin.model.beans.ManagedRepository; | import org.apache.archiva.admin.model.beans.ManagedRepository; | ||||
import org.apache.archiva.security.AccessDeniedException; | |||||
import org.apache.archiva.security.ArchivaSecurityException; | |||||
import org.apache.archiva.security.PrincipalNotFoundException; | |||||
import org.apache.archiva.security.UserRepositories; | |||||
import java.util.Collections; | import java.util.Collections; | ||||
import java.util.List; | import java.util.List; |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.remotedownload; | |||||
package org.apache.archiva.web.remotedownload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.upload; | |||||
package org.apache.archiva.web.upload; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* or more contributor license agreements. See the NOTICE file | * or more contributor license agreements. See the NOTICE file | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||||
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; | import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; | ||||
import org.apache.archiva.configuration.ArchivaConfiguration; | import org.apache.archiva.configuration.ArchivaConfiguration; | ||||
import org.apache.archiva.redback.rest.services.AbstractRestServicesTest; | |||||
import org.apache.archiva.redback.rest.services.FakeCreateAdminService; | |||||
import org.apache.archiva.rest.api.services.ArchivaRestServiceException; | import org.apache.archiva.rest.api.services.ArchivaRestServiceException; | ||||
import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; | import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner; | ||||
import org.apache.archiva.web.AbstractRestServicesTest; | |||||
import org.apache.archiva.web.api.FileUploadService; | import org.apache.archiva.web.api.FileUploadService; | ||||
import org.apache.archiva.web.model.FileMetadata; | import org.apache.archiva.web.model.FileMetadata; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
*/ | */ | ||||
@RunWith(ArchivaBlockJUnit4ClassRunner.class) | @RunWith(ArchivaBlockJUnit4ClassRunner.class) | ||||
public class UploadArtifactsTest | public class UploadArtifactsTest | ||||
extends AbstractRestServicesTest { | |||||
extends AbstractRestServicesTest | |||||
{ | |||||
private static String PREVIOUS_ARCHIVA_PATH; | private static String PREVIOUS_ARCHIVA_PATH; | ||||
private AtomicReference<Path> projectDir = new AtomicReference<>( ); | private AtomicReference<Path> projectDir = new AtomicReference<>( ); | ||||
throws Exception | throws Exception | ||||
{ | { | ||||
PREVIOUS_ARCHIVA_PATH = System.getProperty(ArchivaConfiguration.USER_CONFIG_PROPERTY); | PREVIOUS_ARCHIVA_PATH = System.getProperty(ArchivaConfiguration.USER_CONFIG_PROPERTY); | ||||
System.setProperty( ArchivaConfiguration.USER_CONFIG_PROPERTY, | |||||
if (System.getProperties().containsKey( "test.resources.path" )) | |||||
{ | |||||
System.setProperty( ArchivaConfiguration.USER_CONFIG_PROPERTY, | |||||
System.getProperty( "test.resources.path" ) + "/archiva.xml" ); | System.getProperty( "test.resources.path" ) + "/archiva.xml" ); | ||||
} else { | |||||
Path path = Paths.get( "src/test/resources/archiva.xml" ).toAbsolutePath(); | |||||
System.setProperty( ArchivaConfiguration.USER_CONFIG_PROPERTY, | |||||
path.toString() ); | |||||
} | |||||
System.err.println( "USER_CONFIG_DIR " + System.getProperty( ArchivaConfiguration.USER_CONFIG_PROPERTY ) ); | |||||
} | } | ||||
} | } | ||||
projectDir.compareAndSet(null, newVal); | projectDir.compareAndSet(null, newVal); | ||||
} | } | ||||
System.err.println( "project dir: " + projectDir.get( ).toString( ) ); | |||||
return projectDir.get(); | return projectDir.get(); | ||||
} | } | ||||
try { | try { | ||||
FileUploadService service = getUploadService(); | FileUploadService service = getUploadService(); | ||||
Path file = getProjectDirectory().resolve("src/test/repositories/snapshot-repo/org/apache/archiva/archiva-model/1.4-M4-SNAPSHOT/archiva-model-1.4-M4-20130425.081822-1.jar"); | Path file = getProjectDirectory().resolve("src/test/repositories/snapshot-repo/org/apache/archiva/archiva-model/1.4-M4-SNAPSHOT/archiva-model-1.4-M4-20130425.081822-1.jar"); | ||||
Path targetDir = Paths.get("target/testDelete").toAbsolutePath(); | |||||
Path targetDir = getProjectDirectory().resolve("target/testDelete").toAbsolutePath(); | |||||
if (!Files.exists(targetDir)) Files.createDirectories(targetDir); | if (!Files.exists(targetDir)) Files.createDirectories(targetDir); | ||||
Path tempDir = SystemUtils.getJavaIoTmpDir().toPath(); | Path tempDir = SystemUtils.getJavaIoTmpDir().toPath(); | ||||
testFile = Files.createTempFile(targetDir, "TestFile", ".txt"); | testFile = Files.createTempFile(targetDir, "TestFile", ".txt"); | ||||
@Test | @Test | ||||
public void failSaveFileWithBadParams() throws IOException, ArchivaRestServiceException { | public void failSaveFileWithBadParams() throws IOException, ArchivaRestServiceException { | ||||
Path path = Paths.get("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.jar"); | |||||
Path path = getProjectDirectory().resolve("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.jar"); | |||||
Files.deleteIfExists(path); | Files.deleteIfExists(path); | ||||
FileUploadService service = getUploadService(); | FileUploadService service = getUploadService(); | ||||
Path file = getProjectDirectory().resolve("src/test/repositories/snapshot-repo/org/apache/archiva/archiva-model/1.4-M4-SNAPSHOT/archiva-model-1.4-M4-20130425.081822-1.jar"); | Path file = getProjectDirectory().resolve("src/test/repositories/snapshot-repo/org/apache/archiva/archiva-model/1.4-M4-SNAPSHOT/archiva-model-1.4-M4-20130425.081822-1.jar"); | ||||
} catch (ClientErrorException e) { | } catch (ClientErrorException e) { | ||||
assertEquals(422, e.getResponse().getStatus()); | assertEquals(422, e.getResponse().getStatus()); | ||||
} | } | ||||
assertFalse(Files.exists(Paths.get("target/test-testSave.4"))); | |||||
assertFalse(Files.exists(getProjectDirectory().resolve("target/test-testSave.4"))); | |||||
} | } | ||||
@Test | @Test | ||||
public void saveFile() throws IOException, ArchivaRestServiceException { | public void saveFile() throws IOException, ArchivaRestServiceException { | ||||
log.debug("Starting saveFile()"); | log.debug("Starting saveFile()"); | ||||
Path path = Paths.get("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.jar"); | |||||
Path path = getProjectDirectory().resolve("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.jar"); | |||||
log.debug("Jar exists: {}",Files.exists(path)); | log.debug("Jar exists: {}",Files.exists(path)); | ||||
Files.deleteIfExists(path); | Files.deleteIfExists(path); | ||||
path = Paths.get("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.pom"); | |||||
path = getProjectDirectory().resolve("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.pom"); | |||||
Files.deleteIfExists(path); | Files.deleteIfExists(path); | ||||
FileUploadService service = getUploadService(); | FileUploadService service = getUploadService(); | ||||
service.clearUploadedFiles(); | service.clearUploadedFiles(); | ||||
public void saveFileWithOtherExtension() throws IOException, ArchivaRestServiceException { | public void saveFileWithOtherExtension() throws IOException, ArchivaRestServiceException { | ||||
log.debug("Starting saveFileWithOtherExtension()"); | log.debug("Starting saveFileWithOtherExtension()"); | ||||
Path path = Paths.get("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.bin"); | |||||
Path path = getProjectDirectory().resolve("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.bin"); | |||||
log.debug("Jar exists: {}",Files.exists(path)); | log.debug("Jar exists: {}",Files.exists(path)); | ||||
Files.deleteIfExists(path); | Files.deleteIfExists(path); | ||||
Path pomPath = Paths.get("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.pom"); | |||||
Path pomPath = getProjectDirectory().resolve("target/appserver-base/repositories/internal/org/apache/archiva/archiva-model/1.2/archiva-model-1.2.pom"); | |||||
Files.deleteIfExists(pomPath); | Files.deleteIfExists(pomPath); | ||||
FileUploadService service = getUploadService(); | FileUploadService service = getUploadService(); | ||||
service.clearUploadedFiles(); | service.clearUploadedFiles(); |
package org.apache.archiva.webtest.memory; | |||||
package org.apache.archiva.web.webtest.memory; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.webtest.memory; | |||||
package org.apache.archiva.web.webtest.memory; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* "License"); you may not use this file except in compliance | * "License"); you may not use this file except in compliance | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* | |||||
* http://www.apache.org/licenses/LICENSE-2.0 | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
package org.apache.archiva.webtest.memory; | |||||
package org.apache.archiva.web.webtest.memory; | |||||
/* | /* | ||||
* Licensed to the Apache Software Foundation (ASF) under one | * Licensed to the Apache Software Foundation (ASF) under one | ||||
* with the License. You may obtain a copy of the License at | * with the License. You may obtain a copy of the License at | ||||
* | * | ||||
* http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
* | |||||
* Unless required by applicable law or agreed to in writing, | * Unless required by applicable law or agreed to in writing, | ||||
* software distributed under the License is distributed on an | * software distributed under the License is distributed on an | ||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
<logger name="org.springframework" level="error"/> | <logger name="org.springframework" level="error"/> | ||||
<logger name="org.apache.archiva" level="error"/> | <logger name="org.apache.archiva" level="error"/> | ||||
<logger name="org.apache.archiva.web" level="info"/> | |||||
<logger name="org.apache.archiva.web" level="debug"/> | |||||
<logger name="org.apache.archiva.repository" level="debug"/> | |||||
<logger name="org.apache.commons.configuration" level="error"/> | <logger name="org.apache.commons.configuration" level="error"/> | ||||
<logger name="org.apache.archiva.scheduler.indexing" level="info"/> | <logger name="org.apache.archiva.scheduler.indexing" level="info"/> | ||||
<logger name="org.apache.archiva.remotedownload" level="info"/> | <logger name="org.apache.archiva.remotedownload" level="info"/> |
</property> | </property> | ||||
</bean> | </bean> | ||||
<bean name="repositorySessionFactory" class="org.apache.archiva.webtest.memory.TestRepositorySessionFactory"/> | |||||
<bean name="repositorySessionFactory" class="org.apache.archiva.web.webtest.memory.TestRepositorySessionFactory"/> | |||||
<alias name="userManager#configurable" alias="userManager#default"/> | <alias name="userManager#configurable" alias="userManager#default"/> | ||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean"> | |||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.web.TestRepositorySessionFactoryBean"> | |||||
<constructor-arg> | <constructor-arg> | ||||
<value>jcr</value> | <value>jcr</value> | ||||
</constructor-arg> | </constructor-arg> |
</property> | </property> | ||||
</bean> | </bean> | ||||
<bean name="repositorySessionFactory" class="org.apache.archiva.webtest.memory.TestRepositorySessionFactory"/> | |||||
<bean name="repositorySessionFactory" class="org.apache.archiva.web.webtest.memory.TestRepositorySessionFactory"/> | |||||
<alias name="userConfiguration#archiva" alias="userConfiguration#default"/> | <alias name="userConfiguration#archiva" alias="userConfiguration#default"/> | ||||
<alias name="authorizer#rbac" alias="authorizer#default"/> | <alias name="authorizer#rbac" alias="authorizer#default"/> | ||||
<alias name="userManager#configurable" alias="userManager#default"/> | <alias name="userManager#configurable" alias="userManager#default"/> | ||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean"> | |||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.web.TestRepositorySessionFactoryBean"> | |||||
<constructor-arg> | <constructor-arg> | ||||
<value>jcr</value> | <value>jcr</value> | ||||
</constructor-arg> | </constructor-arg> |
<context:property-placeholder system-properties-mode="OVERRIDE"/> | <context:property-placeholder system-properties-mode="OVERRIDE"/> | ||||
<context:annotation-config/> | <context:annotation-config/> | ||||
<context:component-scan base-package="org.apache.archiva.webtest.memory"/> | |||||
<context:component-scan base-package="org.apache.archiva.web.webtest.memory"/> | |||||
<alias name="repositorySessionFactory#test" alias="repositorySessionFactory"/> | <alias name="repositorySessionFactory#test" alias="repositorySessionFactory"/> | ||||
<bean name="userRepositories#test" class="org.apache.archiva.security.UserRepositoriesStub"/> | |||||
<bean name="userRepositories#test" class="org.apache.archiva.web.mock.security.UserRepositoriesStub"/> | |||||
<alias name="userRepositories#test" alias="userRepositories"/> | <alias name="userRepositories#test" alias="userRepositories"/> | ||||
<alias name="archivaConfiguration#default" alias="archivaConfiguration"/> | <alias name="archivaConfiguration#default" alias="archivaConfiguration"/> | ||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean"> | |||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.web.TestRepositorySessionFactoryBean"> | |||||
<constructor-arg> | <constructor-arg> | ||||
<value>jcr</value> | <value>jcr</value> | ||||
</constructor-arg> | </constructor-arg> |
<context:annotation-config/> | <context:annotation-config/> | ||||
<context:component-scan | <context:component-scan | ||||
base-package="org.apache.archiva.repository.content.maven2,org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils"/> | |||||
base-package="org.apache.archiva.maven.repository.content,org.apache.archiva.redback.keys,org.apache.archiva.rest.services.utils"/> | |||||
<bean name="scheduler" class="org.apache.archiva.components.scheduler.DefaultScheduler"> | <bean name="scheduler" class="org.apache.archiva.components.scheduler.DefaultScheduler"> | ||||
<property name="properties"> | <property name="properties"> | ||||
</bean> | </bean> | ||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean"> | |||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.web.TestRepositorySessionFactoryBean"> | |||||
<constructor-arg> | <constructor-arg> | ||||
<value>jcr</value> | <value>jcr</value> | ||||
</constructor-arg> | </constructor-arg> |
<alias name="repositorySessionFactory#jcr" alias="repositorySessionFactory"/> | <alias name="repositorySessionFactory#jcr" alias="repositorySessionFactory"/> | ||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.TestRepositorySessionFactoryBean"> | |||||
<bean name="TestRepositorySessionFactoryBean" class="org.apache.archiva.web.TestRepositorySessionFactoryBean"> | |||||
<constructor-arg> | <constructor-arg> | ||||
<value>jcr</value> | <value>jcr</value> | ||||
</constructor-arg> | </constructor-arg> |