/* * Copyright 2007 Alin Dreghiciu. * * Licensed 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. */ package org.ops4j.pax.url.mvn.internal; import java.net.MalformedURLException; import java.net.URL; import static org.junit.Assert.*; import org.junit.Test; public class ParserTest { @Test( expected = MalformedURLException.class ) public void constructorWithNullPath() throws MalformedURLException { new Parser( null ); } @Test( expected = MalformedURLException.class ) public void urlStartingWithRepositorySeparator() throws MalformedURLException { new Parser( "!group" ); } @Test( expected = MalformedURLException.class ) public void urlEndingWithRepositorySeparator() throws MalformedURLException { new Parser( "http://repository!" ); } @Test( expected = MalformedURLException.class ) public void urlWithRepositoryAndNoGroup() throws MalformedURLException { new Parser( "http://repository!" ); } @Test( expected = MalformedURLException.class ) public void urlWithoutRepositoryAndNoGroup() throws MalformedURLException { new Parser( "" ); } @Test( expected = MalformedURLException.class ) public void urlWithRepositoryAndNoArtifact() throws MalformedURLException { new Parser( "http://repository!group" ); } @Test( expected = MalformedURLException.class ) public void urlWithoutRepositoryAndNoArtifact() throws MalformedURLException { new Parser( "group" ); } @Test public void behaviorSnapshotEnbled() throws MalformedURLException { Parser parser; parser = new Parser( "http://repository@id=fake!group/artifact" ); assertTrue(parser.getRepositoryURL().isSnapshotsEnabled()); assertTrue(parser.getRepositoryURL().isReleasesEnabled()); } @Test public void urlWithRepositoryAndGroupArtifact() throws MalformedURLException { Parser parser = new Parser( "http://repository@id=fake!group/artifact" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "LATEST", parser.getVersion() ); assertEquals( "Type", "jar", parser.getType() ); assertEquals( "Classifier", null, parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/LATEST/artifact-LATEST.jar", parser.getArtifactPath() ); assertEquals( "repository", new URL( "http://repository/" ), parser.getRepositoryURL().getURL() ); } @Test public void urlWithoutRepositoryAndGroupArtifact() throws MalformedURLException { Parser parser = new Parser( "group/artifact" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "LATEST", parser.getVersion() ); assertEquals( "Type", "jar", parser.getType() ); assertEquals( "Classifier", null, parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/LATEST/artifact-LATEST.jar", parser.getArtifactPath() ); assertEquals( "repository", null, parser.getRepositoryURL() ); } @Test public void urlWithRepositoryAndGroupArtifactVersionType() throws MalformedURLException { Parser parser = new Parser( "http://repository@id=fake!group/artifact/version/type" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "version", parser.getVersion() ); assertEquals( "Type", "type", parser.getType() ); assertEquals( "Classifier", null, parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/version/artifact-version.type", parser.getArtifactPath() ); assertEquals( "repository", new URL( "http://repository/" ), parser.getRepositoryURL().getURL() ); } @Test public void urlWithRepositoryAndGroupArtifactVersionTypeClassifier() throws MalformedURLException { Parser parser = new Parser( "http://repository@id=fake!group/artifact/version/type/classifier" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "version", parser.getVersion() ); assertEquals( "Type", "type", parser.getType() ); assertEquals( "Classifier", "classifier", parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/version/artifact-version-classifier.type", parser.getArtifactPath() ); assertEquals( "repository", new URL( "http://repository/" ), parser.getRepositoryURL().getURL() ); } @Test public void urlWithoutRepositoryAndGroupArtifactVersionType() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version/type" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "version", parser.getVersion() ); assertEquals( "Type", "type", parser.getType() ); assertEquals( "Classifier", null, parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/version/artifact-version.type", parser.getArtifactPath() ); assertEquals( "repository", null, parser.getRepositoryURL() ); } @Test public void urlWithoutRepositoryAndGroupArtifactVersionTypeClassifier() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version/type/classifier" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "version", parser.getVersion() ); assertEquals( "Type", "type", parser.getType() ); assertEquals( "Classifier", "classifier", parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/version/artifact-version-classifier.type", parser.getArtifactPath() ); assertEquals( "repository", null, parser.getRepositoryURL() ); } @Test public void urlWithoutRepositoryAndGroupArtifactVersionClassifier() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version//classifier" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "version", parser.getVersion() ); assertEquals( "Type", "jar", parser.getType() ); assertEquals( "Classifier", "classifier", parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/version/artifact-version-classifier.jar", parser.getArtifactPath() ); assertEquals( "repository", null, parser.getRepositoryURL() ); } @Test public void urlWithoutRepositoryAndGroupArtifactTypeClassifier() throws MalformedURLException { Parser parser = new Parser( "group/artifact//type/classifier" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "LATEST", parser.getVersion() ); assertEquals( "Type", "type", parser.getType() ); assertEquals( "Classifier", "classifier", parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/LATEST/artifact-LATEST-classifier.type", parser.getArtifactPath() ); assertEquals( "repository", null, parser.getRepositoryURL() ); } @Test public void urlWithoutRepositoryAndGroupArtifactClassifier() throws MalformedURLException { Parser parser = new Parser( "group/artifact///classifier" ); assertEquals( "Group", "group", parser.getGroup() ); assertEquals( "Artifact", "artifact", parser.getArtifact() ); assertEquals( "Version", "LATEST", parser.getVersion() ); assertEquals( "Type", "jar", parser.getType() ); assertEquals( "Classifier", "classifier", parser.getClassifier() ); assertEquals( "Artifact path", "group/artifact/LATEST/artifact-LATEST-classifier.jar", parser.getArtifactPath() ); assertEquals( "repository", null, parser.getRepositoryURL() ); } @Test public void urlWithJarRepository() throws MalformedURLException { Parser parser = new Parser( "jar:http://repository/repository.jar!/@id=fake!group/artifact/0.1.0" ); assertEquals( "Artifact path", "group/artifact/0.1.0/artifact-0.1.0.jar", parser.getArtifactPath() ); assertEquals( "repository", new URL( "jar:http://repository/repository.jar!/" ), parser.getRepositoryURL().getURL() ); } @Test public void trailingSpace() throws MalformedURLException { Parser parser = new Parser( " http://repository/repository@id=fake!group/artifact/0.1.0" ); assertEquals( "Artifact path", "group/artifact/0.1.0/artifact-0.1.0.jar", parser.getArtifactPath() ); assertEquals( "repository", new URL( "http://repository/repository/" ), parser.getRepositoryURL().getURL() ); } @Test public void snapshotPath() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version-SNAPSHOT" ); assertEquals( "Artifact snapshot path", "group/artifact/version-SNAPSHOT/artifact-version-timestamp-build.jar", parser.getSnapshotPath( "version-SNAPSHOT", "timestamp", "build" ) ); } @Test public void artifactPathWithVersion() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version" ); assertEquals( "Artifact path", "group/artifact/version2/artifact-version2.jar", parser.getArtifactPath( "version2" ) ); } @Test public void versionMetadataPath() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version" ); assertEquals( "Version metadata path", "group/artifact/version2/maven-metadata.xml", parser.getVersionMetadataPath( "version2" ) ); } @Test public void artifactMetadataPath() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version" ); assertEquals( "Artifact metadata path", "group/artifact/maven-metadata.xml", parser.getArtifactMetdataPath() ); } @Test public void artifactLocalMetadataPath() throws MalformedURLException { Parser parser = new Parser( "group/artifact/version" ); assertEquals( "Artifact local metadata path", "group/artifact/maven-metadata-local.xml", parser.getArtifactLocalMetdataPath() ); } }