localhost1978's picture
download
raw
3.88 kB
#if os(macOS)
import Foundation
import XCTest
@testable import SSK_Providers
@available(macOS 27.0, *)
final class StorageHostRunnerSecurityTests: XCTestCase {
func testVolumesPathIsRejected() {
XCTAssertThrowsError(
try StorageHostRunner.validateVaultMountURL(
URL(fileURLWithPath: "/Volumes/Vault")
)
) { error in
XCTAssertEqual(error as? StorageHostRunnerError, .invalidVaultMount)
}
}
func testOwnedPrivateVaultMountIsAccepted() throws {
let fixture = try makeFixture()
defer { try? FileManager.default.removeItem(at: fixture.root) }
let result = try StorageHostRunner.validateVaultMountURL(
fixture.mount,
expectedMountRootURL: fixture.mountRoot
)
XCTAssertEqual(result, fixture.mount.standardizedFileURL)
}
func testMountOutsideExpectedAppGroupRootIsRejected() throws {
let fixture = try makeFixture()
defer { try? FileManager.default.removeItem(at: fixture.root) }
let otherRoot = fixture.root.appendingPathComponent("Other", isDirectory: true)
try FileManager.default.createDirectory(at: otherRoot, withIntermediateDirectories: false)
XCTAssertThrowsError(
try StorageHostRunner.validateVaultMountURL(
fixture.mount,
expectedMountRootURL: otherRoot
)
) { error in
XCTAssertEqual(error as? StorageHostRunnerError, .invalidVaultMount)
}
}
func testGroupReadableMountIsRejected() throws {
let fixture = try makeFixture()
defer { try? FileManager.default.removeItem(at: fixture.root) }
try FileManager.default.setAttributes(
[.posixPermissions: 0o750],
ofItemAtPath: fixture.mount.path
)
XCTAssertThrowsError(
try StorageHostRunner.validateVaultMountURL(
fixture.mount,
expectedMountRootURL: fixture.mountRoot
)
) { error in
XCTAssertEqual(error as? StorageHostRunnerError, .vaultMountNotPrivate)
}
}
func testSymlinkMountIsRejected() throws {
let fixture = try makeFixture(createMount: false)
defer { try? FileManager.default.removeItem(at: fixture.root) }
let target = fixture.root.appendingPathComponent("Target", isDirectory: true)
try FileManager.default.createDirectory(at: target, withIntermediateDirectories: false)
try FileManager.default.createSymbolicLink(at: fixture.mount, withDestinationURL: target)
XCTAssertThrowsError(
try StorageHostRunner.validateVaultMountURL(
fixture.mount,
expectedMountRootURL: fixture.mountRoot
)
) { error in
XCTAssertEqual(error as? StorageHostRunnerError, .vaultMountUnavailable)
}
}
private func makeFixture(
createMount: Bool = true
) throws -> (root: URL, mountRoot: URL, mount: URL) {
let root = FileManager.default.temporaryDirectory
.appendingPathComponent(UUID().uuidString, isDirectory: true)
let mountRoot = root.appendingPathComponent("VaultMounts", isDirectory: true)
let mount = mountRoot.appendingPathComponent(
UUID().uuidString.lowercased(),
isDirectory: true
)
try FileManager.default.createDirectory(
at: mountRoot,
withIntermediateDirectories: true,
attributes: [.posixPermissions: 0o700]
)
if createMount {
try FileManager.default.createDirectory(
at: mount,
withIntermediateDirectories: false,
attributes: [.posixPermissions: 0o700]
)
}
return (root, mountRoot, mount)
}
}
#endif

Xet Storage Details

Size:
3.88 kB
·
Xet hash:
67afeb4abf4856934b47f9b2d1d176f7d9adb978162e545c904b6f1f7c925358

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.