diff --git a/Supersign/.gitignore b/Supersign/.gitignore new file mode 100644 index 0000000..a29df59 --- /dev/null +++ b/Supersign/.gitignore @@ -0,0 +1,2 @@ +/Tests/SupersignTests/config/* +!/Tests/SupersignTests/config/config-template.json diff --git a/Supersign/Package.swift b/Supersign/Package.swift index 0db6f59..4c35b13 100644 --- a/Supersign/Package.swift +++ b/Supersign/Package.swift @@ -58,6 +58,20 @@ let package = Package( ], cSettings: cSettings ), + .testTarget( + name: "SupersignTests", + dependencies: [ + "Supersign", + .product(name: "SuperutilsTestSupport", package: "SuperchargeCore") + ], + exclude: [ + "config/config-template.json", + ], + resources: [ + .copy("config/config.json"), + .copy("config/test.app"), + ] + ), .target( name: "SupersignCLI", dependencies: [ diff --git a/SupersignTests/Tests/SupersignDeveloperServicesTests.swift b/Supersign/Tests/SupersignTests/Tests/SupersignDeveloperServicesTests.swift similarity index 90% rename from SupersignTests/Tests/SupersignDeveloperServicesTests.swift rename to Supersign/Tests/SupersignTests/Tests/SupersignDeveloperServicesTests.swift index 375925f..51dbaed 100644 --- a/SupersignTests/Tests/SupersignDeveloperServicesTests.swift +++ b/Supersign/Tests/SupersignTests/Tests/SupersignDeveloperServicesTests.swift @@ -7,6 +7,7 @@ // import XCTest +import SuperutilsTestSupport import Supersign class SupersignDeveloperServicesTests: XCTestCase { @@ -15,6 +16,7 @@ class SupersignDeveloperServicesTests: XCTestCase { override func setUp() { super.setUp() + _ = addMockSigner client = .test() } @@ -29,11 +31,11 @@ class SupersignDeveloperServicesTests: XCTestCase { let teams = try XCTTry(client.sendTest(listTeams)) let team = teams.first { $0.status == "active" && $0.memberships.contains { $0.platform == .iOS } }! - let bundle = Bundle(for: Self.self) - let source = try XCTUnwrap(bundle.url(forResource: "test", withExtension: "app")) + let source = try XCTUnwrap(Bundle.module.url(forResource: "test", withExtension: "app")) let context = try XCTTry(SigningContext( udid: Config.current.udid, + deviceName: SigningContext.hostName, teamID: team.id, client: client, signingInfoManager: MemoryBackedSigningInfoManager() diff --git a/SupersignTests/Tests/SupersignGrandSlamTests.swift b/Supersign/Tests/SupersignTests/Tests/SupersignGrandSlamTests.swift similarity index 97% rename from SupersignTests/Tests/SupersignGrandSlamTests.swift rename to Supersign/Tests/SupersignTests/Tests/SupersignGrandSlamTests.swift index 4517635..2a1fad2 100644 --- a/SupersignTests/Tests/SupersignGrandSlamTests.swift +++ b/Supersign/Tests/SupersignTests/Tests/SupersignGrandSlamTests.swift @@ -7,6 +7,7 @@ // import XCTest +import SuperutilsTestSupport @testable import Supersign class TwoFactorAuthenticator: TwoFactorAuthDelegate { @@ -23,6 +24,7 @@ class SupersignGrandSlamTests: XCTestCase { override func setUp() { super.setUp() + _ = addMockSigner client = .test() authenticator = TwoFactorAuthenticator() } diff --git a/SupersignTests/Tests/SupersignSigningTests.swift b/Supersign/Tests/SupersignTests/Tests/SupersignSigningTests.swift similarity index 92% rename from SupersignTests/Tests/SupersignSigningTests.swift rename to Supersign/Tests/SupersignTests/Tests/SupersignSigningTests.swift index 4d0db38..6da3a70 100644 --- a/SupersignTests/Tests/SupersignSigningTests.swift +++ b/Supersign/Tests/SupersignTests/Tests/SupersignSigningTests.swift @@ -6,7 +6,12 @@ // Copyright © 2019 Kabir Oberai. All rights reserved. // +// TODO: Test using mock signer + +#if false + import XCTest +import SuperutilsTestSupport import Supersign class SupersignSigningTests: XCTestCase { @@ -18,11 +23,11 @@ class SupersignSigningTests: XCTestCase { // swiftlint:disable force_try override func setUp() { super.setUp() + _ = addMockSigner client = .test() signerImpl = try! SignerImpl.first() - let bundle = Bundle(for: Self.self) - let source = try! XCTUnwrap(bundle.url(forResource: "test", withExtension: "app")) + let source = try! XCTUnwrap(Bundle.module.url(forResource: "test", withExtension: "app")) let tmp = FileManager.default.temporaryDirectory app = tmp.appendingPathComponent(source.lastPathComponent) if FileManager.default.fileExists(atPath: app.path) { @@ -48,6 +53,7 @@ class SupersignSigningTests: XCTestCase { let context = try XCTTry(SigningContext( udid: Config.current.udid, + deviceName: SigningContext.hostName, teamID: team.id, client: client, signingInfoManager: MemoryBackedSigningInfoManager(), @@ -82,3 +88,5 @@ class SupersignSigningTests: XCTestCase { } } + +#endif diff --git a/SupersignTests/Utilities/Config.swift b/Supersign/Tests/SupersignTests/Utilities/Config.swift similarity index 85% rename from SupersignTests/Utilities/Config.swift rename to Supersign/Tests/SupersignTests/Utilities/Config.swift index 94c86f8..7bc753d 100644 --- a/SupersignTests/Utilities/Config.swift +++ b/Supersign/Tests/SupersignTests/Utilities/Config.swift @@ -23,8 +23,7 @@ struct Config: Decodable { let udid: String static let current: Config = { - class ConfigDummy {} - let url = Bundle(for: ConfigDummy.self).url(forResource: "config", withExtension: "json")! + let url = Bundle.module.url(forResource: "config", withExtension: "json")! // swiftlint:disable:next force_try let data = try! Data(contentsOf: url) // swiftlint:disable:next force_try diff --git a/SupersignTests/Utilities/DeveloperServicesClient+Testing.swift b/Supersign/Tests/SupersignTests/Utilities/DeveloperServicesClient+Testing.swift similarity index 98% rename from SupersignTests/Utilities/DeveloperServicesClient+Testing.swift rename to Supersign/Tests/SupersignTests/Utilities/DeveloperServicesClient+Testing.swift index 838a24d..e7c1821 100644 --- a/SupersignTests/Utilities/DeveloperServicesClient+Testing.swift +++ b/Supersign/Tests/SupersignTests/Utilities/DeveloperServicesClient+Testing.swift @@ -10,6 +10,8 @@ import Foundation import XCTest @testable import Supersign +#if false + extension TCPAnisetteDataProvider { static func test() -> TCPAnisetteDataProvider { @@ -26,6 +28,8 @@ extension NetcatAnisetteDataProvider { } +#endif + extension SupersetteDataProvider { static func test() -> SupersetteDataProvider { diff --git a/Supersign/Tests/SupersignTests/Utilities/MockSigner.swift b/Supersign/Tests/SupersignTests/Utilities/MockSigner.swift new file mode 100644 index 0000000..988a3df --- /dev/null +++ b/Supersign/Tests/SupersignTests/Utilities/MockSigner.swift @@ -0,0 +1,16 @@ +import Foundation +import SignerSupport + +let addMockSigner: () = { + add_signer( + "MockSigner", + { appDir, certData, certLen, privKeyData, privKeyLen, entitlements, numEntitlements, progress, exception in + exception.initialize(to: strdup("Mock signer not implemented")) + return 1 + }, + { path, outLen, exception in + exception.initialize(to: strdup("Mock analyzer not implemented")) + return nil + } + ) +}() diff --git a/SupersignTests/Utilities/ResultWaiter.swift b/Supersign/Tests/SupersignTests/Utilities/ResultWaiter.swift similarity index 100% rename from SupersignTests/Utilities/ResultWaiter.swift rename to Supersign/Tests/SupersignTests/Utilities/ResultWaiter.swift diff --git a/SupersignTests/config/config-template.json b/Supersign/Tests/SupersignTests/config/config-template.json similarity index 100% rename from SupersignTests/config/config-template.json rename to Supersign/Tests/SupersignTests/config/config-template.json