diff options
| author | StevenWdV <stevenwdv@gmail.com> | 2021-12-14 15:56:10 +0100 |
|---|---|---|
| committer | StevenWdV <stevenwdv@gmail.com> | 2021-12-14 15:56:10 +0100 |
| commit | ae826fde04191d26af68b898cf4b2f537d24a8ec (patch) | |
| tree | c41943907e6c880a4254106942fc2c399c462016 /wrappers/swift/Tests | |
| parent | d9953dcc09ce61e249e40857bbf5cb98e0bb1fbf (diff) | |
Add Swift wrapper, support more platforms in Makefile
Diffstat (limited to 'wrappers/swift/Tests')
| -rw-r--r-- | wrappers/swift/Tests/EduVpnCommonTests/EduVpnCommonTests.swift | 60 |
1 files changed, 60 insertions, 0 deletions
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)}); + } +} |
