annotate tests/unit/test_plugin_xep_0293.py @ 4306:94e0968987cd

plugin XEP-0033: code modernisation, improve delivery, data validation: - Code has been rewritten using Pydantic models and `async` coroutines for data validation and cleaner element parsing/generation. - Delivery has been completely rewritten. It now works even if server doesn't support multicast, and send to local multicast service first. Delivering to local multicast service first is due to bad support of XEP-0033 in server (notably Prosody which has an incomplete implementation), and the current impossibility to detect if a sub-domain service handles fully multicast or only for local domains. This is a workaround to have a good balance between backward compatilibity and use of bandwith, and to make it work with the incoming email gateway implementation (the gateway will only deliver to entities of its own domain). - disco feature checking now uses `async` corountines. `host` implementation still use Deferred return values for compatibility with legacy code. rel 450
author Goffi <goffi@goffi.org>
date Thu, 26 Sep 2024 16:12:01 +0200
parents f1d0cde61af7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python3
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 # Libervia: an XMPP client
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Copyright (C) 2009-2023 Jérôme Poisson (goffi@goffi.org)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
19 from twisted.words.xish import domish
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
20
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4061
diff changeset
21 from libervia.backend.plugins.plugin_xep_0167.constants import NS_JINGLE_RTP
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
22 from libervia.backend.plugins.plugin_xep_0293 import (
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
23 NS_JINGLE_RTP_RTCP_FB,
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
24 RTCP_FB_KEY,
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
25 XEP_0293,
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
26 )
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4061
diff changeset
27 from libervia.backend.tools import xml_tools
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
28
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
29
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 class TestXEP0293:
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
31
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 def test_parse_sdp_rtcp_fb_general(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 """Parsing of a general RTCP feedback SDP line."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
35
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 application_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 transport_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
38
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 # SDP line: a=rtcp-fb:* nack pli
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 attribute = "rtcp-fb"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 parts = ["*", "nack", "pli"]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 xep_0293._parse_sdp_a_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 attribute=attribute,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 parts=parts,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 call_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 metadata={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 media_type="video",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
48 application_data=application_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 transport_data=transport_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 assert application_data[RTCP_FB_KEY][0] == ("nack", "pli", {})
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
52
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 def test_parse_sdp_rtcp_fb_specific(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 """Parsing of a payload-specific RTCP feedback SDP line."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
56
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
57 application_data = {"payload_types": {96: {}}}
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 transport_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
59
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 # SDP line: a=rtcp-fb:96 nack
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 attribute = "rtcp-fb"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 parts = ["96", "nack"]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 xep_0293._parse_sdp_a_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
64 attribute=attribute,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
65 parts=parts,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
66 call_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
67 metadata={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
68 media_type="video",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
69 application_data=application_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
70 transport_data=transport_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 assert application_data["payload_types"][96][RTCP_FB_KEY][0] == ("nack", None, {})
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
73
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 def test_parse_sdp_rtcp_fb_trr_int_general(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 """Parsing of a general RTCP feedback with trr-int SDP line."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
76 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
77
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
78 application_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
79 transport_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
80
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 # SDP line: a=rtcp-fb-trr-int:* 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 attribute = "rtcp-fb-trr-int"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
83 parts = ["*", "100"]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
84 xep_0293._parse_sdp_a_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
85 attribute=attribute,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 parts=parts,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
87 call_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
88 metadata={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
89 media_type="video",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
90 application_data=application_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
91 transport_data=transport_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
92 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
93 assert application_data["rtcp-fb-trr-int"] == 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
94
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
95 def test_parse_sdp_rtcp_fb_trr_int_specific(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
96 """Parsing of a payload-specific RTCP feedback with trr-int SDP line."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
97 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
98
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
99 application_data = {"payload_types": {96: {}}}
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
100 transport_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
101
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
102 # SDP line: a=rtcp-fb-trr-int:96 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
103 attribute = "rtcp-fb-trr-int"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
104 parts = ["96", "100"]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
105 xep_0293._parse_sdp_a_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
106 attribute=attribute,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
107 parts=parts,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
108 call_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
109 metadata={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
110 media_type="video",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
111 application_data=application_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
112 transport_data=transport_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
113 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
114 assert application_data["payload_types"][96]["rtcp-fb-trr-int"] == 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
115
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
116 def test_generate_sdp_session(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
117 """Generation of SDP lines for session data."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
118 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
119 sdp_lines = []
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
120 application_data = {RTCP_FB_KEY: [("nack", "pli", {})], "rtcp-fb-trr-int": 100}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
121
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
122 xep_0293._generate_sdp_content_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
123 session={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
124 local=True,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
125 content_name="test",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
126 content_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
127 sdp_lines=sdp_lines,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
128 application_data=application_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
129 app_data_key="test",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
130 media_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
131 media="video",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
132 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
133
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
134 assert sdp_lines[0] == "a=rtcp-fb:* nack pli"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 assert sdp_lines[1] == "a=rtcp-fb:* trr-int 100"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
136
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 def test_generate_sdp_payload_type(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
138 """Generation of SDP lines for each payload type."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
140 sdp_lines = []
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
141 application_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
142 media_data = {
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
143 "payload_types": {
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
144 96: {RTCP_FB_KEY: [("nack", None, {})], "rtcp-fb-trr-int": 100}
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
145 }
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
146 }
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
147
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
148 xep_0293._generate_sdp_content_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
149 session={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
150 local=True,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
151 content_name="test",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
152 content_data={},
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
153 sdp_lines=sdp_lines,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
154 application_data=application_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
155 app_data_key="test",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
156 media_data=media_data,
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
157 media="video",
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
158 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
159
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
160 assert sdp_lines[0] == "a=rtcp-fb:96 nack"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
161 assert sdp_lines[1] == "a=rtcp-fb:96 trr-int 100"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
162
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
163 def test_parse_description(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
164 """Parsing of <rtcp-fb> and <rtcp-fb-trr-int> elements from a description."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
165 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
166
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
167 desc_element = xml_tools.parse(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
168 f"""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
169 <description xmlns="urn:xmpp:jingle:apps:rtp:1" media="audio">
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
170 <rtcp-fb xmlns="{NS_JINGLE_RTP_RTCP_FB}" type="nack" subtype="pli"/>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
171 <rtcp-fb-trr-int xmlns="{NS_JINGLE_RTP_RTCP_FB}" value="100"/>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
172 </description>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
173 """
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
174 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
175
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
176 media_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
177 xep_0293._parse_description_trigger(desc_element, media_data)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
178
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
179 assert media_data[RTCP_FB_KEY][0] == ("nack", "pli", {})
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
180 assert media_data["rtcp_fb_trr_int"][0] == 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
181
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
182 def test_parse_description_payload_type(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
183 """Parsing of <rtcp-fb> and <rtcp-fb-trr-int> elements from a payload type."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
184 xep_0293 = XEP_0293(host)
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
185
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
186 desc_element = xml_tools.parse(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
187 f"""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
188 <description xmlns="urn:xmpp:jingle:apps:rtp:1" media="audio">
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
189 <payload-type id="96">
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
190 <rtcp-fb xmlns="{NS_JINGLE_RTP_RTCP_FB}" type="nack" subtype="pli"/>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
191 <rtcp-fb-trr-int xmlns="{NS_JINGLE_RTP_RTCP_FB}" value="100"/>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
192 </payload-type>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
193 </description>
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
194 """
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
195 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
196
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
197 media_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
198 payload_type_elt = desc_element.firstChildElement()
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
199 payload_type_data = {}
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
200 xep_0293._parse_description_payload_type_trigger(
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
201 desc_element, media_data, payload_type_elt, payload_type_data
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
202 )
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
203
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
204 assert payload_type_data[RTCP_FB_KEY][0] == ("nack", "pli", {})
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
205 assert payload_type_data["rtcp_fb_trr_int"][0] == 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
206
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
207 def test_build_rtcp_fb_elements(self, host):
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
208 """Building the <rtcp-fb> and <rtcp-fb-trr-int> elements."""
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
209 xep_0293 = XEP_0293(host)
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
210 data = {RTCP_FB_KEY: [("nack", "pli", {})], "rtcp-fb-trr-int": 100}
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
211
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
212 # Test _build_description_trigger
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
213 desc_elt = domish.Element((NS_JINGLE_RTP, "description"))
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
214 xep_0293._build_description_trigger(desc_elt, data, {})
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
215
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
216 rtcp_fb_elts = list(desc_elt.elements(NS_JINGLE_RTP_RTCP_FB, "rtcp-fb"))
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
217 assert len(rtcp_fb_elts) == 1
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
218 rtcp_fb_elt = rtcp_fb_elts[0]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
219 assert rtcp_fb_elt["type"] == "nack"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
220 assert rtcp_fb_elt["subtype"] == "pli"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
221
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
222 rtcp_fb_trr_int_elts = list(
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
223 desc_elt.elements(NS_JINGLE_RTP_RTCP_FB, "rtcp-fb-trr-int")
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
224 )
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
225 assert len(rtcp_fb_trr_int_elts) == 1
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
226 rtcp_fb_trr_int_elt = rtcp_fb_trr_int_elts[0]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
227 assert int(rtcp_fb_trr_int_elt["value"]) == 100
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
228
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
229 # Test _build_description_payload_type_trigger
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
230 desc_elt = domish.Element((NS_JINGLE_RTP, "description"))
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
231 payload_type_elt = desc_elt.addElement((NS_JINGLE_RTP, "payload-type"))
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
232 xep_0293._build_description_payload_type_trigger(
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
233 desc_elt, {}, data, payload_type_elt
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
234 )
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
235
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
236 rtcp_fb_elts = list(payload_type_elt.elements(NS_JINGLE_RTP_RTCP_FB, "rtcp-fb"))
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
237 assert len(rtcp_fb_elts) == 1
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
238 rtcp_fb_elt = rtcp_fb_elts[0]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
239 assert rtcp_fb_elt["type"] == "nack"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
240 assert rtcp_fb_elt["subtype"] == "pli"
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
241
4285
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
242 rtcp_fb_trr_int_elts = list(
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
243 payload_type_elt.elements(NS_JINGLE_RTP_RTCP_FB, "rtcp-fb-trr-int")
f1d0cde61af7 tests (unit): fix tests + black reformatting.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
244 )
4061
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
245 assert len(rtcp_fb_trr_int_elts) == 1
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
246 rtcp_fb_trr_int_elt = rtcp_fb_trr_int_elts[0]
fddd76dedc97 tests (units): tests for plugin XEP-0293:
Goffi <goffi@goffi.org>
parents:
diff changeset
247 assert int(rtcp_fb_trr_int_elt["value"]) == 100