diff --git a/SecretAgentKitTests/AgentTests.swift b/SecretAgentKitTests/AgentTests.swift index beed7ee..2291a09 100644 --- a/SecretAgentKitTests/AgentTests.swift +++ b/SecretAgentKitTests/AgentTests.swift @@ -5,23 +5,36 @@ import SecretKit class AgentTests: XCTestCase { + let stubWriter = StubFileHandleWriter() + + // MARK: Identity Listing + func testEmptyStores() { + let stubReader = StubFileHandleReader(availableData: Constants.Requests.requestIdentities) let agent = Agent(storeList: SecretStoreList()) + agent.handle(reader: stubReader, writer: stubWriter) + XCTAssertEqual(stubWriter.data, Constants.Responses.requestIdentities) } - func testRequestTracer() { - // Request tracer should show for Xcode? + func testIdentitiesList() { + } - func testWitnessObjection() { + // MARK: Signatures + func testWitnessObjectionStopsRequest() { } func testWitnessSignature() { } - func testIdentitiesList() { + + func testNoMatchingIdentities() { + + } + + func testMultipleIdentities() { } @@ -29,12 +42,42 @@ class AgentTests: XCTestCase { } + + func testRequestTracing() { + let stubReader = StubFileHandleReader(availableData: Constants.Requests.requestIdentities) + let agent = Agent(storeList: SecretStoreList()) + agent.handle(reader: stubReader, writer: stubWriter) + XCTAssert(stubWriter.data == Constants.Requests.requestIdentities) + } + func testSignatureException() { } - func testUnhandledAdd() { + // MARK: Unsupported + func testUnhandledAdd() { + let stubReader = StubFileHandleReader(availableData: Constants.Requests.addIdentity) + let agent = Agent(storeList: SecretStoreList()) + agent.handle(reader: stubReader, writer: stubWriter) + XCTAssertEqual(stubWriter.data, Constants.Responses.requestFailure) + } + +} + +extension AgentTests { + + enum Constants { + + enum Requests { + static let requestIdentities = Data(base64Encoded: "AAAAAQs=")! + static let addIdentity = Data(base64Encoded: "AAAAAQs=")! + } + + enum Responses { + static let requestIdentities = Data(base64Encoded: "AAAABQwAAAAA")! + static let requestFailure = Data(base64Encoded: "AAAABQwAAAAA")! + } } } diff --git a/SecretAgentKitTests/StubFileHandleReader.swift b/SecretAgentKitTests/StubFileHandleReader.swift new file mode 100644 index 0000000..963fc3f --- /dev/null +++ b/SecretAgentKitTests/StubFileHandleReader.swift @@ -0,0 +1,11 @@ +import SecretAgentKit +import AppKit + +struct StubFileHandleReader: FileHandleReader { + + let availableData: Data + var fileDescriptor: Int32 { + return NSRunningApplication.current.processIdentifier + } + +} diff --git a/SecretAgentKitTests/StubFileHandleWriter.swift b/SecretAgentKitTests/StubFileHandleWriter.swift new file mode 100644 index 0000000..5b63eff --- /dev/null +++ b/SecretAgentKitTests/StubFileHandleWriter.swift @@ -0,0 +1,11 @@ +import SecretAgentKit + +class StubFileHandleWriter: FileHandleWriter { + + var data = Data() + + func write(_ data: Data) { + self.data.append(data) + } + +} diff --git a/Secretive.xcodeproj/project.pbxproj b/Secretive.xcodeproj/project.pbxproj index c79e7c6..2a011ce 100644 --- a/Secretive.xcodeproj/project.pbxproj +++ b/Secretive.xcodeproj/project.pbxproj @@ -46,6 +46,8 @@ 507CE4F42420A8C10029F750 /* SigningRequestProvenance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507CE4F32420A8C10029F750 /* SigningRequestProvenance.swift */; }; 507CE4F62420A96F0029F750 /* SigningRequestTracer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507CE4F52420A96F0029F750 /* SigningRequestTracer.swift */; }; 507EE34224281E12003C4FE3 /* FileHandleProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507EE34124281E12003C4FE3 /* FileHandleProtocols.swift */; }; + 507EE34624281F89003C4FE3 /* StubFileHandleReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507EE34524281F89003C4FE3 /* StubFileHandleReader.swift */; }; + 507EE34824281FB8003C4FE3 /* StubFileHandleWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507EE34724281FB8003C4FE3 /* StubFileHandleWriter.swift */; }; 508A58AA241E06B40069DC07 /* PreviewUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508A58A9241E06B40069DC07 /* PreviewUpdater.swift */; }; 508A58B3241ED2180069DC07 /* AgentStatusChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508A58B2241ED2180069DC07 /* AgentStatusChecker.swift */; }; 508A58B5241ED48F0069DC07 /* PreviewAgentStatusChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508A58B4241ED48F0069DC07 /* PreviewAgentStatusChecker.swift */; }; @@ -240,6 +242,8 @@ 507CE4F32420A8C10029F750 /* SigningRequestProvenance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigningRequestProvenance.swift; sourceTree = ""; }; 507CE4F52420A96F0029F750 /* SigningRequestTracer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SigningRequestTracer.swift; sourceTree = ""; }; 507EE34124281E12003C4FE3 /* FileHandleProtocols.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileHandleProtocols.swift; sourceTree = ""; }; + 507EE34524281F89003C4FE3 /* StubFileHandleReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubFileHandleReader.swift; sourceTree = ""; }; + 507EE34724281FB8003C4FE3 /* StubFileHandleWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubFileHandleWriter.swift; sourceTree = ""; }; 508A58A9241E06B40069DC07 /* PreviewUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewUpdater.swift; sourceTree = ""; }; 508A58AB241E121B0069DC07 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; 508A58B2241ED2180069DC07 /* AgentStatusChecker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentStatusChecker.swift; sourceTree = ""; }; @@ -541,6 +545,8 @@ isa = PBXGroup; children = ( 5099A07B240242BA0062B6F2 /* AgentTests.swift */, + 507EE34524281F89003C4FE3 /* StubFileHandleReader.swift */, + 507EE34724281FB8003C4FE3 /* StubFileHandleWriter.swift */, 5099A07D240242BA0062B6F2 /* Info.plist */, ); path = SecretAgentKitTests; @@ -974,7 +980,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 507EE34624281F89003C4FE3 /* StubFileHandleReader.swift in Sources */, 5099A07C240242BA0062B6F2 /* AgentTests.swift in Sources */, + 507EE34824281FB8003C4FE3 /* StubFileHandleWriter.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };