1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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)/public.key")
.components(separatedBy: .newlines).last(where: { !$0.isEmpty })!)
}
func testValid() throws {
try Verify(
signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/server_list.json.minisig")),
signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/server_list.json")),
expectedFileName: "server_list.json",
minSignTime: Date(timeIntervalSince1970: 10))
}
func testInvalidSignature() throws {
XCTAssertThrowsError(
try Verify(
signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/random.txt")),
signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/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)/server_list.json.wrong_key.minisig")),
signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/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)/server_list.json.minisig")),
signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/server_list.json")),
expectedFileName: "server_list.json",
minSignTime: Date(timeIntervalSince1970: 11)),
"", {err in XCTAssertEqual(err as? VerifyErr, VerifyErr.ErrTooOld)});
}
func testUnknownExpectedFile() throws {
XCTAssertThrowsError(
try Verify(
signature: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/other_list.json.minisig")),
signedJson: try! Data(contentsOf: URL(fileURLWithPath: "\(EduVpnCommonTests.testDataDir)/other_list.json")),
expectedFileName: "other_list.json",
minSignTime: Date(timeIntervalSince1970: 0)),
"", {err in XCTAssertEqual(err as? VerifyErr, VerifyErr.ErrUnknownExpectedFileName)});
}
}
|