annotate tests/unit/test_plugin_xep_0320.py @ 4219:1b5cf2ee1d86

plugin XEP-0384, XEP-0391: download missing devices list: when a peer jid was not in our roster, devices list was not retrieved, resulting in failed en/decryption. This patch does check it and download missing devices list in necessary. There is no subscription managed yet, so the list won't be updated in case of new devices, this should be addressed at some point.
author Goffi <goffi@goffi.org>
date Tue, 05 Mar 2024 17:31:36 +0100
parents 4b842c1fb686
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4049
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python3
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 # Libervia: an XMPP client
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Copyright (C) 2009-2023 Jérôme Poisson (goffi@goffi.org)
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
19 from twisted.words.xish import domish
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
20
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4049
diff changeset
21 from libervia.backend.plugins.plugin_xep_0320 import NS_JINGLE_DTLS, XEP_0320
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4049
diff changeset
22 from libervia.backend.tools import xml_tools
4049
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
23
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
24
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 class TestXEP0320:
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 def test_parse_transport_trigger(self, host):
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 """<transport> element is parsed correctly in trigger"""
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 xep_0320 = XEP_0320(host)
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
29
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 transport_elt = xml_tools.parse(
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 f"<transport><fingerprint xmlns='{NS_JINGLE_DTLS}' hash='sha-256' "
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 "setup='active'>6D:8F:6A:53:A3:7E:10:B2:58:16:AB:A3:92:6F:8A:5B:2D:55:1C:FB:"
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 "2F:E3:6E:94:FE:4F:4E:FE:D4:77:49:B6</fingerprint></transport>"
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 )
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
35
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 ice_data = {}
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 result = xep_0320._parse_transport_trigger(transport_elt, ice_data)
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
38
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 expected_ice_data = {
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 "fingerprint": {
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 "hash": "sha-256",
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 "setup": "active",
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 "fingerprint":
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 "6D:8F:6A:53:A3:7E:10:B2:58:16:AB:A3:92:6F:8A:5B:2D:55:1C:"
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 "FB:2F:E3:6E:94:FE:4F:4E:FE:D4:77:49:B6",
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 },
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 }
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 assert ice_data == expected_ice_data
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 assert result
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
51
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 def test_build_transport(self, host):
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 """<transport> element is buid correctly in trigger"""
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 xep_0320 = XEP_0320(host)
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
55
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
56 transport_elt = domish.Element((None, "transport"))
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
57
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 ice_data = {
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 "fingerprint": {
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 "hash": "sha-256",
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 "setup": "active",
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 "fingerprint":
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 "6D:8F:6A:53:A3:7E:10:B2:58:16:AB:A3:92:6F:8A:5B:2D:55:1C:"
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
64 "FB:2F:E3:6E:94:FE:4F:4E:FE:D4:77:49:B6",
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
65 },
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
66 }
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
67
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
68 result = xep_0320._build_transport_trigger(transport_elt, ice_data)
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
69
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
70 expected_transport_elt = xml_tools.parse(
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 f"<transport><fingerprint xmlns='{NS_JINGLE_DTLS}' hash='sha-256' "
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 "setup='active'>6D:8F:6A:53:A3:7E:10:B2:58:16:AB:A3:92:6F:8A:5B:2D:55:1C:FB:"
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
73 "2F:E3:6E:94:FE:4F:4E:FE:D4:77:49:B6</fingerprint></transport>"""
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 )
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
75
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
76 assert transport_elt.toXml() == expected_transport_elt.toXml()
b56bf0c6c064 tests (unit): XEP-0320 tests:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 assert result