summaryrefslogtreecommitdiff
path: root/wrappers/swift/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'wrappers/swift/Tests')
-rw-r--r--wrappers/swift/Tests/EduVpnCommonTests/EduVpnCommonTests.swift60
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)});
+ }
+}