Commit b2f2ee36 authored by Pawel Boening's avatar Pawel Boening Committed by Leonard Marschke
Browse files

mail tests added

parent 9a00484b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -44,8 +44,9 @@ class TestFuzzing(BaseTest):
        self.assertResponse(500, '{}\r\n'.format(fuzzy_input))

    def test_huge_input(self):
        fuzzy_input = 'A' * 10**6
        fuzzy_input = 'A' * 10**4
        self.assertResponse(500, '{}\r\n'.format(fuzzy_input))

    def test_sentry_issue_49(self):
        self.assertResponse(500, b'\xff\xf4\xff\xfd\x06' + "\r\n".encode('ASCII'))
+71 −0
Original line number Diff line number Diff line
@@ -103,3 +103,74 @@ class TestMail(BaseTest):
                                 'SOME_RANDOM_TEXT'])

        self.assertResponse(221, 'QUIT\r\n')

    def test_mail_many_recipients(self):
        self.assertResponse(250, 'HELO marschke.me\r\n')
        self.assertResponse(250, 'MAIL FROM:<leonard@marschke.me>\r\n')
        self.assertResponse(250, 'RCPT TO:<firstAddress@{}>\r\n'.format(self.test_server.domain))

        for i in range(10**3):
            self.assertResponse(250, 'RCPT TO:<address{}@{}>\r\n'.format(i, self.test_server.domain))

        self.assertResponse(354, 'DATA\r\n' + \
                                 'Date: Thu, 10 May 2018 10:33:29 -0100\r\n' + \
                                 'FROM: Leonard Marschke<leonard@marschke.me>\r\n' + \
                                 'Subject: Testmail\r\n' + \
                                 'To: firstaddress@{}\r\n'.format(self.test_server.domain) + \
                                 '\r\n' + \
                                 'Hi all, this is\r\n' + \
                                 'a second line.\r\n' + \
                                 'And a third.\r\n' + \
                                 'Single point incoming.\r\n' + \
                                 '..\r\n' + \
                                 'BR\r\n')
        self.assertResponse(250, '.\r\n')

        self.assertResponse(221, 'QUIT\r\n')

    def test_mail_many_mails(self):
        for _ in range(10**3):
            self.assertResponse(250, 'HELO marschke.me\r\n')
            self.assertResponse(250, 'MAIL FROM:<leonard@marschke.me>\r\n')
            self.assertResponse(250, 'RCPT TO:<firstAddress@{}>\r\n'.format(self.test_server.domain))
            self.assertResponse(250, 'RCPT TO:<secondAddress@{}>\r\n'.format(self.test_server.domain))
            self.assertResponse(354, 'DATA\r\n' + \
                                     'Date: Thu, 10 May 2018 10:33:29 -0100\r\n' + \
                                     'FROM: Leonard Marschke<leonard@marschke.me>\r\n' + \
                                     'Subject: Testmail\r\n' + \
                                     'To: firstaddress@{}\r\n'.format(self.test_server.domain) + \
                                     '\r\n' + \
                                     'Hi all, this is\r\n' + \
                                     'a second line.\r\n' + \
                                     'And a third.\r\n' + \
                                     'Single point incoming.\r\n' + \
                                     '..\r\n' + \
                                     'BR\r\n')
            self.assertResponse(250, '.\r\n')

        self.assertResponse(221, 'QUIT\r\n')

    def test_mail_huge_mails(self):
        self.assertResponse(250, 'HELO marschke.me\r\n')
        self.assertResponse(250, 'MAIL FROM:<leonard@marschke.me>\r\n')
        self.assertResponse(250, 'RCPT TO:<firstAddress@{}>\r\n'.format(self.test_server.domain))
        self.assertResponse(250, 'RCPT TO:<secondAddress@{}>\r\n'.format(self.test_server.domain))

        huge_lines = ''
        for i in range(10**3):
            huge_line = 'Line {} {}\r\n'.format(str(i), 'A' * 10**2)
            huge_lines += huge_line

        self.assertResponse(354, 'DATA\r\n' + \
                                 'Date: Thu, 10 May 2018 10:33:29 -0100\r\n' + \
                                 'FROM: Leonard Marschke<leonard@marschke.me>\r\n' + \
                                 'Subject: Testmail\r\n' + \
                                 'To: firstaddress@{}\r\n'.format(self.test_server.domain) + \
                                 '\r\n' + \
                                 '{}\r\n'.format(huge_lines) + \
                                 '..\r\n' + \
                                 'BR\r\n')

        self.assertResponse(250, '.\r\n')

        self.assertResponse(221, 'QUIT\r\n')
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ import time


class TestServer:
    CONNECTION_TIMEOUT = 5
    CONNECTION_TIMEOUT = 10

    def __init__(self, hostname, port, container_template, docker_port, ssl_on=False, wait_up=0.5):
        self.hostname = hostname