package io.airlift.airship.coordinator; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.net.URI; public class TestMavenRepository { // This repo extends the MavenRepository so we can use it for testing private TestingMavenRepository repo; @BeforeMethod public void setUp() throws Exception { repo = new TestingMavenRepository(); } @AfterMethod public void tearDown() throws Exception { repo.destroy(); } @Test public void resolveAbsoluteSpec() throws Exception { String binarySpec = "food.fruit:apple:1.0"; Assert.assertEquals( repo.binaryResolve(binarySpec), "food.fruit:apple:1.0"); URI uri = repo.binaryToHttpUri(binarySpec); Assert.assertEquals(uri, new File(repo.getTargetRepo(), "food/fruit/apple/1.0/apple-1.0.tar.gz").toURI()); } @Test public void resolveDefaultGroupId() throws Exception { String binarySpec = "apple:1.0"; Assert.assertEquals( repo.binaryResolve(binarySpec), "food.fruit:apple:1.0"); URI uri = repo.binaryToHttpUri(binarySpec); Assert.assertEquals(uri, new File(repo.getTargetRepo(), "food/fruit/apple/1.0/apple-1.0.tar.gz").toURI()); } @Test public void resolveSnapshot() throws Exception { String binarySpec = "food.fruit:banana:2.0-SNAPSHOT"; Assert.assertEquals( repo.binaryResolve(binarySpec), "food.fruit:banana:2.0-20110311.201909-1"); URI uri = repo.binaryToHttpUri(binarySpec); Assert.assertEquals(uri, new File(repo.getTargetRepo(), "food/fruit/banana/2.0-SNAPSHOT/banana-2.0-20110311.201909-1.tar.gz").toURI()); } @Test public void resolveSnapshotWithDefaultGroupId() throws Exception { String binarySpec = "banana:2.0-SNAPSHOT"; Assert.assertEquals( repo.binaryResolve(binarySpec), "food.fruit:banana:2.0-20110311.201909-1"); URI uri = repo.binaryToHttpUri(binarySpec); Assert.assertEquals(uri, new File(repo.getTargetRepo(), "food/fruit/banana/2.0-SNAPSHOT/banana-2.0-20110311.201909-1.tar.gz").toURI()); } @Test public void resolveTimestamp() throws Exception { String binarySpec = "food.fruit:banana:2.0-20110311.201909-1"; Assert.assertEquals( repo.binaryResolve(binarySpec), "food.fruit:banana:2.0-20110311.201909-1"); URI uri = repo.binaryToHttpUri(binarySpec); Assert.assertTrue(uri.getPath().endsWith("/food/fruit/banana/2.0-SNAPSHOT/banana-2.0-20110311.201909-1.tar.gz")); } @Test public void configShortName() throws Exception { Assert.assertEquals(repo.configShortName("@apple:1.0"), "apple"); } @Test public void resolve() throws Exception { Assert.assertEquals(repo.configResolve("@apple:1.0"), "@prod:apple:1.0"); Assert.assertEquals(repo.binaryResolve("apple:1.0"), "food.fruit:apple:1.0"); } @Test public void toURI() throws Exception { Assert.assertEquals(repo.configToHttpUri("@apple:1.0"), new File(repo.getTargetRepo(), "prod/apple/1.0/apple-1.0.config").toURI()); Assert.assertEquals(repo.binaryToHttpUri("apple:1.0"), new File(repo.getTargetRepo(), "food/fruit/apple/1.0/apple-1.0.tar.gz").toURI()); } @Test public void upgrade() throws Exception { Assert.assertEquals(repo.configUpgrade("@apple:1.0", "@2.0"), "@prod:apple:2.0"); Assert.assertEquals(repo.binaryUpgrade("apple:1.0", "2.0"), "food.fruit:apple:2.0"); Assert.assertEquals(repo.configUpgrade("@apple:1.0", "@banana:2.0-SNAPSHOT"), "@prod:banana:2.0-20110311.201909-1"); Assert.assertEquals(repo.binaryUpgrade("apple:1.0", "banana:2.0-SNAPSHOT"), "food.fruit:banana:2.0-20110311.201909-1"); } @Test public void equalsIgnoreVersion() throws Exception { Assert.assertTrue(repo.configEqualsIgnoreVersion("@apple:1.0", "@apple:2.0")); Assert.assertTrue(repo.binaryEqualsIgnoreVersion("apple:1.0", "apple:2.0")); Assert.assertFalse(repo.configEqualsIgnoreVersion("@apple:1.0", "@banana:1.0")); Assert.assertFalse(repo.binaryEqualsIgnoreVersion("apple:1.0", "banana:1.0")); } }