1
|
|
|
""" |
2
|
|
|
:Copyright: 2007-2021 Jochen Kupperschmidt |
3
|
|
|
:License: MIT, see LICENSE for details. |
4
|
|
|
""" |
5
|
|
|
|
6
|
|
|
from datetime import datetime |
7
|
|
|
|
8
|
|
|
from syslogmp import Facility, Message, Severity |
9
|
|
|
|
10
|
|
|
from syslog2irc.network import Port, TransportProtocol |
11
|
|
|
from syslog2irc.signals import syslog_message_received |
12
|
|
|
from syslog2irc.syslog import UDPHandler |
13
|
|
|
|
14
|
|
|
|
15
|
|
|
CURRENT_YEAR = datetime.today().year |
16
|
|
|
|
17
|
|
|
|
18
|
|
|
def test_udp_handler(): |
19
|
|
|
expected_message = Message( |
20
|
|
|
Facility.kernel, |
21
|
|
|
Severity.emergency, |
22
|
|
|
datetime(CURRENT_YEAR, 10, 22, 10, 52, 12), |
23
|
|
|
'scapegoat', |
24
|
|
|
b'1990 Oct 22 10:52:01 TZ-6 scapegoat.dmz.example.org 10.1.2.3 sched[0]: That\'s All Folks!', |
25
|
|
|
) |
26
|
|
|
|
27
|
|
|
# Example 5 from RFC 3164. |
28
|
|
|
data = b'<0>Oct 22 10:52:12 scapegoat 1990 Oct 22 10:52:01 TZ-6 scapegoat.dmz.example.org 10.1.2.3 sched[0]: That\'s All Folks!' |
29
|
|
|
|
30
|
|
|
port = Port(514, TransportProtocol.UDP) |
31
|
|
|
client_address = ('127.0.0.1', port.number) |
32
|
|
|
request = [data] |
33
|
|
|
|
34
|
|
|
received_signal_data = [] |
35
|
|
|
|
36
|
|
|
@syslog_message_received.connect |
37
|
|
|
def handle_syslog_message_received(sender, **data): |
38
|
|
|
received_signal_data.append(data) |
39
|
|
|
|
40
|
|
|
UDPHandler(port, request, client_address, server=None) |
41
|
|
|
|
42
|
|
|
assert received_signal_data == [ |
43
|
|
|
{ |
44
|
|
|
'message': expected_message, |
45
|
|
|
'source_address': client_address, |
46
|
|
|
} |
47
|
|
|
] |
48
|
|
|
|