/*******************************************************************************
* Copyright (c) 2015 Red Hat.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat - Initial Contribution
*******************************************************************************/
package org.eclipse.linuxtools.internal.docker.ui.validators;
import org.eclipse.linuxtools.internal.docker.ui.launch.BuildDockerImageUtils;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
/**
* Testing the {@link BuildDockerImageUtils}.
*/
@RunWith(Parameterized.class)
public class BuildDockerImageUtilsTest {
private static Object[] match(final String imageName, final String expectedRepository, final String expectedName, final String expectedTag) {
return new Object[] { imageName, expectedRepository, expectedName, expectedTag };
}
@Parameters(name = "{0} -> {1}/{2}:{3}")
public static Object[][] data() {
return new Object[][] { match("", null, null, null),
match("£", null, null, null), // because £ is an invalid character
match("wildfly", null, "wildfly", null),
match("jboss/", null, null, null),
match("jboss/wildfly", "jboss", "wildfly", null),
match("jboss/wildfly:", null , null, null), // because ':' causes invalid value
match("jboss/wildfly:latest", "jboss", "wildfly", "latest"),
match("localhost/wildfly/", null, null, null), // because registry is missing port number
match("localhost/jboss/wildfly", "localhost/jboss", "wildfly", null),
match("localhost/jboss/wildfly:", null, null, null), // because registry is missing port number
match("localhost/jboss/wildfly:latest", "localhost/jboss", "wildfly", "latest"),
match("localhost/jboss/wildfly:9", "localhost/jboss", "wildfly", "9"),
match("localhost/jboss/wildfly:9.", null, null, null), // because . is invalid for tag end
match("localhost/jboss/wildfly:9.0.1.Final", "localhost/jboss", "wildfly", "9.0.1.Final"),
match("localhost:", null, null, null), // because trailing ':' causes invalid value
match("localhost:5000", null, "localhost", "5000"), // bc it matches the REPO:TAG pattern.
match("localhost:5000/", null, null, null), // because trailing '/' causes invalid value
match("localhost:5000/jboss/wildfly", "jboss", "wildfly", null),
match("localhost:5000/jboss/wildfly/", null, null, null), // because trailing '/' causes invalid value
match("localhost:5000/jboss/wildfly", "jboss", "wildfly", null),
match("localhost:5000/jboss/wildfly:", null, null, null), // because ':' causes invalid value
match("localhost:5000/jboss/wildfly:latest", "jboss", "wildfly", "latest"),
};
}
@Parameter(value = 0)
public String imageName;
@Parameter(value = 1)
public String expectedRepository;
@Parameter(value = 2)
public String expectedName;
@Parameter(value = 3)
public String expectedTag;
@Test
public void verifyRepository() {
// when
final String actualRepository = BuildDockerImageUtils.getRepository(imageName);
// then
Assert.assertEquals(expectedRepository, actualRepository);
}
@Test
public void verifyName() {
// when
final String actualName = BuildDockerImageUtils.getName(imageName);
// then
Assert.assertEquals(expectedName, actualName);
}
@Test
public void verifyTag() {
// when
final String actualTagName = BuildDockerImageUtils.getTag(imageName);
// then
Assert.assertEquals(expectedTag, actualTagName);
}
}