From 0b46735ef8110a7ae9c3f386c6008c9c49446423 Mon Sep 17 00:00:00 2001 From: velo Date: Wed, 8 Jul 2009 14:32:15 +0000 Subject: [PATCH] OPEN - issue NEXUS-2196: Check repository summary https://issues.sonatype.org/browse/NEXUS-2196 git-svn-id: file:///opt/svn/repositories/sonatype.org/nexus/trunk/nexus/nexus-test-harness/nexus-test-harness-selenium@4541 2aa8b3fc-8ebb-4439-a84f-95066eaea8ab --- .../mock/pages/RepositoriesEditTabs.java | 28 +++- .../nexus/mock/pages/RepositoriesTab.java | 2 +- .../nexus/mock/pages/RepositorySummary.java | 34 ++++ .../nexus2145/Nexus2145RepositoryTest.java | 27 ++-- .../Nexus2194UploadArtifactTest.java | 2 +- .../nexus2195/Nexus2195GroupTest.java | 6 +- .../Nexus2196RepositorySummaryTest.java | 145 ++++++++++++++++++ 7 files changed, 216 insertions(+), 28 deletions(-) create mode 100644 src/main/java/org/sonatype/nexus/mock/pages/RepositorySummary.java create mode 100644 src/test/java/org/sonatype/nexus/selenium/nexus2196/Nexus2196RepositorySummaryTest.java diff --git a/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesEditTabs.java b/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesEditTabs.java index d84d9a269e..daa035a89e 100644 --- a/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesEditTabs.java +++ b/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesEditTabs.java @@ -10,19 +10,25 @@ public class RepositoriesEditTabs public enum RepoKind { - HOSTED( 2 ), PROXY( 2 ), VIRTUAL( 1 ), GROUP( 2 ); + HOSTED( 2, 4 ), PROXY( 2, 4 ), VIRTUAL( 1, 2 ), GROUP( 2, -1 ); private int configPosition; - private RepoKind( int configPosition ) + private int summaryPosition; + + private RepoKind( int configPosition, int summaryPosition ) { this.configPosition = configPosition; + this.summaryPosition = summaryPosition; } } - public RepositoriesEditTabs( Selenium selenium ) + private RepoKind kind; + + public RepositoriesEditTabs( Selenium selenium, RepoKind kind ) { super( selenium, RepositoriesTab.REPOSITORIES_ST + ".cardPanel.getLayout().activeItem.tabPanel" ); + this.kind = kind; } public void select( int i ) @@ -30,7 +36,7 @@ public void select( int i ) runScript( ".activate(" + expression + ".items.items[" + i + "])" ); } - public Component selectConfiguration( RepoKind kind ) + public Component selectConfiguration() { select( kind.configPosition ); @@ -44,7 +50,7 @@ public Component selectConfiguration( RepoKind kind ) } } - public RepositoriesArtifactUploadForm selectUpload( RepoKind kind ) + public RepositoriesArtifactUploadForm selectUpload() { if ( !RepoKind.HOSTED.equals( kind ) ) { @@ -55,4 +61,16 @@ public RepositoriesArtifactUploadForm selectUpload( RepoKind kind ) return new RepositoriesArtifactUploadForm( selenium, expression + ".getLayout().activeItem" ); } + + public RepositorySummary selectSummary() + { + if ( RepoKind.GROUP.equals( kind ) ) + { + return null; + } + + select( kind.summaryPosition ); + + return new RepositorySummary( selenium, expression + ".getLayout().activeItem" ); + } } diff --git a/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesTab.java b/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesTab.java index cf8ee75fe1..4590f1d068 100644 --- a/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesTab.java +++ b/src/main/java/org/sonatype/nexus/mock/pages/RepositoriesTab.java @@ -76,7 +76,7 @@ public RepositoriesEditTabs select( String repoId, RepoKind kind ) // } - return new RepositoriesEditTabs( selenium ); + return new RepositoriesEditTabs( selenium, kind ); } public MainPage getMainPage() diff --git a/src/main/java/org/sonatype/nexus/mock/pages/RepositorySummary.java b/src/main/java/org/sonatype/nexus/mock/pages/RepositorySummary.java new file mode 100644 index 0000000000..ec5fdcc11f --- /dev/null +++ b/src/main/java/org/sonatype/nexus/mock/pages/RepositorySummary.java @@ -0,0 +1,34 @@ +package org.sonatype.nexus.mock.pages; + +import org.sonatype.nexus.mock.components.Component; +import org.sonatype.nexus.mock.components.TextArea; + +import com.thoughtworks.selenium.Selenium; + +public class RepositorySummary + extends Component +{ + + private TextArea distributionManagement; + + private TextArea repositoryInformation; + + public RepositorySummary( Selenium selenium, String expression ) + { + super( selenium, expression ); + + this.repositoryInformation = new TextArea( selenium, expression + ".find('name', 'informationField')[0]" ); + this.distributionManagement = new TextArea( selenium, expression + ".find('name', 'distMgmtField')[0]" ); + } + + public final TextArea getDistributionManagement() + { + return distributionManagement; + } + + public final TextArea getRepositoryInformation() + { + return repositoryInformation; + } + +} diff --git a/src/test/java/org/sonatype/nexus/selenium/nexus2145/Nexus2145RepositoryTest.java b/src/test/java/org/sonatype/nexus/selenium/nexus2145/Nexus2145RepositoryTest.java index 5f4a55019b..901c7caf16 100644 --- a/src/test/java/org/sonatype/nexus/selenium/nexus2145/Nexus2145RepositoryTest.java +++ b/src/test/java/org/sonatype/nexus/selenium/nexus2145/Nexus2145RepositoryTest.java @@ -40,8 +40,7 @@ public void crudHosted() // read RepositoriesConfigurationForm config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.HOSTED ).selectConfiguration( - RepoKind.HOSTED ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.HOSTED ).selectConfiguration( ); Assert.assertEquals( repoId, config.getIdField().getValue() ); Assert.assertEquals( name, config.getName().getValue() ); @@ -51,8 +50,7 @@ public void crudHosted() // update config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.HOSTED ).selectConfiguration( - RepoKind.HOSTED ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.HOSTED ).selectConfiguration( ); String newName = "new selenium repo name"; config.getName().type( newName ); @@ -61,8 +59,7 @@ public void crudHosted() repositories.refresh(); config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.HOSTED ).selectConfiguration( - RepoKind.HOSTED ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.HOSTED ).selectConfiguration( ); Assert.assertEquals( newName, config.getName().getValue() ); repositories.refresh(); @@ -92,8 +89,7 @@ public void crudVirtual() // read RepositoriesConfigurationForm config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.VIRTUAL ).selectConfiguration( - RepoKind.VIRTUAL ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.VIRTUAL ).selectConfiguration( ); Assert.assertEquals( repoId, config.getIdField().getValue() ); Assert.assertEquals( name, config.getName().getValue() ); @@ -103,8 +99,7 @@ public void crudVirtual() // update config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.VIRTUAL ).selectConfiguration( - RepoKind.VIRTUAL ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.VIRTUAL ).selectConfiguration( ); String newName = "new selenium virtual repo name"; config.getName().type( newName ); @@ -113,8 +108,7 @@ public void crudVirtual() repositories.refresh(); config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.VIRTUAL ).selectConfiguration( - RepoKind.VIRTUAL ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.VIRTUAL ).selectConfiguration( ); Assert.assertEquals( newName, config.getName().getValue() ); repositories.refresh(); @@ -143,8 +137,7 @@ public void crudProxy() // read RepositoriesConfigurationForm config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.PROXY ).selectConfiguration( - RepoKind.PROXY ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.PROXY ).selectConfiguration( ); Assert.assertEquals( repoId, config.getIdField().getValue() ); Assert.assertEquals( name, config.getName().getValue() ); @@ -154,8 +147,7 @@ public void crudProxy() // update config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.PROXY ).selectConfiguration( - RepoKind.PROXY ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.PROXY ).selectConfiguration( ); String newName = "new selenium proxy repo name"; config.getName().type( newName ); @@ -164,8 +156,7 @@ public void crudProxy() repositories.refresh(); config = - (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.PROXY ).selectConfiguration( - RepoKind.PROXY ); + (RepositoriesConfigurationForm) repositories.select( repoId, RepoKind.PROXY ).selectConfiguration( ); Assert.assertEquals( newName, config.getName().getValue() ); repositories.refresh(); diff --git a/src/test/java/org/sonatype/nexus/selenium/nexus2194/Nexus2194UploadArtifactTest.java b/src/test/java/org/sonatype/nexus/selenium/nexus2194/Nexus2194UploadArtifactTest.java index e1c0a64522..d6545d6315 100644 --- a/src/test/java/org/sonatype/nexus/selenium/nexus2194/Nexus2194UploadArtifactTest.java +++ b/src/test/java/org/sonatype/nexus/selenium/nexus2194/Nexus2194UploadArtifactTest.java @@ -19,7 +19,7 @@ public void uploadArtifact() LoginTest.doLogin( main ); RepositoriesArtifactUploadForm uploadTab = - main.openRepositories().select( "thirdparty", RepoKind.HOSTED ).selectUpload( RepoKind.HOSTED ); + main.openRepositories().select( "thirdparty", RepoKind.HOSTED ).selectUpload( ); uploadTab.selectDefinition( Definition.POM ); if ( true ) { diff --git a/src/test/java/org/sonatype/nexus/selenium/nexus2195/Nexus2195GroupTest.java b/src/test/java/org/sonatype/nexus/selenium/nexus2195/Nexus2195GroupTest.java index 5002467b6c..488ba427f5 100644 --- a/src/test/java/org/sonatype/nexus/selenium/nexus2195/Nexus2195GroupTest.java +++ b/src/test/java/org/sonatype/nexus/selenium/nexus2195/Nexus2195GroupTest.java @@ -75,7 +75,7 @@ public void crudGroup() // read GroupConfigurationForm config = - (GroupConfigurationForm) repositories.select( groupId, RepoKind.GROUP ).selectConfiguration( RepoKind.GROUP ); + (GroupConfigurationForm) repositories.select( groupId, RepoKind.GROUP ).selectConfiguration( ); Assert.assertEquals( groupId, config.getIdField().getValue() ); Assert.assertEquals( name, config.getName().getValue() ); @@ -84,7 +84,7 @@ public void crudGroup() // update config = - (GroupConfigurationForm) repositories.select( groupId, RepoKind.GROUP ).selectConfiguration( RepoKind.GROUP ); + (GroupConfigurationForm) repositories.select( groupId, RepoKind.GROUP ).selectConfiguration( ); String newName = "new selenium group name"; config.getName().type( newName ); @@ -93,7 +93,7 @@ public void crudGroup() repositories.refresh(); config = - (GroupConfigurationForm) repositories.select( groupId, RepoKind.GROUP ).selectConfiguration( RepoKind.GROUP ); + (GroupConfigurationForm) repositories.select( groupId, RepoKind.GROUP ).selectConfiguration( ); Assert.assertEquals( newName, config.getName().getValue() ); repositories.refresh(); diff --git a/src/test/java/org/sonatype/nexus/selenium/nexus2196/Nexus2196RepositorySummaryTest.java b/src/test/java/org/sonatype/nexus/selenium/nexus2196/Nexus2196RepositorySummaryTest.java new file mode 100644 index 0000000000..d64e4016f5 --- /dev/null +++ b/src/test/java/org/sonatype/nexus/selenium/nexus2196/Nexus2196RepositorySummaryTest.java @@ -0,0 +1,145 @@ +package org.sonatype.nexus.selenium.nexus2196; + +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.internal.matchers.StringContains.containsString; + +import org.junit.Assert; +import org.junit.Test; +import org.restlet.data.Status; +import org.sonatype.nexus.mock.MockListener; +import org.sonatype.nexus.mock.MockResponse; +import org.sonatype.nexus.mock.NexusTestCase; +import org.sonatype.nexus.mock.SeleniumTest; +import org.sonatype.nexus.mock.pages.RepositorySummary; +import org.sonatype.nexus.mock.pages.RepositoriesEditTabs.RepoKind; +import org.sonatype.nexus.mock.rest.MockHelper; +import org.sonatype.nexus.rest.model.RepositoryMetaResource; +import org.sonatype.nexus.rest.model.RepositoryMetaResourceResponse; +import org.sonatype.nexus.selenium.nexus1815.LoginTest; + +public class Nexus2196RepositorySummaryTest + extends SeleniumTest +{ + + @Test + public void summaryHosted() + throws InterruptedException + { + MockListener ml = listenResult(); + + RepositorySummary repo = openSummary( "thirdparty", RepoKind.HOSTED ); + + RepositoryMetaResource meta = ( (RepositoryMetaResourceResponse) ml.getResult() ).getData(); + + validateRepoInfo( repo, meta ); + validateDistMngt( repo, meta ); + } + + @Test + public void summaryProxy() + throws InterruptedException + { + MockListener ml = listenResult(); + + RepositorySummary repo = openSummary( "central", RepoKind.PROXY ); + + RepositoryMetaResource meta = ( (RepositoryMetaResourceResponse) ml.getResult() ).getData(); + + validateRepoInfo( repo, meta ); + } + + @Test + public void summaryShadow() + throws InterruptedException + { + MockListener ml = listenResult(); + + RepositorySummary repo = openSummary( "central-m1", RepoKind.VIRTUAL ); + + RepositoryMetaResource meta = ( (RepositoryMetaResourceResponse) ml.getResult() ).getData(); + + validateRepoInfo( repo, meta ); + } + + @Test + public void byteSize() + throws InterruptedException + { + RepositorySummary repo = mockSize( 512 ); + Assert.assertThat( repo.getRepositoryInformation().getValue(), containsString( "512 Bytes" ) ); + } + + @Test + public void kilobyteSize() + throws InterruptedException + { + RepositorySummary repo = mockSize( 524288 ); + Assert.assertThat( repo.getRepositoryInformation().getValue(), containsString( "512 KB" ) ); + } + + @Test + public void megabyteSize() + throws InterruptedException + { + RepositorySummary repo = mockSize( 536870912 ); + Assert.assertThat( repo.getRepositoryInformation().getValue(), containsString( "512 MB" ) ); + } + + @Test + public void gigabyteSize() + throws InterruptedException + { + RepositorySummary repo = mockSize( 549755813888L ); + Assert.assertThat( repo.getRepositoryInformation().getValue(), containsString( "512 GB" ) ); + } + + private RepositorySummary mockSize( long size ) + { + RepositoryMetaResourceResponse result = new RepositoryMetaResourceResponse(); + RepositoryMetaResource data = new RepositoryMetaResource(); + data.setId( "thridparty" ); + data.setFormat( "maven2" ); + data.setRepoType( "hosted" ); + data.setSizeOnDisk( size ); + result.setData( data ); + + MockHelper.expect( "/repositories/{repositoryId}/meta", new MockResponse( Status.SUCCESS_OK, result ) ); + + RepositorySummary repo = openSummary( "thirdparty", RepoKind.HOSTED ); + return repo; + } + + private MockListener listenResult() + { + MockListener ml = new MockListener() + { + }; + MockHelper.listen( "/repositories/{repositoryId}/meta", ml ); + return ml; + } + + private RepositorySummary openSummary( String repoId, RepoKind kind ) + { + LoginTest.doLogin( main ); + RepositorySummary repo = main.openRepositories().select( repoId, kind ).selectSummary(); + repo.getRepositoryInformation().waitToLoad(); + return repo; + } + + private void validateDistMngt( RepositorySummary repo, RepositoryMetaResource meta ) + { + String distMgmt = repo.getDistributionManagement().getValue(); + Assert.assertThat( distMgmt, notNullValue() ); + Assert.assertThat( distMgmt, containsString( NexusTestCase.nexusBaseURL + "content/repositories/" + + meta.getId() ) ); + } + + private void validateRepoInfo( RepositorySummary repo, RepositoryMetaResource meta ) + { + String summary = repo.getRepositoryInformation().getValue(); + Assert.assertThat( summary, notNullValue() ); + Assert.assertThat( summary, containsString( meta.getId() ) ); + Assert.assertThat( summary, containsString( meta.getRepoType() ) ); + Assert.assertThat( summary, containsString( meta.getFormat() ) ); + } +}