Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moving towards 1.1.0 #15

Closed
wants to merge 17 commits into from
Closed
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions tests/keys.gpg
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Comment: THESE PRIVATE KEYS ARE FOR TESTING, DO NOT IMPORT THEM!!

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
=+1Yx
-----END PGP PRIVATE KEY BLOCK-----
33 changes: 33 additions & 0 deletions tests/keys/test1.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Comment: NEVER USE THIS KEY, THIS KEY IS FOR TESTING

lQHYBFW5pC8BBADJRSpFia07qiS5lEOyBjAQzn16b4WR1iHktGAXV/LD4D3NE2Hc
i0HHs9CxJ1xqbAcblltxCb6kFq+kHA1gzeNYbUBmfu0XciU850s8JCtbWilKLKRD
cYX20Tgof5APqINEswfTytyVFSiK6bMlGMZjj9R2McoPPb20lbnwJ1npxwARAQAB
AAP8Cmg0tuwN9KGxKCf035E7xQT85WrN9SLup7hRFM0QYpniuC95GF1IJVE0f22o
mYVEvxqTDmyIbN7JJMZ8175toVEqT4TO/eND79PW+7MVINlmbz712xfPu2oVYGEe
Avx/jTcOpmKPHnY+F9z0InRnWAGzuxbHCXQs8ECREOW3NqkCAM5UULZ0LrXlvgOu
o8NHx17SW+t6kwGvZzJExFG7VvJvzuZdW/jm5u1mlRfS7G61F5DMSw7fmftUApKr
HlI9V20CAPm5D+y9ConXKUJ6XXLRIPDkl+B9duWVJ4t3FcTx8xcqHObj4ZEzhIC1
JFoYIEbRG0859+ZwJOrm+zAD8wYhwYMCAL4Ssmcy3BHcwCK7zzRopxhvfiN6KGAh
BzMy6oVKbp3khMYBDe4S5c2xcO70G2cvHNZf74476cvwhddDmSu7LtiibbQLWmV5
cGxlIFRlc3SIuAQTAQIAIgUCVbmkLwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgEC
F4AACgkQnAqeRfWkB0pGyQQAgmL0yxG8gz4dqtqc5Lp12jRXQb9/cKScYlD3ozSI
ZY5gxdMZgS8/wVWIFqW1b4m+DQBmaobNX0uIU2afvNsFxSyR2U67lU0dU/bxGrsG
G9cnkijV/JcNU2/OLDwsAC5KOcqScSJCstNweUj5npgpw/2ru89/NoY9nzyOqfSg
TIqdAdgEVbmkLwEEAMMButbh59FnHI4Z+1xBqHmJFD/H5+rD9Dr7pjbaXMfsJ6Cy
HXUMBqrZEfZpE9mfXMrmUaMB2EIVd0mb+mvUxqToCrR5/Kg2BaOr48IBzSm80HQv
HXa5i2ac2Qnf45APAhns2XIo2/haqQt94hbkmV4+90a4aA9dZCtvfap+y0wNABEB
AAEAA/kB3Uoemah9p3VN2YCTpFAP9hLNZ6P3ag9eIf+ik3S4IkagYhuR0yncJ85P
aLfxyHTavsLQjWkL0V3jhFwrpuw4Qp7i3HG6umoV87hWVXIE0HXOXhJmGrNzxINb
2HTdjo1q4oVC55UZIMO3RvPPt1AlRx67hXfi8nPqxVlfsrzeOQIA0DUHnnHPSJr7
JBrlNsUOqELQodEmUAw6+53+gTQfU1qHCqN2W5np7l9iu5Gq2UCxY3UEG+yPPQyD
WL3AP6UEOQIA78T/5kxeXgSsfbmE8DQFxoCRLqyykCax5EByku3yAmF/F/IOYyHU
dn9eVNnEaerng6EMkIkV9xCTuNtWb89OdQIAlRfXV/23R+krjbCzDkNNVag6l8d2
E0nG4k4uS6iazFcghnutTzcoKG1uMOMSlLJ11Q5m3g9ebEz8uUXeaT81bKIMiJ8E
GAECAAkFAlW5pC8CGwwACgkQnAqeRfWkB0rBhgP+LtZy+NiQGNSUZ2LxlYgwsbYT
jSOAOYwVODpaIAyTQzvCKxPhZM7RMUlWPpamZQrUofZTNmsu7Cnj5ThE9WgcsXPg
VIoxy7jXGU5g0TZuJXEsHV4jGYvIBfcY/R4LjTskLL20CX8EWIv9U59PY4lSV+mZ
nHv89db50/2kNSibsZU=
=VY60
-----END PGP PRIVATE KEY BLOCK-----
32 changes: 32 additions & 0 deletions tests/keys/test2.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----
Comment: NEVER USE THIS KEY, THIS KEY IS FOR TESTING

