|
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
|
|
|
|