mirror of
				https://github.com/optim-enterprises-bv/Mailu.git
				synced 2025-10-30 17:47:55 +00:00 
			
		
		
		
	Merge pull request #800 from Nebukadneza/add_tests
Add more tests: Auto-Forwarding and Sending to an Alias
This commit is contained in:
		
							
								
								
									
										57
									
								
								tests/alias_test.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								tests/alias_test.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| import smtplib | ||||
| import imaplib | ||||
| import time | ||||
| import sys | ||||
| from email.mime.multipart import MIMEMultipart | ||||
| from email.mime.text import MIMEText | ||||
|  | ||||
| msg = MIMEMultipart() | ||||
| msg['From'] = "admin@mailu.io" | ||||
| msg['To'] = "forwardinguser@mailu.io" | ||||
| msg['Subject'] = "Alias Test" | ||||
| msg.attach(MIMEText("Alias Text", 'plain')) | ||||
|  | ||||
| try: | ||||
|     smtp_server = smtplib.SMTP('localhost') | ||||
|     smtp_server.set_debuglevel(1) | ||||
|     smtp_server.connect('localhost', 587) | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.starttls() | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.login("admin@mailu.io", "password") | ||||
|  | ||||
|     smtp_server.sendmail("admin@mailu.io", "alltheusers@mailu.io", msg.as_string()) | ||||
|     smtp_server.quit() | ||||
| except: | ||||
|     sys.exit(25) | ||||
|  | ||||
| time.sleep(30) | ||||
|  | ||||
| for user in ['user@mailu.io', 'admin@mailu.io', 'user/with/slash@mailu.io']: | ||||
|     try: | ||||
|         imap_server = imaplib.IMAP4_SSL('localhost') | ||||
|         imap_server.login(user, 'password') | ||||
|     except Exception as exc: | ||||
|         print("Failed with:", exc) | ||||
|         sys.exit(110) | ||||
|  | ||||
|     stat, count = imap_server.select('inbox') | ||||
|     try: | ||||
|         stat, data = imap_server.fetch(count[0], '(UID BODY[TEXT])') | ||||
|     except : | ||||
|         sys.exit(99) | ||||
|  | ||||
|     if "Alias Text" in str(data[0][1]): | ||||
|         print("Success: Mail is in aliassed inbox", user) | ||||
|     else: | ||||
|         print("Failed receiving email in aliassed inbox", user) | ||||
|         sys.exit(99) | ||||
|  | ||||
|     typ, data = imap_server.search(None, 'ALL') | ||||
|     for num in data[0].split(): | ||||
|         imap_server.store(num, '+FLAGS', '\\Deleted') | ||||
|     imap_server.expunge() | ||||
|  | ||||
|     imap_server.close() | ||||
|     imap_server.logout() | ||||
|  | ||||
| @@ -1,4 +1,5 @@ | ||||
| echo "Creating users ..." | ||||
| docker-compose -f tests/compose/core/docker-compose.yml exec admin flask mailu admin admin mailu.io password || exit 1 | ||||
| docker-compose -f tests/compose/core/docker-compose.yml exec admin flask mailu user user mailu.io 'password' 'SHA512-CRYPT' || exit 1 | ||||
| docker-compose -f tests/compose/core/docker-compose.yml exec admin flask mailu user 'user/with/slash' mailu.io 'password' 'SHA512-CRYPT' || exit 1 | ||||
| echo "Admin and user successfully created!" | ||||
|   | ||||
							
								
								
									
										21
									
								
								tests/compose/core/02_forward_test.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								tests/compose/core/02_forward_test.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| cat << EOF | docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1 | ||||
| users: | ||||
|   - localpart: forwardinguser | ||||
|     password_hash: "\$1\$F2OStvi1\$Q8hBIHkdJpJkJn/TrMIZ9/" | ||||
|     hash_scheme: MD5-CRYPT | ||||
|     domain: mailu.io | ||||
|     forward_enabled: true | ||||
|     forward_destination: ["user@mailu.io"] | ||||
| EOF | ||||
|  | ||||
| python3 tests/forward_test.py | ||||
|  | ||||
| cat << EOF | docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1 | ||||
| users: | ||||
|   - localpart: forwardinguser | ||||
|     password_hash: "\$1\$F2OStvi1\$Q8hBIHkdJpJkJn/TrMIZ9/" | ||||
|     hash_scheme: MD5-CRYPT | ||||
|     domain: mailu.io | ||||
|     forward_enabled: false | ||||
|     forward_destination: [] | ||||
| EOF | ||||
							
								
								
									
										12
									
								
								tests/compose/core/03_alias_test.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								tests/compose/core/03_alias_test.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| cat << EOF | docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1 | ||||