lQHYBFW5pF4BBADfRJzouz2MH3YZ7qTBSzfxzIHYrtfZoetG0rFp4B5FPNggXz0P
tDIVSqwpkb3Yp5PDWR0u/1RyEeSHh9YL2EMezpi8ZGQFn9Cjmkc48sluaSWLj5Cc
hedaCV/t5/IfvvsQdD8PyZGC4Os+nuwryUVM9Hc2UwShMEPNaBmhdFDXXwARAQAB
AAP8DeAsxEYGwDOgWmI7eQvcsTldhILxRURL4/3qKsNT/keWwwRIPjabujkG1BqL
qvBXPZfHOYmCzQgRpN6rTdcl7KF0pGCaksgY3KakiOp3/wNIe1RuN+bLj7fHCttT
PT9FNQKkqKdTGCXn3ViYTqDBuXmXSteel8IcIRjh8TyGBBECAOHeDNVzmEpn+6Ei
Womq7LWUQLKLaJkgEuhwJIJOQMTFbCBgyoWfdJVSke422V2TpYGPMbLCGxf/vttR
nCHWOfcCAP0NybCRjsrHE7v5982QTZQsP86Hmg9hnMahzygJyFF71LvZCP2Q6xj/
vNCInpgr84s+ulbiFWsM2+PEbkHes9kCAN0d2z67anUiMW/jBrmvQSYcEeCwX2Xn
OJzXZQ2l5GN49rVKoTXCx10kGPwozrJa3/hDprNZn0ibJl6GrhJe30mlWrQZT3Ro
ZXIgS2V5IGZvciBaZXlwbGUgVGVzdIi4BBMBAgAiBQJVuaReAhsDBgsJCAcDAgYV
CAIJCgsEFgIDAQIeAQIXgAAKCRAf9YefAE74fTswA/4h4b6XExYtim+xSRHkFbFx
QrL+vyqNu27ZXwimaZsSDOYpupp0wbB+vNde8SFMQfYmOK8dCrrNpVGf6Rc35WWK
LpsH5yYUkAMU8+kwRycb16FoGxQFTmR/FylBuFAh3PwzhlsCu77+Y3JX3S+Kkv+O
SD0C4PHoAXIJdXpNjEek1J0B2ARVuaReAQQAq8UgO4MmyqP8Qg07KWBNaE8wKEBa
tRxeGHIY9mubUwqK0GQxZoHSdCE7NOtE8z81VptJvtCfNlqtNualGwoV8KKby13a
TeIPZoTW0J3XyQvweCcBJlsbzv14MVnp89Qscs0lCLNftg4pGXxEuFJ5/swRInnR
88wCvq1t/4/rH1EAEQEAAQAD+wVm8hYxEB6iJOg6ZIyO9OxFhksTyA6HXX25E+gn
FvfX/mjip8uUpGbm1yb5Sb45NA8c2+dChilWVXmDLDjjGrC9I94qWtg+4b9ANImz
NzvMwqug4uFb1MhXpMdSxkAeKEhogXkp3i4Ck8F0eUI0ks8n7N5g+DAoQ0pPACQ1
auHJAgDFoSS+Fe0oCmlqylSQMfxTug1T4qJgGt6K7LnLkj8KlizccXXrF3KLFdh5
dzdXOtifbXBv3vyy0nlLkrA7CyCpAgDegLzcKPh5zpIjEHSRzxh4IIJSwNXV8Tiu
ZWcPtRsA1s34SukTyWeLvIo/T2YkpsDbXEGDvQOOUcgeECH5ZyppAf4pXfFUzfMx
NySYStM9CCIY6r+QnK3/UX5rlnbJu98h2w1wF0GtdIG3D0y2nPDUdCK9ejnClTam
GMG2cYTZnMzVn1mInwQYAQIACQUCVbmkXgIbDAAKCRAf9YefAE74fZ4oBACYkp4O
gsy+aMUejadahvm9+bfzqU1tQ9iWlG/9Xz9pjj5sJbOrHD7z0qRpLMYAZru2llgw
T7vdp9JzmUeTdGY7/4Ce8+rw6ZxRpGRBagdWFChgDbb0f+uT8xu3Ef+Fk4aOZ/IR
XCVN6qkCuKUdfQB6xMxKEQnL2wRruHuCFgk1Xw==
=gOA4
103 changes: 80 additions & 23 deletions tests/test_zeyple.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,87 @@
import unittest
from mock import Mock
import os
import subprocess
import shutil
import six
from six.moves.configparser import ConfigParser
import tempfile
from textwrap import dedent
from zeyple import zeyple

