aboutsummaryrefslogtreecommitdiffstats
path: root/src/m_email/test/EMailVerifyUnificationTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/m_email/test/EMailVerifyUnificationTest.cpp')
-rw-r--r--src/m_email/test/EMailVerifyUnificationTest.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/m_email/test/EMailVerifyUnificationTest.cpp b/src/m_email/test/EMailVerifyUnificationTest.cpp
index fa10836..0eb5690 100644
--- a/src/m_email/test/EMailVerifyUnificationTest.cpp
+++ b/src/m_email/test/EMailVerifyUnificationTest.cpp
@@ -362,6 +362,26 @@ TEST(VerifyPayloadTest, AResultSurvivesTheTripToThePage) {
EXPECT_TRUE(VerificationMatchesSource(decoded, raw));
}
+TEST(VerifyPayloadTest, AnUnauthorizedKeyVerdictSurvivesTheTrip) {
+ // The host reports validity 10 for a valid signature by a key its
+ // certificate does not authorize. That verdict must reach the page as
+ // itself, not as "bad".
+ const auto raw = SignedMessage("Content-Type: text/plain\r\n\r\nhello");
+
+ Reset();
+ Get().verify_info_json.append(SignatureJson(10));
+
+ EMailVerificationResult verified;
+ QString error;
+ ASSERT_EQ(VerifyEMLMessage(0, raw, verified, error), kSUCCESS);
+ EXPECT_EQ(verified.overall, EMailBadgeState::kSIGNED_UNAUTHORIZED_KEY);
+
+ EMailVerificationResult decoded;
+ ASSERT_TRUE(
+ DecodeVerificationPayload(EncodeVerificationPayload(verified), decoded));
+ EXPECT_EQ(decoded.overall, EMailBadgeState::kSIGNED_UNAUTHORIZED_KEY);
+}
+
TEST(VerifyPayloadTest, APayloadFromAnotherSchemaIsRefused) {
// Refused rather than half-read. The states are written as names precisely
// because their numbering changes when one is inserted in severity order,