mirror of
https://github.com/apple/container.git
synced 2026-07-12 12:37:02 +00:00
e37dcc19a5
- Closes #1359. - Create a ResourceLabels type and extract the label validation from NetworkConfiguration into the new type. - Create a base AppError type that is compatible with structured logging and delegates message presentation to the error receiver. - Define LabelError over AppError for label validation. - Slightly reworks NetworkConfiguration entity migration code in NetworksService.
72 lines
2.6 KiB
Swift
72 lines
2.6 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
// Copyright © 2026 Apple Inc. and the container project authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import Foundation
|
|
import Testing
|
|
|
|
@testable import ContainerResource
|
|
|
|
struct ManagedResourceTests {
|
|
|
|
// Mock implementation to test the randomId function
|
|
struct MockManagedResource: ManagedResource {
|
|
var id: String
|
|
var name: String
|
|
var creationDate: Date
|
|
var labels: ResourceLabels
|
|
|
|
static func nameValid(_ name: String) -> Bool {
|
|
true
|
|
}
|
|
}
|
|
|
|
@Test("randomId generates valid hex string SHA256 hash format")
|
|
func testRandomIdFormat() {
|
|
let id = MockManagedResource.generateId()
|
|
|
|
// SHA256 hash is 64 hex characters (256 bits / 4 bits per hex char)
|
|
#expect(id.count == 64, "randomId should generate 64 character string")
|
|
|
|
// Should only contain valid hexadecimal characters (0-9, a-f)
|
|
let hexCharacterSet = CharacterSet(charactersIn: "0123456789abcdef")
|
|
let idCharacterSet = CharacterSet(charactersIn: id)
|
|
#expect(
|
|
hexCharacterSet.isSuperset(of: idCharacterSet),
|
|
"randomId should only contain hexadecimal characters (0-9, a-f)")
|
|
}
|
|
|
|
@Test("randomId generates unique values")
|
|
func testRandomIdUniqueness() {
|
|
// Generate multiple IDs and verify they're all different
|
|
let ids = (0..<100).map { _ in MockManagedResource.generateId() }
|
|
let uniqueIds = Set(ids)
|
|
|
|
#expect(uniqueIds.count == 100, "All generated IDs should be unique")
|
|
}
|
|
|
|
@Test("randomId uses lowercase hexadecimal")
|
|
func testRandomIdLowercase() {
|
|
let id = MockManagedResource.generateId()
|
|
|
|
// Should not contain uppercase letters
|
|
let uppercaseLetters = CharacterSet.uppercaseLetters
|
|
let idCharacterSet = CharacterSet(charactersIn: id)
|
|
#expect(
|
|
uppercaseLetters.isDisjoint(with: idCharacterSet),
|
|
"randomId should use lowercase hexadecimal characters")
|
|
}
|
|
}
|