Verified Commit 99b05dca authored by Baptiste Beauplat's avatar Baptiste Beauplat
Browse files

Make sure that we are using the text/plain part of the multipart email for changes extraction

parent 0444ee25
......@@ -225,11 +225,19 @@ def mark_packages_as_uploaded(packages, debian=False):
def convert_mail_to_changes(mail):
changes = None
if not mail:
return
if mail.is_multipart():
changes = mail.get_payload()[0].get_payload(decode=True)
for part in mail.get_payload():
if part.get_content_type() == 'text/plain':
changes = part.get_payload(decode=True)
break
if not changes:
raise Exception('Could not find a text/plain multipart')
else:
changes = mail.get_payload(decode=True)
......
......@@ -35,7 +35,7 @@ Date: Fri, 19 Jul 2019 08:49:25 +0000
Received-SPF: none client-ip=2001:41b8:202:deb:6564:a62:52c3:4b72; envelope-from=envelope@ftp-master.debian.org; helo=mailly.debian.org
--===============8966746602356696880==
Content-Type: text/plain; charset="utf-8"
Content-Type: {{ args.content_type }}; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
-----BEGIN PGP SIGNED MESSAGE-----
......
......@@ -139,7 +139,8 @@ class TestCronjobRemoveOldUploads(TestController):
def remove_upload_accepted(self, uploaded, down=False, garbage=False,
handler=None,
template='test-upload-accepted.html'):
template='test-upload-accepted.html',
content_type='text/plain'):
removed_packages = (
('tmux', '1.0.0', 'unstable'),
('tmux', '1.0.0', 'UNRELEASED'),
......@@ -154,7 +155,8 @@ class TestCronjobRemoveOldUploads(TestController):
FTP_MASTER_NEW_PACKAGES_URL='http://localhost:'
f'{httpd.port}'):
remove_uploaded_packages(FakeNNTPClient(uploaded, down,
garbage, template))
garbage, template,
content_type))
def test_package_in_new_server_error(self):
self._setup_packages()
......@@ -193,6 +195,15 @@ class TestCronjobRemoveOldUploads(TestController):
self._expect_package_removal(removed_packages)
self._assert_cronjob_success()
def test_remove_uploads_multipart_no_plain(self):
self._setup_packages()
self.remove_upload_accepted(
[('zsh', '1.0.0', 'unstable')],
template='test-upload-accepted-multipart.html',
content_type='text/html'
)
self._assert_cronjob_success()
def test_remove_uploads_server_down(self):
self._setup_packages()
self.remove_upload_accepted([], True)
......@@ -277,12 +288,14 @@ class FTPMasterPackageInNewErrorHTTPHandler(BaseHTTPRequestHandler):
class FakeNNTPClient():
def __init__(self, uploads, down=False, garbage=False,
template='test-upload-accepted.html'):
template='test-upload-accepted.html',
content_type='text/plain'):
self.uploads = uploads
self.iter = 0
self.down = down
self.garbage = garbage
self.template = template
self.content_type = content_type
def connect_to_server(self):
return not self.down
......@@ -308,6 +321,7 @@ class FakeNNTPClient():
'name': upload[0],
'version': upload[1],
'distrib': upload[2],
'content_type': self.content_type,
}))
body['X-Debexpo-Message-Number'] = 42
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment