package org.jfrog.build.extractor.client; import com.google.common.collect.ImmutableMap; import org.jfrog.build.extractor.clientConfiguration.ArtifactSpec; import org.testng.annotations.Test; import static org.testng.Assert.*; /** * @author Yoav Landman */ @Test public class ArtifactSpecTest { @Test public void stringConstruction() throws Exception { ArtifactSpec standard = ArtifactSpec.newSpec("conf grp:art:ver:cls@jar k1:v1, k2:v2 , k3: v3"); ArtifactSpec noPropSpaces = ArtifactSpec.newSpec("conf grp:art:ver:cls@jar k1:v1,k2:v2,k3:v3"); ArtifactSpec noConf = ArtifactSpec.newSpec("grp:art:ver:cls@jar k1:v1, k2:v2 , k3: v3"); ArtifactSpec allConf = ArtifactSpec.newSpec("all grp:art:ver:cls@jar k1:v1 , k2:v2 ,k3:v3"); assertEquals(standard.getConfiguration(), "conf"); assertEquals(standard.getGroup(), "grp"); assertEquals(standard.getName(), "art"); assertEquals(standard.getVersion(), "ver"); assertEquals(standard.getClassifier(), "cls"); assertEquals(standard.getType(), "jar"); assertEquals(standard.getProperties(), ImmutableMap.of("k1", "v1", "k2", "v2", "k3", "v3")); assertEquals(noPropSpaces.getConfiguration(), "conf"); assertEquals(noPropSpaces.getGroup(), "grp"); assertEquals(noPropSpaces.getName(), "art"); assertEquals(noPropSpaces.getVersion(), "ver"); assertEquals(noPropSpaces.getClassifier(), "cls"); assertEquals(noPropSpaces.getType(), "jar"); assertEquals(noPropSpaces.getProperties(), ImmutableMap.of("k1", "v1", "k2", "v2", "k3", "v3")); assertEquals(noConf.getConfiguration(), "*"); assertEquals(noConf.getGroup(), "grp"); assertEquals(noConf.getName(), "art"); assertEquals(noConf.getVersion(), "ver"); assertEquals(noConf.getClassifier(), "cls"); assertEquals(noConf.getType(), "jar"); assertEquals(noConf.getProperties(), ImmutableMap.of("k1", "v1", "k2", "v2", "k3", "v3")); try { ArtifactSpec noProps = ArtifactSpec.newSpec("all grp:art:ver:cls@jar"); fail("Artifact spec cannot be constructed from string without a properties notation."); } catch (IllegalArgumentException e) { //Expected } assertEquals(allConf.getConfiguration(), "*"); assertEquals(allConf.getGroup(), "grp"); assertEquals(allConf.getName(), "art"); assertEquals(allConf.getVersion(), "ver"); assertEquals(allConf.getClassifier(), "cls"); assertEquals(allConf.getType(), "jar"); assertEquals(allConf.getProperties(), ImmutableMap.of("k1", "v1", "k2", "v2", "k3", "v3")); } @Test public void matches() throws Exception { ArtifactSpec spec = ArtifactSpec.builder().configuration("conf").group("grp").name("art").version("ver").classifier("cls") .type("jar").build(); assertTrue(ArtifactSpec.newSpec("conf grp:art:ver:cls k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* grp:art:ver:cls k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* g?p:art:ver:cls k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("* noGrp:art:ver:cls k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("conf grp:*:*:cls k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* *:*:*er:cl* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("conf *:*:*er:cl* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("conf *:*:*:* k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("conf1 *:*:*er:cl* k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("* *:*:*et:* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* *:*:*er:* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("conf grp:art:ver:cls@jar k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* grp:art:ver:cls@jar k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* g?p:art:ver:cls@jar k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("* noGrp:art:ver:cls@jar k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* *:*:*er:cl*@* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("conf *:*:*er:cl*@* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("conf *:*:*:*@jar k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("conf1 *:*:*er:cl*@* k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("* *:*:*et:*@* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("* *:*:*er:*@j?? k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("* *:*:*er:*@j??? k1:v1").matches(spec)); } @Test public void matchesWithNull1() throws Exception { ArtifactSpec spec = ArtifactSpec.builder().configuration(null).group("org.jfrog").name("shared") .version("1.0") .classifier(null) .type("jar").build(); someTests(spec); } @Test public void matchesWithNull2() throws Exception { ArtifactSpec spec = ArtifactSpec.builder().group("org.jfrog").name("shared") .version("1.0").build(); someTests(spec); } private void someTests(ArtifactSpec spec) { assertFalse(ArtifactSpec.newSpec("archives org.jfrog:*:*:*@* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("all org.jfrog:shared:?.?:* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("all org.jfrog:*:*.?:* k1:v1").matches(spec)); assertTrue(ArtifactSpec.newSpec("all org.jfrog:*:?.?:* k1:v1").matches(spec)); assertFalse(ArtifactSpec.newSpec("foo org.jfrog:*:?.?:* k1:v1").matches(spec)); } }