From ba8afbbe4dc72c76e34fe53156dac7d7fedc1954 Mon Sep 17 00:00:00 2001 From: Ivan Date: Fri, 26 Nov 2021 21:48:43 +0300 Subject: [PATCH 1/2] Highlight mixed or partial signatures --- .../Message Provider/MessageService.swift | 18 +++++++++++++----- .../Resources/en.lproj/Localizable.strings | 2 ++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift b/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift index fb1251f65..ec03e4489 100644 --- a/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift +++ b/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift @@ -22,12 +22,14 @@ struct ProcessedMessage { } enum MessageSignature: Hashable { - case good, unsigned, error(String), missingPubkey(String), bad, pending + case good, goodMixed, unsigned, error(String), missingPubkey(String), partial, bad, pending var message: String { switch self { case .good: return "message_signed".localized + case .goodMixed: + return "message_signature_good_mixed".localized case .unsigned: return "message_not_signed".localized case .error(let message): @@ -35,6 +37,8 @@ struct ProcessedMessage { case .missingPubkey(let longid): let message = "message_missing_pubkey".localizeWithArguments(longid) return "message_signature_verify_error".localizeWithArguments(message) + case .partial: + return "message_signature_partial".localized case .bad: return "message_bad_signature".localized case .pending: @@ -44,9 +48,9 @@ struct ProcessedMessage { var icon: String { switch self { - case .good: + case .good, .goodMixed: return "lock" - case .error, .missingPubkey: + case .error, .missingPubkey, .partial: return "exclamationmark.triangle" case .unsigned, .bad: return "xmark" @@ -57,9 +61,9 @@ struct ProcessedMessage { var color: UIColor { switch self { - case .good: + case .good, .goodMixed: return .main - case .error, .missingPubkey: + case .error, .missingPubkey, .partial: return .warningColor case .unsigned, .bad: return .errorColor @@ -280,6 +284,10 @@ extension MessageService { guard signature.match == true else { return .bad } + guard signature.partial != true else { return .partial } + + guard signature.mixed != true else { return .goodMixed } + return .good } } diff --git a/FlowCrypt/Resources/en.lproj/Localizable.strings b/FlowCrypt/Resources/en.lproj/Localizable.strings index b04e574a5..8e40c700f 100644 --- a/FlowCrypt/Resources/en.lproj/Localizable.strings +++ b/FlowCrypt/Resources/en.lproj/Localizable.strings @@ -33,8 +33,10 @@ "message_encrypted" = "encrypted"; "message_not_encrypted" = "not encrypted"; "message_signed" = "signed"; +"message_signature_good_mixed" = "signed with mixed keys"; "message_not_signed" = "not signed"; "message_missing_pubkey" = "no public key %@"; +"message_signature_partial" = "only partially signed"; "message_signature_verify_error" = "cannot verify signature: %@"; "message_bad_signature" = "bad signature"; "message_signature_pending" = "verifying signature..."; From a015aaf5eea51785c06420969947173627dea789 Mon Sep 17 00:00:00 2001 From: Ivan Date: Mon, 29 Nov 2021 21:52:09 +0300 Subject: [PATCH 2/2] UI test --- .../specs/inbox/CheckAllEmailSignatureCases.spec.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/appium/tests/specs/inbox/CheckAllEmailSignatureCases.spec.ts b/appium/tests/specs/inbox/CheckAllEmailSignatureCases.spec.ts index e3af10387..491425d1b 100644 --- a/appium/tests/specs/inbox/CheckAllEmailSignatureCases.spec.ts +++ b/appium/tests/specs/inbox/CheckAllEmailSignatureCases.spec.ts @@ -71,5 +71,15 @@ describe('INBOX: ', () => { await EmailScreen.checkEncryptionBadge('not encrypted'); await EmailScreen.checkSignatureBadge('bad signature'); await EmailScreen.clickBackButton(); + + await SearchScreen.clickBackButton(); + + // partially signed only message + await MailFolderScreen.clickSearchButton(); + await SearchScreen.searchAndClickEmailBySubject('Partially signed only message'); + + await EmailScreen.checkEncryptionBadge('not encrypted'); + await EmailScreen.checkSignatureBadge('only partially signed'); + await EmailScreen.clickBackButton(); }); });