123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904 |
- package org.apache.archiva.indexer.search;
-
- /*
- * 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 org.apache.archiva.common.utils.FileUtil;
- import org.apache.archiva.indexer.util.SearchUtil;
- import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
- import org.codehaus.plexus.util.FileUtils;
- import org.easymock.EasyMock;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.test.context.ContextConfiguration;
-
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collection;
- import java.util.Collections;
- import java.util.List;
-
-
- @RunWith ( ArchivaSpringJUnit4ClassRunner.class )
- @ContextConfiguration ( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
- public class MavenRepositorySearchTest
- extends AbstractMavenRepositorySearch
- {
-
-
- private void createSimpleIndex( boolean scan )
- throws Exception
- {
- List<File> files = new ArrayList<>();
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "/src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" ) );
-
- createIndex( TEST_REPO_1, files, scan );
- }
-
- private void createIndexContainingMoreArtifacts( boolean scan )
- throws Exception
- {
- List<File> files = new ArrayList<>();
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-webapp/1.0/archiva-webapp-1.0.war" ) );
- files.add( new File( FileUtil.getBasedir(),
- "src/test/" + TEST_REPO_1 + "/com/artifactid-numeric/1.0/artifactid-numeric-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/com/artifactid-numeric123/1.0/artifactid-numeric123-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(),
- "src/test/" + TEST_REPO_1 + "/com/classname-search/1.0/classname-search-1.0.jar" ) );
-
- createIndex( TEST_REPO_1, files, scan );
- }
-
- private void createIndexContainingMultipleArtifactsSameVersion( boolean scan )
- throws Exception
- {
- List<File> files = new ArrayList<>();
-
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) );
-
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom" ) );
-
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0-sources.jar" ) );
-
- createIndex( TEST_REPO_1, files, scan );
- }
-
- @Test
- public void testQuickSearch()
- throws Exception
- {
- createSimpleIndex( false );
-
- List<String> selectedRepos = Arrays.asList( TEST_REPO_1 );
-
- // search artifactId
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "archiva-search", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
-
- SearchResultHit hit =
- results.getSearchResultHit( SearchUtil.getHitId( "org.apache.archiva", "archiva-search", null, "jar" ) );
- assertNotNull( "hit null in result " + results.getHits(), hit );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-search", hit.getArtifactId() );
- assertEquals( "1.0", hit.getVersions().get( 0 ) );
-
- archivaConfigControl.reset();
-
- // search groupId
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- results = search.search( "user", selectedRepos, "org.apache.archiva", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( "total hints not 3", 3, results.getTotalHits() );
-
- //TODO: search for class & package names
- }
-
- @Test
- public void testQuickSearchNotWithClassifier()
- throws Exception
- {
- createSimpleIndex( true );
-
- List<String> selectedRepos = Arrays.asList( TEST_REPO_1 );
-
- // search artifactId
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "archiva-search", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
-
- SearchResultHit hit =
- results.getSearchResultHit( SearchUtil.getHitId( "org.apache.archiva", "archiva-search", null, "jar" ) );
- assertNotNull( "hit null in result " + results.getHits(), hit );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-search", hit.getArtifactId() );
- assertEquals( "1.0", hit.getVersions().get( 0 ) );
-
- archivaConfigControl.reset();
-
- // search groupId
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- results = search.search( "user", selectedRepos, "archiva-search", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( "total hints not 3 hits " + results.getHits(), 3, results.getTotalHits() );
-
- //TODO: search for class & package names
- }
-
- @Test
- public void testQuickSearchMultipleArtifactsSameVersion()
- throws Exception
- {
- createIndexContainingMultipleArtifactsSameVersion( false );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- // search artifactId
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "archiva-search", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 3, results.getTotalHits() );
-
- SearchResultHit hit = results.getHits().get( 0 );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-search", hit.getArtifactId() );
- assertEquals( "1.0", hit.getVersions().get( 0 ) );
-
- //only 1 version of 1.0 is retrieved
- assertEquals( 1, hit.getVersions().size() );
- }
-
- @Test
- public void testMultipleArtifactsSameVersionWithClassifier()
- throws Exception
- {
- createIndexContainingMultipleArtifactsSameVersion( true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- // search artifactId
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.apache.archiva" );
- searchFields.setArtifactId( "archiva-search" );
- searchFields.setClassifier( "sources" );
- searchFields.setRepositories( selectedRepos );
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 1, results.getTotalHits() );
-
- SearchResultHit hit = results.getHits().get( 0 );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-search", hit.getArtifactId() );
- assertEquals( "1.0", hit.getVersions().get( 0 ) );
-
- //only 1 version of 1.0 is retrieved
- assertEquals( 1, hit.getVersions().size() );
- }
-
- // search for existing artifact using multiple keywords
- @Test
- public void testQuickSearchWithMultipleKeywords()
- throws Exception
- {
- createSimpleIndex( false );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "archiva search", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 1, results.getTotalHits() );
- }
-
- @Test
- public void testQuickSearchWithPagination()
- throws Exception
- {
- createSimpleIndex( true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- // page 1
- SearchResultLimits limits = new SearchResultLimits( 0 );
- limits.setPageSize( 1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "org", limits, new ArrayList<String>() );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 1, results.getHits().size() );
- assertEquals( "total hits not 8 for page1 " + results, 8, results.getTotalHits() );
- assertEquals( "returned hits not 1 for page1 " + results, 1, results.getReturnedHitsCount() );
- assertEquals( limits, results.getLimits() );
-
- archivaConfigControl.reset();
-
- // page 2
- limits = new SearchResultLimits( 1 );
- limits.setPageSize( 1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- results = search.search( "user", selectedRepos, "org", limits, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
-
- assertEquals( "hits not 1", 1, results.getHits().size() );
- assertEquals( "total hits not 8 for page 2 " + results, 8, results.getTotalHits() );
- assertEquals( "returned hits not 1 for page2 " + results, 1, results.getReturnedHitsCount() );
- assertEquals( limits, results.getLimits() );
- }
-
- @Test
- public void testArtifactFoundInMultipleRepositories()
- throws Exception
- {
- createSimpleIndex( true );
-
- List<File> files = new ArrayList<>();
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_2
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_2
- + "/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar" ) );
- createIndex( TEST_REPO_2, files, false );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
- selectedRepos.add( TEST_REPO_2 );
-
- config.addManagedRepository( createRepositoryConfig( TEST_REPO_2 ) );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 5 );
-
- archivaConfigControl.replay();
-
- // wait lucene flush.....
- Thread.sleep( 2000 );
-
- SearchResults results = search.search( "user", selectedRepos, "archiva-search", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
-
- SearchResultHit hit =
- results.getSearchResultHit( SearchUtil.getHitId( "org.apache.archiva", "archiva-search", null, "jar" ) );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-search", hit.getArtifactId() );
- assertEquals( "not 2 version for hit " + hit + "::" + niceDisplay( results ), 2, hit.getVersions().size() );
- assertTrue( hit.getVersions().contains( "1.0" ) );
- assertTrue( hit.getVersions().contains( "1.1" ) );
-
- archivaConfigControl.reset();
-
- // TODO: [BROWSE] in artifact info from browse, display all the repositories where the artifact is found
- }
-
- @Test
- public void testNoMatchFound()
- throws Exception
- {
- createSimpleIndex( false );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "dfghdfkweriuasndsaie", null, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 0, results.getTotalHits() );
- }
-
- @Test
- public void testNoIndexFound()
- throws Exception
- {
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "org.apache.archiva", null, null );
- assertNotNull( results );
- assertEquals( 0, results.getTotalHits() );
-
- archivaConfigControl.verify();
- }
-
- @Test
- public void testRepositoryNotFound()
- throws Exception
- {
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( "non-existing-repo" );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "org.apache.archiva", null, null );
- assertNotNull( results );
- assertEquals( 0, results.getTotalHits() );
-
- archivaConfigControl.verify();
- }
-
- @Test
- public void testSearchWithinSearchResults()
- throws Exception
- {
- createSimpleIndex( true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- List<String> previousSearchTerms = new ArrayList<>();
- previousSearchTerms.add( "archiva-test" );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", selectedRepos, "1.0", null, previousSearchTerms );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( "total hints not 1", 1, results.getTotalHits() );
-
- SearchResultHit hit = results.getHits().get( 0 );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-test", hit.getArtifactId() );
- assertEquals( "versions not 1", 1, hit.getVersions().size() );
- assertEquals( "1.0", hit.getVersions().get( 0 ) );
- }
-
- // tests for advanced search
- @Test
- public void testAdvancedSearch()
- throws Exception
- {
- List<File> files = new ArrayList<>();
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_2
- + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_2
- + "/org/apache/archiva/archiva-search/1.1/archiva-search-1.1.jar" ) );
- createIndex( TEST_REPO_2, files, false );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_2 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.apache.archiva" );
- searchFields.setVersion( "1.0" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 1, results.getTotalHits() );
-
- SearchResultHit hit = results.getHits().get( 0 );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-search", hit.getArtifactId() );
- assertEquals( "1.0", hit.getVersions().get( 0 ) );
- }
-
- @Test
- public void testAdvancedSearchWithPagination()
- throws Exception
- {
- createIndexContainingMoreArtifacts( false );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.apache.archiva" );
- searchFields.setRepositories( selectedRepos );
-
- // page 1
-
- SearchResultLimits limits = new SearchResultLimits( 0 );
- limits.setPageSize( 1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, limits );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 4, results.getTotalHits() );
- assertEquals( 1, results.getHits().size() );
-
- // page 2
- archivaConfigControl.reset();
-
- limits = new SearchResultLimits( 1 );
- limits.setPageSize( 1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- results = search.search( "user", searchFields, limits );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 4, results.getTotalHits() );
- assertEquals( 1, results.getHits().size() );
- }
-
- // MRM-981 - artifactIds with numeric characters aren't found in advanced search
- @Test
- public void testAdvancedSearchArtifactIdHasNumericChar()
- throws Exception
- {
- List<File> files = new ArrayList<>();
- files.add( new File( FileUtil.getBasedir(),
- "src/test/" + TEST_REPO_1 + "/com/artifactid-numeric/1.0/artifactid-numeric-1.0.jar" ) );
- files.add( new File( FileUtil.getBasedir(), "src/test/" + TEST_REPO_1
- + "/com/artifactid-numeric123/1.0/artifactid-numeric123-1.0.jar" ) );
- createIndex( TEST_REPO_1, files, true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setArtifactId( "artifactid-numeric" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 2, results.getTotalHits() );
- }
-
- @Test
- public void testAdvancedSearchNoRepositoriesConfigured()
- throws Exception
- {
- SearchFields searchFields = new SearchFields();
- searchFields.setArtifactId( "archiva" );
- searchFields.setRepositories( null );
-
- try
- {
- search.search( "user", searchFields, null );
- fail( "A RepositorySearchExcecption should have been thrown." );
- }
- catch ( RepositorySearchException e )
- {
- assertEquals( "Repositories cannot be null.", e.getMessage() );
- }
- }
-
- @Test
- public void testAdvancedSearchSearchFieldsAreNull()
- throws Exception
- {
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setRepositories( selectedRepos );
-
- try
- {
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- fail( "A RepositorySearchExcecption should have been thrown." );
- }
- catch ( RepositorySearchException e )
- {
- assertEquals( "No search fields set.", e.getMessage() );
- }
- }
-
- @Test
- public void testAdvancedSearchSearchFieldsAreBlank()
- throws Exception
- {
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "" );
- searchFields.setArtifactId( "" );
- searchFields.setVersion( "" );
- searchFields.setPackaging( "" );
- searchFields.setClassName( "" );
-
- searchFields.setRepositories( selectedRepos );
-
- try
- {
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- fail( "A RepositorySearchExcecption should have been thrown." );
- }
- catch ( RepositorySearchException e )
- {
- assertEquals( "No search fields set.", e.getMessage() );
- }
- }
-
- @Test
- public void testAdvancedSearchAllSearchCriteriaSpecified()
- throws Exception
- {
- createSimpleIndex( true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.apache.archiva" );
- searchFields.setArtifactId( "archiva-test" );
- searchFields.setVersion( "2.0" );
- searchFields.setPackaging( "jar" );
- searchFields.setClassName( "org.apache.archiva.test.App" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
-
- assertEquals( "total hints not 1" + results, 1, results.getTotalHits() );
-
- SearchResultHit hit = results.getHits().get( 0 );
- assertEquals( "org.apache.archiva", hit.getGroupId() );
- assertEquals( "archiva-test", hit.getArtifactId() );
- assertEquals( "version not 2.0", "2.0", hit.getVersions().get( 0 ) );
- }
-
- @Test
- public void testAdvancedSearchJarArtifacts()
- throws Exception
- {
- createIndexContainingMoreArtifacts( true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setPackaging( "jar" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( "not 8 but " + results.getTotalHits() + ":" + niceDisplay( results ), 8, results.getTotalHits() );
- }
-
- @Test
- public void testAdvancedSearchWithIncorrectPackaging()
- throws Exception
- {
- createSimpleIndex( true );
-
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.apache.archiva" );
- searchFields.setArtifactId( "archiva-test" );
- searchFields.setVersion( "2.0" );
- searchFields.setPackaging( "war" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 0, results.getTotalHits() );
- }
-
- @Test
- public void testAdvancedSearchClassname()
- throws Exception
- {
- createIndexContainingMoreArtifacts( true );
-
- List<String> selectedRepos = Arrays.asList( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setClassName( "com.classname.search.App" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( "totalHits not 1 results " + results, 1, results.getTotalHits() );
-
- SearchResultHit hit = results.getHits().get( 0 );
- assertEquals( "groupId not com", "com", hit.getGroupId() );
- assertEquals( "arttifactId not classname-search", "classname-search", hit.getArtifactId() );
- assertEquals( " hits.version(0) not 1.0", "1.0", hit.getVersions().get( 0 ) );
- }
-
- @Test
- public void testAdvancedSearchNoIndexFound()
- throws Exception
- {
- List<String> selectedRepos = new ArrayList<>();
- selectedRepos.add( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.apache.archiva" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 0, results.getTotalHits() );
- }
-
- @Test
- public void testAdvancedSearchClassNameInWar()
- throws Exception
- {
- createIndexContainingMoreArtifacts( true );
-
- List<String> selectedRepos = Arrays.asList( TEST_REPO_1 );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setClassName( "SomeClass" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 1, results.getHits().size() );
- assertEquals( "test-webapp", results.getHits().get( 0 ).getArtifactId() );
- }
-
- @Test
- public void getAllGroupIds()
- throws Exception
- {
- createIndexContainingMoreArtifacts( true );
-
- List<String> selectedRepos = Arrays.asList( TEST_REPO_1 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 0, 2 );
-
- archivaConfigControl.replay();
-
- Collection<String> groupIds = search.getAllGroupIds( "user", selectedRepos );
-
- archivaConfigControl.verify();
-
- log.info( "groupIds: {}", groupIds );
-
- assertEquals( 3, groupIds.size() );
- assertTrue( groupIds.contains( "com" ) );
- assertTrue( groupIds.contains( "org.apache.felix" ) );
- assertTrue( groupIds.contains( "org.apache.archiva" ) );
- }
-
- @Test
- public void testSearchWithUnknownRepo()
- throws Exception
- {
- createIndexContainingMoreArtifacts( true );
-
- List<String> selectedRepos = Arrays.asList( "foo" );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setClassName( "SomeClass" );
- searchFields.setRepositories( selectedRepos );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 2 );
-
- archivaConfigControl.replay();
-
- SearchResults results = search.search( "user", searchFields, null );
-
- archivaConfigControl.verify();
-
- assertNotNull( results );
- assertEquals( 0, results.getHits().size() );
- }
-
- @Test
- public void nolimitedResult()
- throws Exception
- {
-
- File repo = new File( "target/repo-release" );
- File indexDirectory = new File( repo, ".index" );
- FileUtils.copyDirectoryStructure( new File( "src/test/repo-release" ), repo );
-
- createIndex( "repo-release", Collections.<File>emptyList(), false );
-
- nexusIndexer.addIndexingContext( REPO_RELEASE, REPO_RELEASE, repo, indexDirectory,
- repo.toURI().toURL().toExternalForm(),
- indexDirectory.toURI().toURL().toString(), search.getAllIndexCreators() );
-
- SearchResultLimits limits = new SearchResultLimits( 0 );
- limits.setPageSize( 300 );
-
- EasyMock.expect( archivaConfig.getConfiguration() ).andReturn( config ).times( 1, 5 );
-
- archivaConfigControl.replay();
-
- SearchResults searchResults = search.search( null, Arrays.asList( REPO_RELEASE ), "org.example", limits,
- Collections.<String>emptyList() );
-
- log.info( "results: {}", searchResults.getHits().size() );
-
- assertEquals( 255, searchResults.getHits().size() );
-
- SearchFields searchFields = new SearchFields();
- searchFields.setGroupId( "org.example" );
- searchFields.setRepositories( Arrays.asList( REPO_RELEASE ) );
-
- searchResults = search.search( null, searchFields, limits );
-
- log.info( "results: {}", searchResults.getHits().size() );
-
- assertEquals( 255, searchResults.getHits().size() );
-
- archivaConfigControl.verify();
- }
- }
|