Skip to content

Commit 3668508

Browse files
committed
ContainerRegistry: Reject capital letters in repository names
1 parent 07e8a44 commit 3668508

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

Sources/ContainerRegistry/ImageReference.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import RegexBuilder
1616

1717
public enum ReferenceError: Error, Equatable {
1818
case emptyString
19+
case containsUppercaseLetters(String)
1920
case unexpected(String)
2021
}
2122

@@ -61,6 +62,10 @@ public struct Repository: Sendable, Equatable, CustomStringConvertible, CustomDe
6162
throw ReferenceError.emptyString
6263
}
6364

65+
if (rawValue.contains { $0.isUppercase }) {
66+
throw ReferenceError.containsUppercaseLetters(rawValue)
67+
}
68+
6469
value = rawValue
6570
}
6671

Tests/ContainerRegistryTests/ImageReferenceTests.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,18 @@ struct ReferenceTests {
134134
#expect(throws: ReferenceError.emptyString) {
135135
try ImageReference(fromString: "", defaultRegistry: "default")
136136
}
137+
138+
#expect(throws: ReferenceError.emptyString) {
139+
try ImageReference(fromString: "example.com/")
140+
}
141+
142+
#expect(throws: ReferenceError.containsUppercaseLetters("helloWorld")) {
143+
try ImageReference(fromString: "helloWorld", defaultRegistry: "default")
144+
}
145+
146+
#expect(throws: ReferenceError.containsUppercaseLetters("helloWorld")) {
147+
try ImageReference(fromString: "localhost:5555/helloWorld")
148+
}
137149
}
138150

139151
@Test

0 commit comments

Comments
 (0)