summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/tests/test_answer_host_log.py
blob: cde4e54ba89689f4fb26d0ef977a2f52d4defbc0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""
The node's log names the host addresses it put in its answer.

It is the first thing read when a member reports "DataChannel closed", and it
read `host: none` for every answer: the match wanted `" typ host "` with a space
after it, and aiortc ends a host candidate line at `typ host`. The addresses
below are the test node's of 2026-10-16.
"""

from meshbay_node.transport.webrtc_server import _host_addresses

ANSWER = "\r\n".join([
    "v=0",
    "m=application 9 UDP/DTLS/SCTP webrtc-datachannel",
    "a=candidate:7d8e0b5c 1 udp 2130706431 192.168.1.22 40125 typ host",
    "a=candidate:3f1a9e22 1 udp 2130706431 2a01:cb15:80e8:de00:d455:bcab:c324:4d72 40125 typ host",
    "a=candidate:c0a8c8fe 1 udp 2130706431 192.168.200.254 40125 typ host",
    "a=candidate:9b0f1d47 1 udp 1694498815 90.112.206.172 40125 typ srflx raddr 192.168.1.22 rport 40125",
    "a=end-of-candidates",
]) + "\r\n"


def test_host_candidates_ending_the_line_are_counted():
    assert _host_addresses(ANSWER) == {
        "192.168.1.22", "2a01:cb15:80e8:de00:d455:bcab:c324:4d72", "192.168.200.254"}


def test_other_candidates_and_lines_are_not():
    assert _host_addresses("a=candidate:1 1 udp 1 90.112.206.172 9 typ srflx\r\n"
                           "a=ice-ufrag:typ host\r\n") == set()