package com.nirima.jenkins.plugins.docker.builder;
import static org.hamcrest.CoreMatchers.containsString;
import org.junit.Assert;
import org.junit.Test;
public class DockerBuilderPublisherTest {
private static final String VALID1 = "myimage";
private static final String VALID2 = "my/image-2";
private static final String VALID3 = "myimage_3:tag";
private static final String VALID4 = "myimage.4:Tag4";
private static final String VALID5 = "localhost/myimage";
private static final String VALID6 = "localhost.localdomain/myimage:My_Tag-6";
private static final String VALID7 = "my.repository.com:1234/myimage.7";
private static final String VALID8 = "my.repository.com:${PORT_NUMBER}/myimage.7";
private static final String VALID9 = "localhost.localdomain:5000/myimage:${JOB_NAME}-latest";
private static final String VALID10 = "localhost.localdomain:5000/myimage:${JOB_NAME}-${BUILD_NUMBER}";
private static final String INVALID1 = "MyImagei1";
private static final String INVALID2 = "myimage%";
private static final String INVALID3 = "1.2.3.4:abc/myimage:invalid3";
private static final String INVALID4 = "funnyhost£name:5000/myimage4";
@Test
public void verifyTagsGivenValidTagsThenPasses() {
// Given
final String validTags = String.join("\n", VALID1, VALID2, VALID3, VALID4, VALID5, VALID6, VALID7, VALID8,
VALID9, VALID10);
// When
DockerBuilderPublisher.verifyTags(validTags);
// Then
// no exception thrown
}
@Test
public void verifyTagsGivenInvalidTag1ThenThrows() {
// Given
final String invalidTag = INVALID1;
final String tags = String.join("\n", VALID1, invalidTag, VALID2);
// When
try {
DockerBuilderPublisher.verifyTags(tags);
Assert.fail("Expected exception");
} catch (IllegalArgumentException ex) {
// Then
Assert.assertThat(ex.getMessage(), containsString(invalidTag));
}
}
@Test
public void verifyTagsGivenInvalidTag2ThenThrows() {
// Given
final String invalidTag = INVALID2;
final String tags = String.join("\n", VALID1, invalidTag, VALID2);
// When
try {
DockerBuilderPublisher.verifyTags(tags);
Assert.fail("Expected exception");
} catch (IllegalArgumentException ex) {
// Then
Assert.assertThat(ex.getMessage(), containsString(invalidTag));
}
}
@Test
public void verifyTagsGivenInvalidTag3ThenThrows() {
// Given
final String invalidTag = INVALID3;
final String tags = String.join("\n", VALID1, invalidTag, VALID2);
// When
try {
DockerBuilderPublisher.verifyTags(tags);
Assert.fail("Expected exception");
} catch (IllegalArgumentException ex) {
// Then
Assert.assertThat(ex.getMessage(), containsString(invalidTag));
}
}
@Test
public void verifyTagsGivenInvalidTag4ThenThrows() {
// Given
final String invalidTag = INVALID4;
final String tags = String.join("\n", VALID1, invalidTag, VALID2);
// When
try {
DockerBuilderPublisher.verifyTags(tags);
Assert.fail("Expected exception");
} catch (IllegalArgumentException ex) {
// Then
Assert.assertThat(ex.getMessage(), containsString(invalidTag));
}
}
}