diff options
-rw-r--r-- | service/pixelated/adapter/mail.py | 8 | ||||
-rw-r--r-- | service/test/unit/adapter/mail_test.py | 2 | ||||
-rw-r--r-- | web-ui/app/js/mail_view/ui/mail_view.js | 4 | ||||
-rw-r--r-- | web-ui/test/spec/mail_view/ui/mail_view.spec.js | 6 |
4 files changed, 18 insertions, 2 deletions
diff --git a/service/pixelated/adapter/mail.py b/service/pixelated/adapter/mail.py index 25e86cf3..946b921d 100644 --- a/service/pixelated/adapter/mail.py +++ b/service/pixelated/adapter/mail.py @@ -254,6 +254,8 @@ class PixelatedMail(Mail): casing = {"imprints": [], "locks": []} if self.signed: casing["imprints"].append({"state": "valid", "seal": {"validity": "valid"}}) + elif self.signed is None: + casing["imprints"].append({"state": "no_signature_information"}) if self.encrypted: casing["locks"].append({"state": "valid"}) @@ -322,7 +324,11 @@ class PixelatedMail(Mail): @property def signed(self): - return self.hdoc.content["headers"].get("X-Leap-Signature", "").startswith("valid") + signature = self.hdoc.content["headers"].get("X-Leap-Signature", None) + if signature is None: + return None + else: + return signature.startswith("valid") @property def encrypted(self): diff --git a/service/test/unit/adapter/mail_test.py b/service/test/unit/adapter/mail_test.py index 332fad8a..10886a27 100644 --- a/service/test/unit/adapter/mail_test.py +++ b/service/test/unit/adapter/mail_test.py @@ -92,7 +92,7 @@ class TestPixelatedMail(unittest.TestCase): }, 'ident': 'chash', 'mailbox': 'inbox', - 'security_casing': {'imprints': [], 'locks': []}, + 'security_casing': {'imprints': [{'state': 'no_signature_information'}], 'locks': []}, 'status': ['recent'], 'tags': [], 'attachments': [], diff --git a/web-ui/app/js/mail_view/ui/mail_view.js b/web-ui/app/js/mail_view/ui/mail_view.js index 214b85d8..1d3fa173 100644 --- a/web-ui/app/js/mail_view/ui/mail_view.js +++ b/web-ui/app/js/mail_view/ui/mail_view.js @@ -120,6 +120,10 @@ define( this.checkSigned = function(mail) { if(_.isEmpty(mail.security_casing.imprints)) { return 'not-signed'; } + if(_.any(mail.security_casing.imprints, function(imprint) { return imprint.state === 'no_signature_information'; })) { + return ''; + } + var status = ['signed']; if(_.any(mail.security_casing.imprints, function(imprint) { return imprint.state === 'from_revoked'; })) { diff --git a/web-ui/test/spec/mail_view/ui/mail_view.spec.js b/web-ui/test/spec/mail_view/ui/mail_view.spec.js index 1cc7eff0..bb0c7851 100644 --- a/web-ui/test/spec/mail_view/ui/mail_view.spec.js +++ b/web-ui/test/spec/mail_view/ui/mail_view.spec.js @@ -136,6 +136,12 @@ describeComponent('mail_view/ui/mail_view', function () { expect(this.component.checkSigned(email)).toEqual('not-signed'); }); + it('assumes that there is no signature info to show', function() { + var email = testData; + email.security_casing = {imprints: [{state: 'no_signature_information'}]}; + expect(this.component.checkSigned(email)).toEqual(''); + }); + it('shows that mail is encrypted if it is', function() { spyOn(this.component, 'checkEncrypted').and.returnValue('encrypted'); this.component.displayMail({}, testData); |