| aliases: | ||||
|   - localpart: alltheusers | ||||
|     domain: mailu.io | ||||
|     destination: "admin@mailu.io,user@mailu.io,user/with/slash@mailu.io" | ||||
| EOF | ||||
|  | ||||
| python3 tests/alias_test.py | ||||
|  | ||||
| cat << EOF | docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1 | ||||
| aliases: [] | ||||
| EOF | ||||
							
								
								
									
										21
									
								
								tests/compose/core/04_reply_test.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								tests/compose/core/04_reply_test.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| cat << EOF | docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1 | ||||
| users: | ||||
|   - localpart: replyuser | ||||
|     password_hash: "\$1\$F2OStvi1\$Q8hBIHkdJpJkJn/TrMIZ9/" | ||||
|     hash_scheme: MD5-CRYPT | ||||
|     domain: mailu.io | ||||
|     reply_enabled: true | ||||
|     reply_subject: This will not reach me | ||||
|     reply_body: Cause this is just a test | ||||
| EOF | ||||
|  | ||||
| python3 tests/reply_test.py | ||||
|  | ||||
| cat << EOF | docker-compose -f tests/compose/core/docker-compose.yml exec -T admin flask mailu config-update -v 1 | ||||
| users: | ||||
|   - localpart: replyuser | ||||
|     password_hash: "\$1\$F2OStvi1\$Q8hBIHkdJpJkJn/TrMIZ9/" | ||||
|     hash_scheme: MD5-CRYPT | ||||
|     domain: mailu.io | ||||
|     reply_enabled: false | ||||
| EOF | ||||
| @@ -29,7 +29,7 @@ try: | ||||
|     smtp_server.starttls() | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.login("admin@mailu.io", "password") | ||||
|      | ||||
|  | ||||
|     smtp_server.sendmail("admin@mailu.io", "user@mailu.io", msg.as_string()) | ||||
|     smtp_server.quit() | ||||
| except: | ||||
| @@ -47,13 +47,19 @@ stat, count = imap_server.select('inbox') | ||||
| try: | ||||
|     stat, data = imap_server.fetch(count[0], '(UID BODY[TEXT])') | ||||
| except : | ||||
|     print("Couldn’t list email in imap inbox") | ||||
|     sys.exit(99) | ||||
|          | ||||
|  | ||||
| if sys.argv[1] in str(data[0][1]): | ||||
|     print("Success sending and receiving email!") | ||||
| else: | ||||
|     print("Failed receiving email with message %s" % sys.argv[1]) | ||||
|     print("Failed receiving email with message %s, message not contained" % sys.argv[1]) | ||||
|     sys.exit(99) | ||||
|      | ||||
|  | ||||
| typ, data = imap_server.search(None, 'ALL') | ||||
| for num in data[0].split(): | ||||
|     imap_server.store(num, '+FLAGS', '\\Deleted') | ||||
| imap_server.expunge() | ||||
|  | ||||
| imap_server.close() | ||||
| imap_server.logout() | ||||
|   | ||||
							
								
								
									
										84
									
								
								tests/forward_test.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								tests/forward_test.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| import smtplib | ||||
| import imaplib | ||||
| import time | ||||
| import sys | ||||
| from email.mime.multipart import MIMEMultipart | ||||
| from email.mime.text import MIMEText | ||||
|  | ||||
| msg = MIMEMultipart() | ||||
| msg['From'] = "admin@mailu.io" | ||||
| msg['To'] = "forwardinguser@mailu.io" | ||||
| msg['Subject'] = "Forward Test" | ||||
| msg.attach(MIMEText("Forward Text", 'plain')) | ||||
|  | ||||
| try: | ||||
|     smtp_server = smtplib.SMTP('localhost') | ||||
|     smtp_server.set_debuglevel(1) | ||||
|     smtp_server.connect('localhost', 587) | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.starttls() | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.login("admin@mailu.io", "password") | ||||
|  | ||||
|     smtp_server.sendmail("admin@mailu.io", "forwardinguser@mailu.io", msg.as_string()) | ||||
|     smtp_server.quit() | ||||
| except: | ||||
|     sys.exit(25) | ||||
|  | ||||
| time.sleep(30) | ||||
|  | ||||
| # check forward target | ||||
| try: | ||||
|     imap_server = imaplib.IMAP4_SSL('localhost') | ||||
|     imap_server.login('user@mailu.io', 'password') | ||||
| except Exception as exc: | ||||
|     print("Failed with:", exc) | ||||
|     sys.exit(110) | ||||
|  | ||||
| stat, count = imap_server.select('inbox') | ||||
| try: | ||||
|     stat, data = imap_server.fetch(count[0], '(UID BODY[TEXT])') | ||||
| except : | ||||
|     sys.exit(99) | ||||
|  | ||||
| if "Forward Text" in str(data[0][1]): | ||||
|     print("Success: Mail is in forwarded inbox") | ||||
| else: | ||||
|     print("Failed receiving email in forwarded inbox") | ||||
|     sys.exit(99) | ||||
|  | ||||
| typ, data = imap_server.search(None, 'ALL') | ||||
| for num in data[0].split(): | ||||
|     imap_server.store(num, '+FLAGS', '\\Deleted') | ||||
| imap_server.expunge() | ||||
|  | ||||
| imap_server.close() | ||||
| imap_server.logout() | ||||
|  | ||||
| # check original user | ||||
| try: | ||||
|     imap_server = imaplib.IMAP4_SSL('localhost') | ||||
|     imap_server.login('forwardinguser@mailu.io', 'password') | ||||
| except Exception as exc: | ||||
|     print("Failed with:", exc) | ||||
|     sys.exit(110) | ||||
|  | ||||
| stat, count = imap_server.select('inbox') | ||||
| try: | ||||
|     stat, data = imap_server.fetch(count[0], '(UID BODY[TEXT])') | ||||
| except : | ||||
|     sys.exit(99) | ||||
|  | ||||
| if "Forward Text" in str(data[0][1]): | ||||
|     print("Success: Mail is in forwarding inbox") | ||||
| else: | ||||
|     print("Failed receiving email in forwarding inbox") | ||||
|     sys.exit(99) | ||||
|  | ||||
| typ, data = imap_server.search(None, 'ALL') | ||||
| for num in data[0].split(): | ||||
|     imap_server.store(num, '+FLAGS', '\\Deleted') | ||||
| imap_server.expunge() | ||||
|  | ||||
| imap_server.close() | ||||
| imap_server.logout() | ||||
							
								
								
									
										84
									
								
								tests/reply_test.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										84
									
								
								tests/reply_test.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| import smtplib | ||||
