diff --git a/internal/policy/container/has_prohibited_container_name.go b/internal/policy/container/has_prohibited_container_name.go index eeb872c9..0ba72c2a 100644 --- a/internal/policy/container/has_prohibited_container_name.go +++ b/internal/policy/container/has_prohibited_container_name.go @@ -22,7 +22,10 @@ func (p HasProhibitedContainerName) Validate(ctx context.Context, imageReference func (p HasProhibitedContainerName) getDataForValidate(imageRepository string) string { // splitting on '/' to get container name, at this point we know that // crane's ParseReference has set ImageReference.imageRepository in a valid format - return strings.Split(imageRepository, "/")[1] + repository := strings.Split(imageRepository, "/") + + // always return last element which is container name + return repository[len(repository)-1] } func (p HasProhibitedContainerName) validate(ctx context.Context, containerName string) (bool, error) { diff --git a/internal/policy/container/has_prohibited_container_name_test.go b/internal/policy/container/has_prohibited_container_name_test.go index ec30f749..8a5c7e3b 100644 --- a/internal/policy/container/has_prohibited_container_name_test.go +++ b/internal/policy/container/has_prohibited_container_name_test.go @@ -26,6 +26,16 @@ var _ = Describe("HasProhibitedContainerName", func() { Expect(ok).To(BeTrue()) }) }) + Context("When a local registry container name does not violate trademark", func() { + BeforeEach(func() { + imageRef.ImageRepository = "simple-demo-operator" + }) + It("should pass Validate", func() { + ok, err := hasProhibitedContainerName.Validate(context.TODO(), imageRef) + Expect(err).ToNot(HaveOccurred()) + Expect(ok).To(BeTrue()) + }) + }) Context("When a container name violates trademark", func() { BeforeEach(func() { imageRef.ImageRepository = "opdev/red-hat-container"