From 9674d9e4b49503228c92568d88e4d9a30d7a13d3 Mon Sep 17 00:00:00 2001 From: Devashishbasu Date: Tue, 30 Jan 2024 13:31:18 +0530 Subject: [PATCH] parent 0f530e0a6340dcb3dbc3b5ea3c4af40516dd1a17 author Devashishbasu 1706601678 +0530 committer Devashishbasu 1706679085 +0530 fixes #2542 Adding suggested changes Adding suggested changes Update jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java Co-authored-by: Rohan Kumar Update jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameTest.java Co-authored-by: Rohan Kumar Update jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameTest.java Co-authored-by: Rohan Kumar --- .../eclipse/jkube/kit/config/image/ImageName.java | 7 +++++++ .../image/ImageNameDistributionReferenceTest.java | 2 +- .../jkube/kit/config/image/ImageNameTest.java | 13 ++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java b/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java index c236ff6f6e..05a143b6a9 100644 --- a/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java +++ b/jkube-kit/config/image/src/main/java/org/eclipse/jkube/kit/config/image/ImageName.java @@ -55,6 +55,8 @@ public class ImageName { // Digest private String digest; + private static final int REPO_NAME_MAX_LENGTH = 255; + /** * Create an image name * @@ -279,6 +281,11 @@ private void doValidate() { "tag", TAG_REGEXP, tag, "digest", DIGEST_REGEXP, digest }; + + if (repository.length() > REPO_NAME_MAX_LENGTH) { + errors.add(String.format("Repository name must not be more than %d characters", REPO_NAME_MAX_LENGTH)); + } + for (int i = 0; i < checks.length; i +=3) { String value = (String) checks[i + 2]; Pattern checkPattern = (Pattern) checks[i + 1]; diff --git a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java index 8bff4bf8fb..46ac1d89e1 100644 --- a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java +++ b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameDistributionReferenceTest.java @@ -94,7 +94,7 @@ void validNames(String name) { "", ":justtag", "@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - //"a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a:tag", // https://github.com/eclipse/jkube/issues/2542 + "a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a:tag", //"repo@sha256:ffffffffffffffffffffffffffffffffff", // https://github.com/eclipse/jkube/issues/2543 "validname@invaliddigest:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "Uppercase:tag", diff --git a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameTest.java b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameTest.java index fdfd4f43cd..16585dae1d 100644 --- a/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameTest.java +++ b/jkube-kit/config/image/src/test/java/org/eclipse/jkube/kit/config/image/ImageNameTest.java @@ -12,7 +12,7 @@ * Red Hat, Inc. - initial API and implementation */ package org.eclipse.jkube.kit.config.image; - +import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -125,6 +125,17 @@ void testIllegalFormat() { assertThrows(IllegalArgumentException.class, () -> new ImageName("")); } + + @Test + @DisplayName("too long repository name, should throw exception") + void shouldThrowExceptionOnTooLongImageName() { + String tooLongName = StringUtils.repeat("a", 256); + assertThatIllegalArgumentException() + .as("Too long image name should fail") + .isThrownBy(() -> new ImageName(tooLongName)) + .withMessageContaining("Repository name must not be more than 255 characters"); + } + @Test void namesUsedByDockerTests() { StringBuilder longTag = new StringBuilder();