summaryrefslogtreecommitdiff
path: root/wrappers/swift/Tests
diff options
context:
space:
mode:
authorStevenWdV <stevenwdv@gmail.com>2021-12-14 15:56:10 +0100
committerStevenWdV <stevenwdv@gmail.com>2021-12-14 15:56:10 +0100
commitae826fde04191d26af68b898cf4b2f537d24a8ec (patch)
treec41943907e6c880a4254106942fc2c399c462016 /wrappers/swift/Tests
parentd9953dcc09ce61e249e40857bbf5cb98e0bb1fbf (diff)
Add Swift wrapper, support more platforms in Makefile
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)});
+ }
+}