Buckets:
localhost1978/localhost / LOCALHOST1978 /Modules /SSK_Providers /Tests /SSK_ProvidersTests /StorageHostRunnerSecurityTests.swift
| #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.