LINUS_ID = '79BE3E4300411886'
KEYS_FNAME = os.path.join(os.path.dirname(__file__), 'keys.gpg')
TEST1_ID = 'D6513C04E24C1F83'
TEST1_EMAIL = '[email protected]'
TEST2_ID = '0422F1C597FB1687'
TEST2_EMAIL = '[email protected]'

def is_encrypted(string):
return string.startswith(six.b('-----BEGIN PGP MESSAGE-----'))

class ZeypleTest(unittest.TestCase):
def setUp(self):
shutil.copyfile('tests/zeyple.conf', 'zeyple.conf')
os.system("gpg --recv-keys %s 2> /dev/null" % LINUS_ID)
self.zeyple = zeyple.Zeyple()
self.zeyple._send_message = Mock() # don't try to send emails
self.tmpdir = tempfile.mkdtemp()

def tearDown(self):
os.remove('zeyple.conf')
self.conffile = os.path.join(self.tmpdir, 'zeyple.conf')
self.homedir = os.path.join(self.tmpdir, 'gpg')
self.logfile = os.path.join(self.tmpdir, 'zeyple.log')

config = ConfigParser()

config.add_section('zeyple')
config.set('zeyple', 'log_file', self.logfile)
config.set('zeyple', 'add_header', 'true')

config.add_section('gpg')
config.set('gpg', 'home', self.homedir)

config.add_section('relay')
config.set('relay', 'host', 'example.net')
config.set('relay', 'port', '2525')

with open(self.conffile, 'w') as fp:
config.write(fp)

def test_config(self):
"""Parses the configuration file properly"""
os.mkdir(self.homedir, 0o700)
subprocess.check_call(
['gpg', '--homedir', self.homedir, '--import', KEYS_FNAME],
stderr=open('/dev/null'),
)

self.zeyple = zeyple.Zeyple(self.conffile)
self.zeyple._send_message = Mock() # don't try to send emails

def tearDown(self):
shutil.rmtree(self.tmpdir)

