|
| 1 | +package org.jfrog.build.extractor.docker; |
| 2 | + |
| 3 | +import org.testng.annotations.DataProvider; |
| 4 | +import org.testng.annotations.Test; |
| 5 | + |
| 6 | +import java.util.List; |
| 7 | +import java.util.stream.Stream; |
| 8 | + |
| 9 | +import static org.jfrog.build.extractor.docker.DockerUtils.calculateModuleId; |
| 10 | +import static org.jfrog.build.extractor.docker.DockerUtils.getArtManifestPath; |
| 11 | +import static org.testng.Assert.assertEquals; |
| 12 | +import static org.testng.Assert.assertEqualsNoOrder; |
| 13 | + |
| 14 | +@Test |
| 15 | +public class DockerUtilsTest { |
| 16 | + @Test |
| 17 | + public void getArtManifestPathTest() { |
| 18 | + String imagePath = "hello-world:latest"; |
| 19 | + String repository = "docker-local"; |
| 20 | + DockerUtils.CommandType cmdType = DockerUtils.CommandType.Push; |
| 21 | + List<String> results = getArtManifestPath(imagePath, repository, cmdType); |
| 22 | + assertEqualsNoOrder(results.toArray(), Stream.of("docker-local/hello-world:latest", "hello-world:latest").toArray()); |
| 23 | + |
| 24 | + cmdType = DockerUtils.CommandType.Pull; |
| 25 | + imagePath = "docker-local/hello-world:latest"; |
| 26 | + results = getArtManifestPath(imagePath, repository, cmdType); |
| 27 | + assertEqualsNoOrder(results.toArray(), Stream.of("docker-local/docker-local/hello-world:latest", "docker-local/hello-world:latest", "docker-local/library/docker-local/hello-world:latest", "docker-local/library/hello-world:latest").toArray()); |
| 28 | + } |
| 29 | + |
| 30 | + @DataProvider |
| 31 | + private Object[][] moduleIdsProvider() { |
| 32 | + return new String[][]{ |
| 33 | + // imageTag, targetRepo, expectedModuleId |
| 34 | + {"acme-docker-local.jfrog.io/image-tag", "docker-repo", "image-tag"}, |
| 35 | + {"acme-docker-local.jfrog.io/image-tag:1", "docker-repo", "image-tag:1"}, |
| 36 | + {"acme-docker-local.jfrog.io/image/tag", "docker-repo", "image/tag"}, |
| 37 | + {"acme-docker-local.jfrog.io/image/tag:1", "docker-repo", "image/tag:1"}, |
| 38 | + {"acme-docker-local.jfrog.io/image-tag", "other-docker-repo", "image-tag"}, |
| 39 | + {"acme-docker-local.jfrog.io/image-tag:1", "other-docker-repo", "image-tag:1"}, |
| 40 | + {"acme-docker-local.jfrog.io/image/tag", "other-docker-repo", "image/tag"}, |
| 41 | + {"acme-docker-local.jfrog.io/image/tag:1", "other-docker-repo", "image/tag:1"}, |
| 42 | + |
| 43 | + {"acme.jfrog.io/docker-repo/image-tag", "docker-repo", "image-tag"}, |
| 44 | + {"acme.jfrog.io/docker-repo/image-tag:1", "docker-repo", "image-tag:1"}, |
| 45 | + {"acme.jfrog.io/docker-repo/image/tag", "docker-repo", "image/tag"}, |
| 46 | + {"acme.jfrog.io/docker-repo/image/tag:1", "docker-repo", "image/tag:1"}, |
| 47 | + // Edge cases - we have no choice but to add the docker-repo to the module id |
| 48 | + {"acme.jfrog.io/docker-repo/image-tag", "other-docker-repo", "docker-repo/image-tag"}, |
| 49 | + {"acme.jfrog.io/docker-repo/image-tag:1", "other-docker-repo", "docker-repo/image-tag:1"}, |
| 50 | + {"acme.jfrog.io/docker-repo/image/tag", "other-docker-repo", "docker-repo/image/tag"}, |
| 51 | + {"acme.jfrog.io/docker-repo/image/tag:1", "other-docker-repo", "docker-repo/image/tag:1"}, |
| 52 | + }; |
| 53 | + } |
| 54 | + |
| 55 | + @Test(dataProvider = "moduleIdsProvider") |
| 56 | + public void calculateModuleIdTest(String imageTag, String targetRepo, String expectedModuleId) { |
| 57 | + assertEquals(calculateModuleId(imageTag, targetRepo), expectedModuleId); |
| 58 | + } |
| 59 | +} |
0 commit comments