Beispiel #1
0
    def test_attach_file_without_content_id(self):
        msg = Message(to='me', text='hi')
        with patch(open_label) as mock_open:
            mock_open.return_value.__enter__ = lambda s: s
            mock_open.return_value.__exit__ = MagicMock(spec=file)
            mock_open.return_value.read.return_value = b'x'

            msg.attach_file('dummy.png')
            self.assertEqual('ContentID' in msg.attachments[0], False)
Beispiel #2
0
    def test_attach_file_without_content_id(self):
        msg = Message(to='me', text='hi')
        with patch(open_label) as mock_open:
            mock_open.return_value.__enter__ = lambda s: s
            mock_open.return_value.__exit__ = MagicMock(spec=file)
            mock_open.return_value.read.return_value = b'x'

            msg.attach_file('dummy.png')
            self.assertEqual('ContentID' in msg.attachments[0], False)
Beispiel #3
0
 def test_api_key_on_send(self, mock_request):
     mock_request.return_value = self.mock_response('')
     msg = Message(to='me', text='hi')
     sender = Sender(message=msg)
     url = sender._get_api_url(secure=True)
     data = msg.json()
     headers = sender._get_headers(api_key=POSTMARK_API_TEST_KEY)
     sender.send(api_key=POSTMARK_API_TEST_KEY)
     mock_request.assert_called_with('POST', url, data=data,
                                     headers=headers)
Beispiel #4
0
 def test_api_key_on_send(self, mock_request):
     mock_request.return_value = self.mock_response('')
     msg = Message(to='me', text='hi')
     sender = Sender(message=msg)
     url = sender._get_api_url(secure=True)
     data = msg.json()
     headers = sender._get_headers(api_key=POSTMARK_API_TEST_KEY)
     sender.send(api_key=POSTMARK_API_TEST_KEY)
     mock_request.assert_called_with('POST', url, data=data,
                                     headers=headers)
