43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from multiprocessing import Process
|
|
import socket
|
|
import sys
|
|
import time
|
|
|
|
import requests
|
|
|
|
from ceo_common.model import RemoteMailmanService
|
|
|
|
|
|
def test_remote_mailman(cfg, http_client, app, mock_mailman_server, g_syscom):
|
|
port = cfg.get('ceod_port')
|
|
hostname = socket.gethostname()
|
|
|
|
def server_start():
|
|
sys.stdout = open('/dev/null', 'w')
|
|
sys.stderr = sys.stdout
|
|
app.run(debug=False, host='0.0.0.0', port=port)
|
|
|
|
proc = Process(target=server_start)
|
|
proc.start()
|
|
|
|
for _ in range(5):
|
|
try:
|
|
http_client.get(hostname, '/ping')
|
|
except requests.exceptions.ConnectionError:
|
|
time.sleep(0.5)
|
|
continue
|
|
break
|
|
|
|
try:
|
|
mailman_srv = RemoteMailmanService()
|
|
assert mock_mailman_server.subscriptions['csc-general'] == []
|
|
# RemoteMailmanService -> app -> MailmanService -> MockMailmanServer
|
|
address = 'test_1@csclub.internal'
|
|
mailman_srv.subscribe(address, 'csc-general')
|
|
assert mock_mailman_server.subscriptions['csc-general'] == [address]
|
|
mailman_srv.unsubscribe(address, 'csc-general')
|
|
assert mock_mailman_server.subscriptions['csc-general'] == []
|
|
finally:
|
|
proc.terminate()
|
|
proc.join()
|