log_file = self.zeyple._config.get('zeyple', 'log_file')
assert log_file == '/tmp/zeyple.log'
def decrypt(self, data):
gpg = subprocess.Popen(
['gpg', '--homedir', self.homedir, '--decrypt'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
)
return gpg.communicate(data.encode('ascii'))[0]

def test_user_key(self):
"""Returns the right ID for the given email address"""

assert self.zeyple._user_key('[email protected]') is None

user_key = self.zeyple._user_key('[email protected]')
assert user_key == LINUS_ID
user_key = self.zeyple._user_key(TEST1_EMAIL)
assert user_key == TEST1_ID

def test_encrypt_with_plain_text(self):
"""Encrypts plain text"""

encrypted = self.zeyple._encrypt(
'The key is under the carpet.', [LINUS_ID]
encrypted = self.zeyple.encrypt(
'The key is under the carpet.', [TEST1_ID]
)
assert is_encrypted(encrypted)

def test_encrypt_with_unicode(self):
"""Encrypts Unicode text"""

encrypted = self.zeyple._encrypt('héhé', [LINUS_ID])
encrypted = self.zeyple.encrypt('héhé', [TEST1_ID])
assert is_encrypted(encrypted)

def test_process_message_with_simple_message(self):
Expand All @@ -58,14 +93,14 @@ def test_process_message_with_simple_message(self):
emails = self.zeyple.process_message(dedent("""\
Received: by example.org (Postfix, from userid 0)
id DD3B67981178; Thu, 6 Sep 2012 23:35:37 +0000 (UTC)
To: [email protected]
To: """ + TEST1_EMAIL + """
Subject: Hello with Unicode héüøœ©ßð®å¥¹²æ¿áßö«ç
Message-Id: <[email protected]>
Date: Thu, 6 Sep 2012 23:35:37 +0000 (UTC)
From: [email protected] (root)

test ðßïð
"""), ["[email protected]"])
"""), [TEST1_EMAIL])

assert emails[0]['X-Zeyple'] is not None
assert is_encrypted(emails[0].get_payload().encode('utf-8'))
Expand All @@ -78,7 +113,7 @@ def test_process_message_with_multipart_message(self):
Received: by example.org (Postfix, from userid 0)
id CE9876C78258; Sat, 8 Sep 2012 13:00:18 +0000 (UTC)
Date: Sat, 08 Sep 2012 13:00:18 +0000
To: [email protected]
To: """ + TEST1_EMAIL + """
Subject: test
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Expand Down Expand Up @@ -106,10 +141,32 @@ def test_process_message_with_multipart_message(self):
Yy90ZXN0JyB3d3ctZGF0YQo=

--=_504b4162.Gyt30puFsMOHWjpCATT1XRbWoYI1iR/sT4UX78zEEMJbxu+h--
"""), ["[email protected]"])
"""), [TEST1_EMAIL])

assert emails[0]['X-Zeyple'] is not None
assert emails[0].is_multipart()
for part in emails[0].walk():
assert not is_encrypted(part.as_string().encode('utf-8'))
assert not emails[0].is_multipart() # GPG encrypt the multipart
assert is_encrypted(emails[0].get_payload().encode('utf-8'))

def test_process_message_with_multiple_recipients(self):
"""Encrypt a message with multiple recipients"""

content = "Content"

emails = self.zeyple.process_message(dedent("""\
Received: by example.org (Postfix, from userid 0)
id DD3B67981178; Thu, 6 Sep 2012 23:35:37 +0000 (UTC)
To: """ + ', '.join([TEST1_EMAIL, TEST2_EMAIL]) + """
Subject: もしもし with Unicode
Message-Id: <[email protected]>
Date: Thu, 6 Sep 2012 23:35:37 +0000 (UTC)
From: [email protected] (root)

""" + content + """
"""), [TEST1_EMAIL, TEST2_EMAIL])

assert len(emails) == 2 # It had two recipients

for m in emails:
assert m['X-Zeyple'] is not None
payload = self.decrypt(m.get_payload()).strip()
assert payload == six.b(content)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it'd be great to replace assert is_encrypted(...) with assert self.decrypt(...) == plain_text_content for all tests now that we have a way to decrypt messages. is_encrypted() was to make sure the email was actually encrypted but if we could both check that it is encrypted and properly decryptable, it's even better. Thoughts?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right know, self.decrypt doesn't play well with non-ascii characters, and I haven't tried to figure it out yet. This is why the test I wrote use ascii characters for now. But yeah, that sounds like the right way to go. I added it to the todolist of this pull request.

11 changes: 0 additions & 11 deletions tests/zeyple.conf

This file was deleted.

Loading