email2pdf/tests/Subprocess/test_Subprocess_Basic.py

195 lines
8.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from email.message import Message
import os
import tempfile
from tests.BaseTestClasses import Email2PDFTestCase
class TestBasic(Email2PDFTestCase):
def setUp(self):
super(TestBasic, self).setUp()
self.msg = Message()
def test_simple(self):
self.addHeaders()
(rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_simple_with_explicit_stdin(self):
self.addHeaders()
(rc, output, error) = self.invokeAsSubprocess(extraParams=['-i-'])
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_help(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--help'], expectOutput=True)
self.assertEqual(0, rc)
self.assertRegex(output, 'usage:')
self.assertEqual(error, '')
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_invalid_option(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--invalid-option'])
self.assertEqual(2, rc)
self.assertRegex(error, 'ERROR: unrecognized.*')
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_dont_print_body(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--no-body'])
self.assertEqual(1, rc)
self.assertFalse(self.existsByTime())
self.assertRegex(error, "body.*any.*attachments")
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
self.assertTrue(self.existsByTimeOriginal())
self.assertValidOriginalFileContents()
def test_dont_print_body_mostly_hide_warnings(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--no-body', '--mostly-hide-warnings'])
self.assertEqual(0, rc)
self.assertFalse(self.existsByTime())
self.assertEqual('', error)
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
self.assertTrue(self.existsByTimeOriginal())
self.assertValidOriginalFileContents()
def test_no_message_headers(self):
(rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_no_message_headers_mostly_hide_warnings(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--mostly-hide-warnings'])
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_withinputfile(self):
self.addHeaders()
(rc, output, error) = self.invokeAsSubprocess(inputFile=True)
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_nosubject(self):
self.addHeaders(Email2PDFTestCase.DEFAULT_FROM, Email2PDFTestCase.DEFAULT_TO, None)
(rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent(self):
self.addHeaders()
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent_upsidedown(self):
self.addHeaders()
self.setPlainContent("ɯɐɹƃoɹd ɟpdᄅlᴉɐɯǝ ǝɥʇ ɟo ʇsǝʇ ɐ sᴉ sᴉɥʇ ollǝH")
(rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc)
self.assertTrue(self.existsByTime())
self.assertEqual('', error)
self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd ɟpdᄅlᴉɐɯǝ ǝɥʇ ɟo ʇsǝʇ ɐ sᴉ sᴉɥʇ ollǝH")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent_poundsign_iso88591(self):
self.addHeaders()
path = os.path.join(self.examineDir, "plaincontent_poundsign_iso88591.pdf")
self.setPlainContent("Hello - this email costs \xa35!", charset="ISO-8859-1")
(rc, output, error) = self.invokeAsSubprocess(outputFile=path)
self.assertEqual(0, rc)
self.assertEqual('', error)
self.assertTrue(os.path.exists(path))
self.assertRegex(self.getPDFText(path), "Hello - this email costs \xa35!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent_notrailingslash(self):
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess(outputDirectory="/tmp")
self.assertEqual(0, rc)
self.assertEqual('', error)
self.assertTrue(self.existsByTime("/tmp"))
self.assertRegex(self.getPDFText(self.getTimedFilename("/tmp/")), "Hello!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent_trailingslash(self):
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess(outputDirectory="/tmp/")
self.assertEqual(0, rc)
self.assertEqual('', error)
self.assertTrue(self.existsByTime("/tmp/"))
self.assertRegex(self.getPDFText(self.getTimedFilename("/tmp/")), "Hello!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent_outputfileoverrides(self):
filename = os.path.join(self.examineDir, "outputFileOverrides.pdf")
with tempfile.TemporaryDirectory() as pathname:
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess(outputDirectory=pathname, outputFile=filename)
self.assertEqual(0, rc)
self.assertEqual('', error)
self.assertFalse(self.existsByTime(pathname))
self.assertTrue(os.path.exists(filename))
self.assertRegex(self.getPDFText(filename), "Hello!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_plaincontent_fileexist(self):
self.setPlainContent("Hello!")
with tempfile.NamedTemporaryFile() as tmpfile:
(rc, output, error) = self.invokeAsSubprocess(outputFile=tmpfile.name, okToExist=True)
self.assertEqual(2, rc)
self.assertRegex(error, "file.*exist")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_verbose(self):
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess(extraParams=['-v'])
self.assertEqual(0, rc)
self.assertNotEqual('', error)
self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())
def test_veryverbose(self):
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess(extraParams=['-vv'])
self.assertEqual(0, rc)
self.assertNotEqual('', error)
self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
self.assertFalse(self.existsByTimeOriginal())