Beispiel #5
0
 def test_attach_binary(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     msg.attach_binary(data, name)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': 'application/pdf',
         'Name': name
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #6
0
 def test_attach_binary(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     msg.attach_binary(data, name)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': 'application/pdf',
         'Name': name
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #7
0
 def test_attach_binary_default_content_type(self, mock_type):
     mock_type.return_value = 'application/octet-stream'
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.bin'
     msg.attach_binary(data, name)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': 'application/octet-stream',
         'Name': name
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #8
0
 def test_attach_binary_content_type_override(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     content_type = 'xcascasc'
     name = 'test.pdf'
     msg.attach_binary(data, name, content_type=content_type)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': content_type,
         'Name': name
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #9
0
 def test_detect_content_type(self):
     m = Message()
     # No extension error
     self.assertRaises(MessageError, m._detect_content_type, 'xxx')
     # Blacklisted extension error
     self.assertRaises(MessageError, m._detect_content_type, 'xxx.bin')
     # Unknown extension returns default content type
     ext = 'xcacaswcawc'
     self.assertEqual(m._detect_content_type('xxx.' + ext),
                      m._default_content_type)
     # Known extension returns correct mimetype
     self.assertEqual(m._detect_content_type('xxx.png'), 'image/png')
Beispiel #10
0
 def test_attach_binary_content_type_override(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     content_type = 'xcascasc'
     name = 'test.pdf'
     msg.attach_binary(data, name, content_type=content_type)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': content_type,
         'Name': name
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #11
0
 def test_detect_content_type(self):
     m = Message()
     # No extension error
     self.assertRaises(MessageError, m._detect_content_type, 'xxx')
     # Blacklisted extension error
     self.assertRaises(MessageError, m._detect_content_type, 'xxx.bin')
     # Unknown extension returns default content type
     ext = 'xcacaswcawc'
     self.assertEqual(m._detect_content_type('xxx.' + ext),
                      m._default_content_type)
     # Known extension returns correct mimetype
     self.assertEqual(m._detect_content_type('xxx.png'), 'image/png')
Beispiel #12
0
 def test_attach_binary_default_content_type(self, mock_type):
     mock_type.return_value = 'application/octet-stream'
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.bin'
     msg.attach_binary(data, name)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': 'application/octet-stream',
         'Name': name
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #13
0
 def test_attach_binary_with_content_id(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     content_type = 'image/png'
     content_id = 'cid:{0}@example.com'.format(uuid.uuid4())
     msg.attach_binary(data, name, content_type=content_type,
                       content_id=content_id)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': 'image/png',
         'Name': name,
         'ContentID': content_id
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #14
0
 def test_attach_binary_with_content_id(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     content_type = 'image/png'
     content_id = 'cid:{0}@example.com'.format(uuid.uuid4())
     msg.attach_binary(data, name, content_type=content_type,
                       content_id=content_id)
     attachment = {
         'Content': b64encode(data).decode('utf-8'),
         'ContentType': 'image/png',
         'Name': name,
         'ContentID': content_id
     }
     self.assertEqual(msg.attachments, [attachment])
Beispiel #15
0
 def test_load_message_postmark(self):
     self.assertNotRaises(TypeError, Message.load_message,
                          self.message)
     msg = Message.load_message(self.message)
     self.assertNotRaises(MessageError, Message.load_message,
                          self.message, verify=True)
     self.assertEqual(msg.data(), self.message)
Beispiel #16
0
 def test_load_message_postmark(self):
     self.assertNotRaises(TypeError, Message.load_message,
                          self.message)
     msg = Message.load_message(self.message)
     self.assertNotRaises(MessageError, Message.load_message,
                          self.message, verify=True)
     self.assertEqual(msg.data(), self.message)
Beispiel #17
0
    def test_load_message_native(self):
        msg = dict(to='me',
                   text='hi',
                   html='<b>hi</b>',
                   reply_to='you',
                   cc='dog,cat',
                   bcc='foo,bar',
                   subject='dogs',
                   track_opens=True,
                   headers=[dict(Name='Food', Value='7')],
                   attachments=[],
                   sender='admin',
                   tag='tag',
                   template_id='template_id',
                   template_model='template_model')
        self.assertEqual(sorted(msg), sorted(Message._fields))
        self.assertNotRaises(TypeError, Message.load_message, msg)
        self.assertNotRaises(MessageError,
                             Message.load_message,
                             msg,
                             verify=True)

        msg = dict(to='me', text='hi')
        self.assertNotRaises(TypeError, Message.load_message, msg)
        self.assertNotRaises(MessageError,
                             Message.load_message,
                             msg,
                             verify=True)

        pystmsg = Message.load_message(msg)
        self.assertEqual(pystmsg.data(), dict(To='me', TextBody='hi'))
Beispiel #18
0
 def test_attach_file_no_extension(self):
     msg = Message(to='me', text='hi')
     err = 'requires an extension'
     with patch(open_label, create=True) as mock_open:
         mock_file = MagicMock(spec=file)
         mock_file.read = lambda: 'x'
         mock_open.return_value = mock_file
         self.assertRaisesMessage(MessageError, err, msg.attach_file, 'bad')
Beispiel #19
0
 def _test_secure_overrides(self, mock_request, init_secure=None,
                            send_secure=None):
     mock_request.return_value = self.mock_response('')
     msg = Message(to='me', text='hi')
     sender = Sender(test=True, secure=init_secure)
     if init_secure or init_secure is None:
         url = POSTMARK_API_URL_SECURE
     else:
         url = POSTMARK_API_URL
     if not send_secure and send_secure is not None:
         url = POSTMARK_API_URL
     elif send_secure:
         url = POSTMARK_API_URL_SECURE
     url = urljoin(url, Sender.endpoint)
     data = msg.json()
     headers = sender._get_headers(api_key=POSTMARK_API_TEST_KEY)
     sender.send(secure=send_secure, message=msg)
     mock_request.assert_called_with('POST', url, data=data,
                                     headers=headers)
Beispiel #20
0
 def _test_secure_overrides(self, mock_request, init_secure=None,
                            send_secure=None):
     mock_request.return_value = self.mock_response('')
     msg = Message(to='me', text='hi')
     sender = Sender(test=True, secure=init_secure)
     if init_secure or init_secure is None:
         url = POSTMARK_API_URL_SECURE
     else:
         url = POSTMARK_API_URL
     if not send_secure and send_secure is not None:
         url = POSTMARK_API_URL
     elif send_secure:
         url = POSTMARK_API_URL_SECURE
     url = urljoin(url, Sender.endpoint)
     data = msg.json()
     headers = sender._get_headers(api_key=POSTMARK_API_TEST_KEY)
     sender.send(secure=send_secure, message=msg)
     mock_request.assert_called_with('POST', url, data=data,
                                     headers=headers)
Beispiel #21
0
 def test_attach_binary_bad_content_id(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     content_type = 'image/png'
     content_id = '{0}@example.com'.format(uuid.uuid4())
     err = ('content_id parameter must be an RFC-2392 URL'
            ' starting with "cid:"')
     self.assertRaisesMessage(MessageError, err, msg.attach_binary,
                              data, name, content_type=content_type,
                              content_id=content_id)
Beispiel #22
0
    def test_attach_file_with_content_id(self):
        msg = Message(to='me', text='hi')
        with patch(open_label) as mock_open:
            mock_open.return_value.__enter__ = lambda s: s
            mock_open.return_value.__exit__ = MagicMock(spec=file)
            mock_open.return_value.read.return_value = b'x'

            content_type = 'image/png'
            content_id = 'cid:valid_cid'
            filename = 'dummy.png'

            msg.attach_file('dummy.png', content_type=content_type,
                            content_id=content_id)
            attachment = {
                'Content': b64encode(b'x').decode('utf-8'),
                'ContentType': content_type,
                'Name': filename,
                'ContentID': content_id
            }
            self.assertEqual(msg.attachments, [attachment])
Beispiel #23
0
    def test_attach_file_with_content_id(self):
        msg = Message(to='me', text='hi')
        with patch(open_label) as mock_open:
            mock_open.return_value.__enter__ = lambda s: s
            mock_open.return_value.__exit__ = MagicMock(spec=file)
            mock_open.return_value.read.return_value = b'x'

            content_type = 'image/png'
            content_id = 'cid:valid_cid'
            filename = 'dummy.png'

            msg.attach_file('dummy.png', content_type=content_type,
                            content_id=content_id)
            attachment = {
                'Content': b64encode(b'x').decode('utf-8'),
                'ContentType': content_type,
                'Name': filename,
                'ContentID': content_id
            }
            self.assertEqual(msg.attachments, [attachment])
Beispiel #24
0
 def test_load_message_native(self):
     msg = dict(to='me', text='hi', html='<b>hi</b>', reply_to='you',
                cc='dog,cat', subject='dogs', headers=[dict(Name='Food',
                                                            Value='7')])
     self.assertNotRaises(TypeError, Message.load_message, msg)
     self.assertNotRaises(MessageError, Message.load_message, msg,
                          verify=True)
     msg = dict(to='me', text='hi')
     self.assertNotRaises(TypeError, Message.load_message, msg)
     self.assertNotRaises(MessageError, Message.load_message, msg,
                          verify=True)
     pystmsg = Message.load_message(msg)
     self.assertEqual(pystmsg.data(), dict(To='me', TextBody='hi'))
Beispiel #25
0
    def test_load_message_native(self):
        msg = dict(to='me', text='hi', html='<b>hi</b>', reply_to='you',
                   cc='dog,cat', bcc='foo,bar', subject='dogs',
                   track_opens=True, headers=[dict(Name='Food', Value='7')],
                   attachments=[], sender='admin', tag='tag')
        self.assertEqual(sorted(msg), sorted(Message._fields))
        self.assertNotRaises(TypeError, Message.load_message, msg)
        self.assertNotRaises(MessageError, Message.load_message, msg,
                             verify=True)

        msg = dict(to='me', text='hi')
        self.assertNotRaises(TypeError, Message.load_message, msg)
        self.assertNotRaises(MessageError, Message.load_message, msg,
                             verify=True)

        pystmsg = Message.load_message(msg)
        self.assertEqual(pystmsg.data(), dict(To='me', TextBody='hi'))
Beispiel #26
0
 def test_not_equal(self):
     m = Message(sender='me')
     n = Message(sender='you')
     self.assertNotEqual(m, n)
     # To get python 2.6 to trigger __ne__:
     self.assertTrue(m.__ne__(n))
Beispiel #27
0
 def test_attach_bad_filename(self):
     err = 'Filename not found in path'
     msg = Message(to='me', text='hi')
     self.assertRaisesMessage(MessageError, err, msg.attach_file,
                              '/bad/path/')
Beispiel #28
0
 def test_attach_nonexistant_filename(self):
     msg = Message(to='me', text='hi')
     self.assertRaisesMessage(IOError, 'No such file', msg.attach_file,
                              'bad.pdf')
Beispiel #29
0
 def test_attach_header(self):
     msg = Message(to='me', text='hi')
     msg.add_header('Boy', 'Dog')
     self.assertEqual(msg.headers, [dict(Name='Boy', Value='Dog')])
Beispiel #30
0
 def test_not_equal(self):
     m = Message(sender='me')
     n = Message(sender='you')
     self.assertNotEqual(m, n)
     # To get python 2.6 to trigger __ne__:
     self.assertTrue(m.__ne__(n))
Beispiel #31
0
 def test_load_invalid_message_some_data(self):
     msg = Message.load_message(dict(to='me'))
     self.assertRaises(MessageError, msg.verify)
Beispiel #32
0
 def test_equal(self):
     m = Message(sender='me')
     n = Message(sender='me')
     self.assertEqual(m, n)
Beispiel #33
0
 def test_load_invalid_message_some_data(self):
     msg = Message.load_message(dict(to='me'))
     self.assertRaises(MessageError, msg.verify)
Beispiel #34
0
 def test_create_with_dict(self):
     sender = Sender(message=self.message)
     self.assertEqual(sender.message, self.message)
     self.assertNotEqual(sender.message, Message(to='me', text='hi'))
Beispiel #35
0
 def test_attach_binary_no_content_id(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     msg.attach_binary(data, name)
     self.assertEqual('ContentID' in msg.attachments[0], False)
Beispiel #36
0
 def test_recipient_setters(self):
     message = Message(to='hi,me', cc='you,other', bcc='dog,cat,cow')
     self.assertEqual(len(message.recipients), 7)
Beispiel #37
0
 def test_attach_binary_no_content_id(self):
     msg = Message(to='me', text='hi')
     data = urandom(64)
     name = 'test.pdf'
     msg.attach_binary(data, name)
     self.assertEqual('ContentID' in msg.attachments[0], False)
Beispiel #38
0
 def test_attach_header(self):
     msg = Message(to='me', text='hi')
     msg.add_header('Boy', 'Dog')
     self.assertEqual(msg.headers, [dict(Name='Boy', Value='Dog')])