Add 'skip_author_verification' possibility to diaspora receive protocol, f or testing

merge-requests/130/head
Jason Robinson 2015-07-06 22:58:54 +03:00
rodzic d2c565bc24
commit a568bd6a9e
2 zmienionych plików z 13 dodań i 6 usunięć

Wyświetl plik

@ -32,8 +32,10 @@ class Protocol(BaseProtocol):
Mostly taken from Pyaspora (https://github.com/lukeross/pyaspora).
"""
def receive(self, payload, user=None, sender_key_fetcher=None, *args, **kwargs):
"""Receive a payload."""
def receive(self, payload, user=None, sender_key_fetcher=None, skip_author_verification=False, *args, **kwargs):
"""Receive a payload.
For testing purposes, `skip_author_verification` can be passed. Authorship will not be verified."""
self.user = user
self.get_contact_key = sender_key_fetcher
xml = unquote_plus(payload)
@ -41,9 +43,11 @@ class Protocol(BaseProtocol):
self.doc = etree.fromstring(xml)
self.find_header()
sender = self.get_sender()
self.sender_key = self.get_contact_key(sender)
if not self.sender_key:
raise NoSenderKeyFoundError("Could not find a sender contact to retrieve key")
self.skip_author_verification = skip_author_verification
if not self.skip_author_verification:
self.sender_key = self.get_contact_key(sender)
if not self.sender_key:
raise NoSenderKeyFoundError("Could not find a sender contact to retrieve key")
content = self.get_message_content()
return sender, content
@ -75,7 +79,9 @@ class Protocol(BaseProtocol):
".//{http://salmon-protocol.org/ns/magic-env}data").text
sig = self.doc.find(
".//{http://salmon-protocol.org/ns/magic-env}sig").text
self.verify_signature(self.sender_key, body, sig.encode('ascii'))
if not self.skip_author_verification:
self.verify_signature(self.sender_key, body, sig.encode('ascii'))
if self.encrypted:
inner_iv = b64decode(self.header.find(".//iv").text.encode("ascii"))

Wyświetl plik

@ -70,6 +70,7 @@ class TestDiasporaProtocol(object):
protocol = self.init_protocol()
protocol.doc = self.get_unencrypted_doc()
protocol.verify_signature = self.mock_verify_signature
protocol.skip_author_verification = False
protocol.sender_key = "foobar"
protocol.encrypted = False
body = protocol.get_message_content()