From 68dd60fb8edbc30cb268a0555933d80c28b27216 Mon Sep 17 00:00:00 2001 From: Danny Moesch Date: Sat, 8 Dec 2018 00:56:22 +0100 Subject: [PATCH] Introduce utility methods to test for unknowns and OTP keywords --- passKit/Models/Password.swift | 4 ++-- passKit/Parser/Constants.swift | 10 +++++++++- passKitTests/Parser/ConstantsTest.swift | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/passKit/Models/Password.swift b/passKit/Models/Password.swift index e885978..dc3e50b 100644 --- a/passKit/Models/Password.swift +++ b/passKit/Models/Password.swift @@ -112,8 +112,8 @@ public class Password { return title != Constants.USERNAME_KEYWORD && title != Constants.LOGIN_KEYWORD && title != Constants.PASSWORD_KEYWORD - && (!field.title.hasPrefix(Constants.UNKNOWN) || !SharedDefaults[.isHideUnknownOn]) - && (!Constants.OTP_KEYWORDS.contains(title) || !SharedDefaults[.isHideOTPOn]) + && (!Constants.isUnknown(title) || !SharedDefaults[.isHideUnknownOn]) + && (!Constants.isOtpKeyword(title) || !SharedDefaults[.isHideOTPOn]) } } diff --git a/passKit/Parser/Constants.swift b/passKit/Parser/Constants.swift index c896bd9..da50e22 100644 --- a/passKit/Parser/Constants.swift +++ b/passKit/Parser/Constants.swift @@ -49,7 +49,15 @@ public struct Constants { public static func isOtpRelated(line: String) -> Bool { let (key, _) = Parser.getKeyValuePair(from: line) - return OTP_KEYWORDS.contains(key ?? "") + return key != nil && isOtpKeyword(key!) + } + + static func isOtpKeyword(_ keyword: String) -> Bool { + return OTP_KEYWORDS.contains(keyword.lowercased()) + } + + static func isUnknown(_ string: String) -> Bool { + return string.starts(with: UNKNOWN) } static func unknown(_ number: UInt) -> String { diff --git a/passKitTests/Parser/ConstantsTest.swift b/passKitTests/Parser/ConstantsTest.swift index 809e347..9c9208d 100644 --- a/passKitTests/Parser/ConstantsTest.swift +++ b/passKitTests/Parser/ConstantsTest.swift @@ -19,6 +19,20 @@ class ConstantsTest: XCTestCase { XCTAssertFalse(Constants.isOtpRelated(line: "otp")) } + func testIsOtpKeyword() { + XCTAssertTrue(Constants.isOtpKeyword("otpauth")) + XCTAssertTrue(Constants.isOtpKeyword("oTP_DigITS")) + XCTAssertFalse(Constants.isOtpKeyword("otp")) + XCTAssertFalse(Constants.isOtpKeyword("no keyword")) + } + + func testIsUnknown() { + XCTAssertTrue(Constants.isUnknown("unknown")) + XCTAssertTrue(Constants.isUnknown("unknown string")) + XCTAssertFalse(Constants.isUnknown("otp")) + XCTAssertFalse(Constants.isUnknown("Unknown")) + } + func testUnknown() { XCTAssertEqual(Constants.unknown(0), "unknown 0") XCTAssertEqual(Constants.unknown(10), "unknown 10")