|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- package org.apache.archiva.webdav;
-
- /*
- * 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.gargoylesoftware.htmlunit.WebRequest;
- import com.gargoylesoftware.htmlunit.WebResponse;
- import org.apache.archiva.common.utils.FileUtils;
- import org.apache.commons.lang.ArrayUtils;
- import org.apache.commons.lang.StringUtils;
- import org.custommonkey.xmlunit.DetailedDiff;
- import org.custommonkey.xmlunit.Diff;
- import org.junit.Before;
-
- import java.nio.file.Paths;
-
- /**
- * Abstract TestCase for RepositoryServlet Tests, Proxied, Get of Metadata.
- *
- *
- */
- public abstract class AbstractRepositoryServletProxiedMetadataTestCase
- extends AbstractRepositoryServletProxiedTestCase
- {
- protected RemoteRepoInfo remotePrivateSnapshots;
-
- protected void assertExpectedMetadata( String expectedMetadata, String actualMetadata )
- throws Exception
- {
- DetailedDiff detailedDiff = new DetailedDiff( new Diff( expectedMetadata, actualMetadata ) );
- if ( !detailedDiff.similar() )
- {
- // If it isn't similar, dump the difference.
- assertEquals( expectedMetadata, actualMetadata );
- }
- // XMLAssert.assertXMLEqual( "Expected Metadata:", expectedMetadata, actualMetadata );
- }
-
- protected String requestMetadataOK( String path )
- throws Exception
- {
- // process the response code later, not via an exception.
- //HttpUnitOptions.setExceptionsThrownOnErrorStatus( false );
-
- WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + path );
- WebResponse response = getServletUnitClient().getResponse( request );
- assertResponseOK( response );
- return response.getContentAsString();
- }
-
- protected String createProjectMetadata( String groupId, String artifactId, String latest, String release,
- String[] versions )
- {
- StringBuilder buf = new StringBuilder();
-
- buf.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n" );
- buf.append( "<metadata>\n" );
- buf.append( " <groupId>" ).append( groupId ).append( "</groupId>\n" );
- buf.append( " <artifactId>" ).append( artifactId ).append( "</artifactId>\n" );
-
- boolean hasLatest = StringUtils.isNotBlank( latest );
- boolean hasRelease = StringUtils.isNotBlank( release );
- boolean hasVersions = !ArrayUtils.isEmpty( versions );
-
- if ( hasLatest || hasRelease || hasVersions )
- {
- buf.append( " <versioning>\n" );
- if ( hasLatest )
- {
- buf.append( " <latest>" ).append( latest ).append( "</latest>\n" );
- }
- if ( hasRelease )
- {
- buf.append( " <release>" ).append( release ).append( "</release>\n" );
- }
- if ( hasVersions )
- {
- buf.append( " <versions>\n" );
- for ( String availVersion : versions )
- {
- buf.append( " <version>" ).append( availVersion ).append( "</version>\n" );
- }
- buf.append( " </versions>\n" );
- }
- buf.append( " </versioning>\n" );
- }
- buf.append( "</metadata>" );
-
- return buf.toString();
- }
-
- protected String createGroupMetadata( String groupId, String[] plugins )
- {
- StringBuilder buf = new StringBuilder();
-
- buf.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n" );
- buf.append( "<metadata>\n" );
- buf.append( " <groupId>" ).append( groupId ).append( "</groupId>\n" );
-
- boolean hasPlugins = !ArrayUtils.isEmpty( plugins );
-
- if ( hasPlugins )
- {
- buf.append( " <plugins>\n" );
- for ( String plugin : plugins )
- {
- buf.append( " <plugin>\n" );
- buf.append( " <prefix>" ).append( plugin ).append( "</prefix>\n" );
- buf.append( " <artifactId>" ).append( plugin + "-maven-plugin" ).append( "</artifactId>\n" );
- buf.append( " <name>" ).append( "The " + plugin + " Plugin" ).append( "</name>\n" );
- buf.append( " </plugin>\n" );
- }
- buf.append( " </plugins>\n" );
- }
- buf.append( "</metadata>" );
-
- return buf.toString();
- }
-
- protected void setupPrivateSnapshotsRemoteRepo()
- throws Exception
- {
- remotePrivateSnapshots = createServer( "private-snapshots" );
-
- assertServerSetupCorrectly( remotePrivateSnapshots );
- archivaConfiguration.getConfiguration().addRemoteRepository( remotePrivateSnapshots.config );
- setupCleanRepo( remotePrivateSnapshots.root );
- }
-
- // private void assertGetProxiedSnapshotMetadata( int expectation, boolean hasManagedCopy,
- // long deltaManagedToRemoteTimestamp )
- // throws Exception
- // {
- // // --- Setup
- // setupSnapshotsRemoteRepo();
- // setupCleanInternalRepo();
- //
- // String resourcePath = "org/apache/archiva/archivatest-maven-plugin/4.0-alpha-1-SNAPSHOT/maven-metadata.xml";
- // String expectedRemoteContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<metadata>\n"
- // + " <groupId>org.apache.maven.plugins</groupId>\n" + " <artifactId>maven-assembly-plugin</artifactId>\n"
- // + " <version>2.2-beta-2-SNAPSHOT</version>\n" + " <versioning>\n" + " <snapshot>\n"
- // + " <timestamp>20071017.162810</timestamp>\n" + " <buildNumber>20</buildNumber>\n"
- // + " </snapshot>\n" + " <lastUpdated>20071017162814</lastUpdated>\n" + " </versioning>\n"
- // + "</metadata>";
- // String expectedManagedContents = null;
- // File remoteFile = populateRepo( remoteSnapshots, resourcePath, expectedRemoteContents );
- //
- // if ( hasManagedCopy )
- // {
- // expectedManagedContents = "<metadata>\n" + " <groupId>org.apache.maven.plugins</groupId>\n"
- // + " <artifactId>maven-assembly-plugin</artifactId>\n" + " <version>2.2-beta-2-SNAPSHOT</version>\n"
- // + "</metadata>";
- //
- // File managedFile = populateRepo( repoRootInternal, resourcePath, expectedManagedContents );
- // managedFile.setLastModified( remoteFile.lastModified() + deltaManagedToRemoteTimestamp );
- // }
- //
- // setupConnector( REPOID_INTERNAL, remoteSnapshots );
- // saveConfiguration();
- //
- // // --- Execution
- // // process the response code later, not via an exception.
- // HttpUnitOptions.setExceptionsThrownOnErrorStatus( false );
- //
- // WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + resourcePath );
- // WebResponse response = sc.getResponse( request );
- //
- // // --- Verification
- //
- // switch ( expectation )
- // {
- // case EXPECT_MANAGED_CONTENTS:
- // assertResponseOK( response );
- // assertTrue( "Invalid Test Case: Can't expect managed contents with "
- // + "test that doesn't have a managed copy in the first place.", hasManagedCopy );
- // String actualContents = response.getText();
- // XMLAssert.assertXMLEqual( expectedManagedContents, actualContents );
- // // assertEquals( "Expected managed file contents", expectedManagedContents, response.getText() );
- // break;
- // case EXPECT_REMOTE_CONTENTS:
- // assertResponseOK( response );
- // assertEquals( "Expected remote file contents", expectedRemoteContents, response.getText() );
- // break;
- // case EXPECT_NOT_FOUND:
- // assertResponseNotFound( response );
- // assertManagedFileNotExists( repoRootInternal, resourcePath );
- // break;
- // }
- // }
-
- @Before
- @Override
- public void tearDown()
- throws Exception
- {
- shutdownServer( remotePrivateSnapshots );
-
- super.tearDown();
-
- String appserverBase = System.getProperty( "appserver.base" );
- if ( StringUtils.isNotEmpty( appserverBase ) )
- {
- FileUtils.deleteDirectory( Paths.get( appserverBase ) );
- }
-
- }
- }
|