From ae826fde04191d26af68b898cf4b2f537d24a8ec Mon Sep 17 00:00:00 2001 From: StevenWdV Date: Tue, 14 Dec 2021 15:56:10 +0100 Subject: Add Swift wrapper, support more platforms in Makefile --- .../EduVpnCommonTests/EduVpnCommonTests.swift | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 wrappers/swift/Tests/EduVpnCommonTests/EduVpnCommonTests.swift (limited to 'wrappers/swift/Tests') diff --git a/wrappers/swift/Tests/EduVpnCommonTests/EduVpnCommonTests.swift b/wrappers/swift/Tests/EduVpnCommonTests/EduVpnCommonTests.swift new file mode 100644 index 0000000..a508023 --- /dev/null +++ b/wrappers/swift/Tests/EduVpnCommonTests/EduVpnCommonTests.swift @@ -0,0 +1,60 @@ +import XCTest +@testable import EduVpnCommon + +final class EduVpnCommonTests: XCTestCase { + private static let testDataDir = "../../test_data" + + override class func setUp() { + // Swift is confused by CRLF, so on some systems we cannot just take the second-to-last element + InsecureTestingSetExtraKey(keyString: try! String(contentsOfFile: "\(testDataDir)/dummy/public.key") + .components(separatedBy: .newlines).last(where: { !$0.isEmpty })!) + } + + func testValid() throws { + try Verify( + signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json.minisig")), + signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json")), + expectedFileName: "server_list.json", + minSignTime: Date(timeIntervalSince1970: 0)) + } + + func testInvalidSignature() throws { + XCTAssertThrowsError( + try Verify( + signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/random.txt")), + signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json")), + expectedFileName: "server_list.json", + minSignTime: Date(timeIntervalSince1970: 0)), + "", {err in XCTAssertEqual(err as? VerifyErr, VerifyErr.ErrInvalidSignature)}); + } + + func testWrongKey() throws { + XCTAssertThrowsError( + try Verify( + signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json.wrong_key.minisig")), + signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json")), + expectedFileName: "server_list.json", + minSignTime: Date(timeIntervalSince1970: 0)), + "", {err in XCTAssertEqual(err as? VerifyErr, VerifyErr.ErrInvalidSignatureUnknownKey)}); + } + + func testOldSignature() throws { + XCTAssertThrowsError( + try Verify( + signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json.minisig")), + signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/server_list.json")), + expectedFileName: "server_list.json", + minSignTime: Date(timeIntervalSince1970: TimeInterval(1 << 31))), + "", {err in XCTAssertEqual(err as? VerifyErr, VerifyErr.ErrTooOld)}); + } + + func testUnknownExpectedFile() throws { + XCTAssertThrowsError( + try Verify( + signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/other_list.json.minisig")), + signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/dummy/other_list.json")), + expectedFileName: "other_list.json", + minSignTime: Date(timeIntervalSince1970: 0)), + "", {err in XCTAssertEqual(err as? VerifyErr, VerifyErr.ErrUnknownExpectedFileName)}); + } +} -- cgit v1.2.3