Combine key scanning logic in one class

This commit is contained in:
Danny Moesch 2020-08-26 21:29:05 +02:00 committed by Mingshen Sun
parent edd7398cd4
commit 078503f249
10 changed files with 405 additions and 112 deletions

View file

@ -0,0 +1,51 @@
//
// QRKeyScannerTest.swift
// passTests
//
// Created by Danny Moesch on 21.08.20.
// Copyright © 2020 Bob Sun. All rights reserved.
//
import XCTest
@testable import Pass
class QRKeyScannerTest: XCTestCase {
let header = "-----BEGIN PGP PUBLIC KEY BLOCK-----"
let body = "key body"
let footer = "-----END PGP PUBLIC KEY BLOCK-----"
let privateHeader = "-----BEGIN PGP PRIVATE KEY BLOCK-----"
var scanner = QRKeyScanner(keyType: .pgpPublic)
func testAddHeaderTwice() {
XCTAssertEqual(scanner.add(segment: header), .scanned(1))
XCTAssertEqual(scanner.add(segment: header), .scanned(1))
XCTAssertEqual(scanner.scannedKey, header)
}
func testAddBodyTwice() {
XCTAssertEqual(scanner.add(segment: header), .scanned(1))
XCTAssertEqual(scanner.add(segment: body), .scanned(2))
XCTAssertEqual(scanner.add(segment: body), .scanned(2))
XCTAssertEqual(scanner.scannedKey, header + body)
}
func testAddCompleteBlock() {
XCTAssertEqual(scanner.add(segment: header), .scanned(1))
XCTAssertEqual(scanner.add(segment: footer), .completed)
XCTAssertEqual(scanner.scannedKey, header + footer)
}
func testCounterKeyType() {
XCTAssertEqual(scanner.add(segment: privateHeader), .wrongKeyType(.pgpPrivate))
XCTAssertEqual(scanner.add(segment: privateHeader), .wrongKeyType(.pgpPrivate))
XCTAssertTrue(scanner.scannedKey.isEmpty)
}
func testUnknownKeyType() {
XCTAssertEqual(scanner.add(segment: body), .lookingForStart)
XCTAssertEqual(scanner.add(segment: body), .lookingForStart)
XCTAssertTrue(scanner.scannedKey.isEmpty)
}
}

View file

@ -0,0 +1,43 @@
//
// ScannableKeyTypeTest.swift
// passTests
//
// Created by Danny Moesch on 21.08.20.
// Copyright © 2020 Bob Sun. All rights reserved.
//
import XCTest
@testable import Pass
class ScannableKeyTypeTest: XCTestCase {
func testPGPPublicKey() {
let type = ScannableKeyType.pgpPublic
XCTAssertEqual(type.visibility, "Public")
XCTAssertEqual(type.headerStart, "-----BEGIN PGP PUBLIC KEY BLOCK-----")
XCTAssertEqual(type.footerStart, "-----END PGP PUBLIC")
XCTAssertEqual(type.footerEnd, "KEY BLOCK-----")
XCTAssertEqual(type.counterType, .pgpPrivate)
}
func testPGPPrivateKey() {
let type = ScannableKeyType.pgpPrivate
XCTAssertEqual(type.visibility, "Private")
XCTAssertEqual(type.headerStart, "-----BEGIN PGP PRIVATE KEY BLOCK-----")
XCTAssertEqual(type.footerStart, "-----END PGP PRIVATE")
XCTAssertEqual(type.footerEnd, "KEY BLOCK-----")
XCTAssertEqual(type.counterType, .pgpPublic)
}
func testSSHPrivateKey() {
let type = ScannableKeyType.sshPrivate
XCTAssertEqual(type.visibility, "Private")
XCTAssertEqual(type.headerStart, "-----BEGIN")
XCTAssertEqual(type.footerStart, "-----END")
XCTAssertEqual(type.footerEnd, "KEY-----")
XCTAssertNil(type.counterType)
}
}