mirror of https://github.com/cirruslabs/tart.git
52 lines
1.7 KiB
Swift
52 lines
1.7 KiB
Swift
import XCTest
|
|
@testable import tart
|
|
|
|
final class RemoteNameTests: XCTestCase {
|
|
func testTag() throws {
|
|
let expectedRemoteName = RemoteName(host: "ghcr.io", namespace: "a/b", reference: Reference(tag: "latest"))
|
|
|
|
XCTAssertEqual(expectedRemoteName, try RemoteName("ghcr.io/a/b:latest"))
|
|
}
|
|
|
|
func testComplexTag() throws {
|
|
let expectedRemoteName = RemoteName(host: "ghcr.io", namespace: "a/b", reference: Reference(tag: "1.2.3-RC-1"))
|
|
|
|
XCTAssertEqual(expectedRemoteName, try RemoteName("ghcr.io/a/b:1.2.3-RC-1"))
|
|
}
|
|
|
|
func testDigest() throws {
|
|
let expectedRemoteName = RemoteName(
|
|
host: "ghcr.io",
|
|
namespace: "a/b",
|
|
reference: Reference(digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
|
|
)
|
|
|
|
XCTAssertEqual(expectedRemoteName,
|
|
try RemoteName("ghcr.io/a/b@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
|
|
}
|
|
|
|
func testASCIIOnly() throws {
|
|
// Only ASCII letters are supported
|
|
XCTAssertEqual(try? RemoteName("touché.fr/a/b:latest"), nil)
|
|
XCTAssertEqual(try? RemoteName("ghcr.io/tou/ché:latest"), nil)
|
|
XCTAssertEqual(try? RemoteName("ghcr.io/a/b:touché"), nil)
|
|
}
|
|
|
|
func testLocal() throws {
|
|
// Local image names (those that don't include a registry) are not supported
|
|
XCTAssertEqual(try? RemoteName("debian:latest"), nil)
|
|
}
|
|
|
|
func testPort() throws {
|
|
// Port is included in host
|
|
XCTAssertEqual(try RemoteName("127.0.0.1:8080/a/b").host, "127.0.0.1:8080")
|
|
|
|
// Port must be specified when ":" is used
|
|
XCTAssertEqual(try? RemoteName("127.0.0.1:/a/b").host, nil)
|
|
}
|
|
|
|
func testNoPathTraversal() throws {
|
|
XCTAssertEqual(try? RemoteName("ghcr.io/a/../b/c:latest"), nil)
|
|
}
|
|
}
|