diff options
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)}); + } +} |
