summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/pixelated/adapter/mail.py8
-rw-r--r--service/test/unit/adapter/mail_test.py2
-rw-r--r--web-ui/app/js/mail_view/ui/mail_view.js4
-rw-r--r--web-ui/test/spec/mail_view/ui/mail_view.spec.js6
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);