This is an automated email from the ASF dual-hosted git repository.

gcruz pushed a commit to branch gc/8574
in repository https://gitbox.apache.org/repos/asf/allura.git


The following commit(s) were added to refs/heads/gc/8574 by this push:
     new 1633b4a6a [#8574] updated test to make use of the 
BetterDebuggingServer class
1633b4a6a is described below

commit 1633b4a6a054194c43e167ad01eec24e1b939eef
Author: Guillermo Cruz <[email protected]>
AuthorDate: Tue Feb 4 14:46:27 2025 -0700

    [#8574] updated test to make use of the BetterDebuggingServer class
---
 Allura/allura/tests/test_mail_util.py        | 34 ++++++++++++++++++++--------
 Allura/docs/getting_started/installation.rst |  2 +-
 AlluraTest/alluratest/smtp_debug.py          |  8 ++++++-
 docker-compose.yml                           |  2 +-
 4 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/Allura/allura/tests/test_mail_util.py 
b/Allura/allura/tests/test_mail_util.py
index c549e5a01..19001b8d5 100644
--- a/Allura/allura/tests/test_mail_util.py
+++ b/Allura/allura/tests/test_mail_util.py
@@ -22,9 +22,9 @@
 import pytest
 from ming.odm import ThreadLocalODMSession
 from tg import config as tg_config
-
+from smtplib import SMTP as SMTPClient
 from alluratest.controller import setup_basic_test, setup_global_objects
-from allura.command.smtp_server import MailServer
+from alluratest.smtp_debug import BetterDebuggingServer
 from allura.lib.utils import ConfigProxy
 from allura.app import Application
 from allura.lib.mail_util import (
@@ -38,7 +38,8 @@
 )
 from allura.lib.exceptions import AddressException
 from allura.tests import decorators as td
-
+from paste.deploy.converters import asint
+from aiosmtpd.handlers import Debugging
 
 config = ConfigProxy(
     common_suffix='forgemail.domain',
@@ -334,9 +335,24 @@ def setup_method(self, method):
 
     @mock.patch('allura.command.base.log', autospec=True)
     def test(self, log):
-        listen_port = ('0.0.0.0', 8825)
-        mailserver = MailServer(listen_port, None)
-        mailserver.process_message('127.0.0.1', '[email protected]', 
['[email protected]'],
-                                   'this is the email body with headers and 
everything Ο'.encode())
-        assert [] == log.exception.call_args_list
-        assert log.info.call_args[0][0].startswith('Msg passed along as task 
'), log.info.call_args
+        mailserver = BetterDebuggingServer()
+        controller, handler = mailserver.start_server()
+        hostname = tg_config.get('forgemail.host', '0.0.0.0')
+        port = asint(tg_config.get('forgemail.port', 8825))
+        with SMTPClient(hostname, port, timeout=0.1) as client:
+            resp = client.docmd("HELP", "HELO")
+            code, msg = client.ehlo("example.com")
+            assert code == 250
+            client.sendmail('[email protected]', ['[email protected]'],"""
+            From: Anne Person <[email protected]>
+            To: Bart Person <[email protected]>
+            Subject: A test
+            Hi Bart, this is Anne.
+            """)
+            assert isinstance(handler, Debugging)
+            text = handler.stream.getvalue()
+            assert 'From: Anne Person <[email protected]>' in text
+            assert ' To: Bart Person <[email protected]>' in text
+            assert 'Subject: A test' in text
+            
+            
diff --git a/Allura/docs/getting_started/installation.rst 
b/Allura/docs/getting_started/installation.rst
index 972b58055..bb3771d56 100644
--- a/Allura/docs/getting_started/installation.rst
+++ b/Allura/docs/getting_started/installation.rst
@@ -341,7 +341,7 @@ your :file:`development.ini` (8826 by default).
 
 .. code-block:: bash
 
-    python -u -m aiosmtpd -n -c alluratest.smtp_debug.BetterDebuggingServer -l 
0.0.0.0:8826 -d
+    python -u -m aiosmtpd -n -c alluratest.smtp_debug.BetterDebuggingServer -l 
0.0.0.0:8826
 
 This will create a new debugging server that discards messages and prints them 
to stdout.
 
diff --git a/AlluraTest/alluratest/smtp_debug.py 
b/AlluraTest/alluratest/smtp_debug.py
index 20db4fc32..b6cec8324 100644
--- a/AlluraTest/alluratest/smtp_debug.py
+++ b/AlluraTest/alluratest/smtp_debug.py
@@ -23,18 +23,24 @@
 
 class BetterDebuggingServer:
     
-    def process_message(self,  server, session, envelope):
+    def start_server(self):
         stream = StringIO()
         handler = Debugging(stream)  # throws away the email
         hostname = tg.config.get('forgemail.host', '0.0.0.0')
         port = asint(tg.config.get('forgemail.port', 8825))
         controller = Controller(handler, hostname=hostname, port=port)
         controller.start()
+        return controller, handler
+    
 
     async def handle_DATA(self,  server, session, envelope):
         try:
             rcpttos = envelope.rcpt_tos
+            message = envelope.content.decode("utf-8")
+            message = "\n".join(message.split("\r\n"))
             print('TO: ' + ', '.join(rcpttos))
+            print('FROM: ' + envelope.mail_from)
+            print(message)
         except Exception as error:
             return f'500 Could not process your message. Error {error}'
         return '250 OK'
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index b0c0c28c5..a6c663959 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -64,7 +64,7 @@ services:
     environment: *env
     volumes_from:
       - web
-    command: python -u -m aiosmtpd -n -c 
alluratest.smtp_debug.BetterDebuggingServer -l 0.0.0.0:8826 -d
+    command: python -u -m aiosmtpd -n -c 
alluratest.smtp_debug.BetterDebuggingServer -l 0.0.0.0:8826
     expose:
       - "8826"
 

Reply via email to