| import imaplib | ||||
| import time | ||||
| import sys | ||||
| from email.mime.multipart import MIMEMultipart | ||||
| from email.mime.text import MIMEText | ||||
|  | ||||
| msg = MIMEMultipart() | ||||
| msg['From'] = "admin@mailu.io" | ||||
| msg['To'] = "replyusea@mailu.io" | ||||
| msg['Subject'] = "Reply Test" | ||||
| msg.attach(MIMEText("Reply Text", 'plain')) | ||||
|  | ||||
| try: | ||||
|     smtp_server = smtplib.SMTP('localhost') | ||||
|     smtp_server.set_debuglevel(1) | ||||
|     smtp_server.connect('localhost', 587) | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.starttls() | ||||
|     smtp_server.ehlo() | ||||
|     smtp_server.login("admin@mailu.io", "password") | ||||
|  | ||||
|     smtp_server.sendmail("admin@mailu.io", "replyuser@mailu.io", msg.as_string()) | ||||
|     smtp_server.quit() | ||||
| except: | ||||
|     sys.exit(25) | ||||
|  | ||||
| time.sleep(30) | ||||
|  | ||||
| # check original target | ||||
| try: | ||||
|     imap_server = imaplib.IMAP4_SSL('localhost') | ||||
|     imap_server.login('replyuser@mailu.io', 'password') | ||||
| except Exception as exc: | ||||
|     print("Failed with:", exc) | ||||
|     sys.exit(110) | ||||
|  | ||||
| stat, count = imap_server.select('inbox') | ||||
| try: | ||||
|     stat, data = imap_server.fetch(count[0], '(UID BODY[TEXT])') | ||||
| except : | ||||
|     sys.exit(99) | ||||
|  | ||||
| if "Reply Text" in str(data[0][1]): | ||||
|     print("Success: Mail is in target inbox") | ||||
| else: | ||||
|     print("Failed receiving email in target inbox") | ||||
|     sys.exit(99) | ||||
|  | ||||
| typ, data = imap_server.search(None, 'ALL') | ||||
| for num in data[0].split(): | ||||
|     imap_server.store(num, '+FLAGS', '\\Deleted') | ||||
| imap_server.expunge() | ||||
|  | ||||
| imap_server.close() | ||||
| imap_server.logout() | ||||
|  | ||||
| # check original/replied user | ||||
| try: | ||||
|     imap_server = imaplib.IMAP4_SSL('localhost') | ||||
|     imap_server.login('admin@mailu.io', 'password') | ||||
| except Exception as exc: | ||||
|     print("Failed with:", exc) | ||||
|     sys.exit(110) | ||||
|  | ||||
| stat, count = imap_server.select('inbox') | ||||
| try: | ||||
|     stat, data = imap_server.fetch(count[0], '(UID BODY[TEXT])') | ||||
| except : | ||||
|     sys.exit(99) | ||||
|  | ||||
| if "Cause this is just a test" in str(data[0][1]): | ||||
|     print("Success: Reply is in original inbox") | ||||
| else: | ||||
|     print("Failed receiving reply in original inbox") | ||||
|     sys.exit(99) | ||||
|  | ||||
| typ, data = imap_server.search(None, 'ALL') | ||||
| for num in data[0].split(): | ||||
|     imap_server.store(num, '+FLAGS', '\\Deleted') | ||||
| imap_server.expunge() | ||||
|  | ||||
| imap_server.close() | ||||
| imap_server.logout() | ||||
		Reference in New Issue
	
	Block a user
	 Ionut Filip
					Ionut Filip