annotate libervia/backend/test/helpers.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 0d7bb4df2343
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
1 #!/usr/bin/env python3
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
335
Goffi <goffi@goffi.org>
parents:
diff changeset
3
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
4 # SAT: a jabber client
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
6
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
7 # This program is free software: you can redistribute it and/or modify
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
10 # (at your option) any later version.
335
Goffi <goffi@goffi.org>
parents:
diff changeset
11
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
12 # This program is distributed in the hope that it will be useful,
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
15 # GNU Affero General Public License for more details.
335
Goffi <goffi@goffi.org>
parents:
diff changeset
16
609
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
84a6e83157c2 fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents: 591
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
335
Goffi <goffi@goffi.org>
parents:
diff changeset
19
998
f5761534e0f3 tests: fixed log init in helpers (log init must be done before any call to a log method)
Goffi <goffi@goffi.org>
parents: 997
diff changeset
20
f5761534e0f3 tests: fixed log init in helpers (log init must be done before any call to a log method)
Goffi <goffi@goffi.org>
parents: 997
diff changeset
21 ## logging configuration for tests ##
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
22 from libervia.backend.core import log_config
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
23
4078
15055a00162c refactoring: rename `sat_configure` to `libervia_configure`
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
24 log_config.libervia_configure()
998
f5761534e0f3 tests: fixed log init in helpers (log init must be done before any call to a log method)
Goffi <goffi@goffi.org>
parents: 997
diff changeset
25
1909
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
26 import logging
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
27 from libervia.backend.core.log import getLogger
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
28
1909
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
29 getLogger().setLevel(logging.WARNING) # put this to DEBUG when needed
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
30
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
31 from libervia.backend.core import exceptions
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
32 from libervia.backend.tools import config as tools_config
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
33 from .constants import Const as C
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
34 from wokkel.xmppim import RosterItem
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
35 from wokkel.generic import parseXml
4107
bc7d45dedeb0 backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents: 4078
diff changeset
36 from libervia.backend.core.xmpp import LiberviaRosterProtocol
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
37 from libervia.backend.memory.memory import Params, Memory
647
63b6e684bbfa tests: Use of FailTest for DifferentArgsException instead of Exception, so the test fail instead of raising en error.
Goffi <goffi@goffi.org>
parents: 609
diff changeset
38 from twisted.trial.unittest import FailTest
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
39 from twisted.trial import unittest
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
40 from twisted.internet import defer
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
41 from twisted.words.protocols.jabber.jid import JID
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
42 from twisted.words.xish import domish
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
43 from xml.etree import cElementTree as etree
789
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
44 from collections import Counter
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
45 import re
335
Goffi <goffi@goffi.org>
parents:
diff changeset
46
Goffi <goffi@goffi.org>
parents:
diff changeset
47
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
48 def b2s(value):
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
49 """Convert a bool to a unicode string used in bridge
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
50 @param value: boolean value
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
51 @return: unicode conversion, according to bridge convention
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
52
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
53 """
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
54 return "True" if value else "False"
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
55
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
56
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
57 def mute_logging():
1909
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
58 """Temporarily set the logging level to CRITICAL to not pollute the output with expected errors."""
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
59 logger = getLogger()
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
60 logger.original_level = logger.getEffectiveLevel()
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
61 logger.setLevel(logging.CRITICAL)
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
62
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
63
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
64 def unmute_logging():
1909
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
65 """Restore the logging level after it has been temporarily disabled."""
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
66 logger = getLogger()
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
67 logger.setLevel(logger.original_level)
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
68
0681d69cbe0a test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents: 1766
diff changeset
69
647
63b6e684bbfa tests: Use of FailTest for DifferentArgsException instead of Exception, so the test fail instead of raising en error.
Goffi <goffi@goffi.org>
parents: 609
diff changeset
70 class DifferentArgsException(FailTest):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
71 pass
Goffi <goffi@goffi.org>
parents:
diff changeset
72
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
73
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
74 class DifferentXMLException(FailTest):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
75 pass
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
76
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
77
789
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
78 class DifferentListException(FailTest):
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
79 pass
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
80
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
81
335
Goffi <goffi@goffi.org>
parents:
diff changeset
82 class FakeSAT(object):
Goffi <goffi@goffi.org>
parents:
diff changeset
83 """Class to simulate a SAT instance"""
Goffi <goffi@goffi.org>
parents:
diff changeset
84
Goffi <goffi@goffi.org>
parents:
diff changeset
85 def __init__(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
86 self.bridge = FakeBridge()
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
87 self.memory = FakeMemory(self)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
88 self.trigger = FakeTriggerManager()
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
89 self.profiles = {}
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
90 self.reinit()
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
91
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
92 def reinit(self):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
93 """This can be called by tests that check for sent and stored messages,
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
94 uses FakeClient or get/set some other data that need to be cleaned"""
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
95 for profile in self.profiles:
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
96 self.profiles[profile].reinit()
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
97 self.memory.reinit()
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
98 self.stored_messages = []
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
99 self.plugins = {}
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
100 self.profiles = {}
335
Goffi <goffi@goffi.org>
parents:
diff changeset
101
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
102 def contact_del(self, to, profile_key):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
103 # TODO
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
104 pass
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
105
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
106 def register_callback(self, callback, *args, **kwargs):
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
107 pass
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
108
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
109 def message_send(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
110 self, to_s, msg, subject=None, mess_type="auto", extra={}, profile_key="@NONE@"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
111 ):
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
112 self.send_and_store_message({"to": JID(to_s)})
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
113
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
114 def _send_message_to_stream(self, mess_data, client):
1206
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
115 """Save the information to check later to whom messages have been sent.
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
116
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
117 @param mess_data: message data dictionnary
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
118 @param client: profile's client
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
119 """
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
120 client.xmlstream.send(mess_data["xml"])
1206
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
121 return mess_data
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
122
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
123 def _store_message(self, mess_data, client):
1206
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
124 """Save the information to check later if entries have been added to the history.
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
125
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
126 @param mess_data: message data dictionnary
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
127 @param client: profile's client
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
128 """
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
129 self.stored_messages.append(mess_data["to"])
1206
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
130 return mess_data
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
131
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
132 def send_message_to_bridge(self, mess_data, client):
1206
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
133 """Simulate the message being sent to the frontends.
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
134
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
135 @param mess_data: message data dictionnary
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
136 @param client: profile's client
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
137 """
020e663bc286 test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents: 1037
diff changeset
138 return mess_data # TODO
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
139
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
140 def get_profile_name(self, profile_key):
1284
41ffe2c2dddc plugin XEP-0313: update (still draft)
souliane <souliane@mailoo.org>
parents: 1277
diff changeset
141 """Get the profile name from the profile_key"""
41ffe2c2dddc plugin XEP-0313: update (still draft)
souliane <souliane@mailoo.org>
parents: 1277
diff changeset
142 return profile_key
41ffe2c2dddc plugin XEP-0313: update (still draft)
souliane <souliane@mailoo.org>
parents: 1277
diff changeset
143
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
144 def get_client(self, profile_key):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
145 """Convenient method to get client from profile key
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
146 @return: client or None if it doesn't exist"""
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
147 profile = self.memory.get_profile_name(profile_key)
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
148 if not profile:
1624
7e749e8eefd0 core: fixed launchAction:
Goffi <goffi@goffi.org>
parents: 1412
diff changeset
149 raise exceptions.ProfileKeyUnknown
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
150 if profile not in self.profiles:
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
151 self.profiles[profile] = FakeClient(self, profile)
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
152 return self.profiles[profile]
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
153
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
154 def get_jid_n_stream(self, profile_key):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
155 """Convenient method to get jid and stream from profile key
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
156 @return: tuple (jid, xmlstream) from profile, can be None"""
1269
91e5becc6623 test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents: 1206
diff changeset
157 return (C.PROFILE_DICT[profile_key], None)
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
158
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
159 def is_connected(self, profile):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
160 return True
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
161
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
162 def get_sent_messages(self, profile_index):
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
163 """Return all the sent messages (in the order they have been sent) and
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
164 empty the list. Called by tests. FakeClient instances associated to each
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
165 profile must have been previously initialized with the method
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
166 FakeSAT.get_client.
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
167
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
168 @param profile_index: index of the profile to consider (cf. C.PROFILE)
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
169 @return: the sent messages for given profile, or None"""
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
170 try:
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
171 tmp = self.profiles[C.PROFILE[profile_index]].xmlstream.sent
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
172 self.profiles[C.PROFILE[profile_index]].xmlstream.sent = []
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
173 return tmp
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
174 except IndexError:
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
175 return None
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
176
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
177 def get_sent_message(self, profile_index):
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
178 """Pop and return the sent message in first position (works like a FIFO).
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
179 Called by tests. FakeClient instances associated to each profile must have
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
180 been previously initialized with the method FakeSAT.get_client.
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
181
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
182 @param profile_index: index of the profile to consider (cf. C.PROFILE)
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
183 @return: the sent message for given profile, or None"""
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
184 try:
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
185 return self.profiles[C.PROFILE[profile_index]].xmlstream.sent.pop(0)
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
186 except IndexError:
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
187 return None
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
188
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
189 def get_sent_message_xml(self, profile_index):
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
190 """Pop and return the sent message in first position (works like a FIFO).
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
191 Called by tests. FakeClient instances associated to each profile must have
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
192 been previously initialized with the method FakeSAT.get_client.
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
193 @return: XML representation of the sent message for given profile, or None"""
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
194 entry = self.get_sent_message(profile_index)
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
195 return entry.toXml() if entry else None
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
196
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
197 def find_features_set(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
198 self, features, identity=None, jid_=None, profile=C.PROF_KEY_NONE
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
199 ):
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
200 """Call self.add_feature from your tests to change the return value.
999
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
201
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
202 @return: a set of entities
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
203 """
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
204 client = self.get_client(profile)
999
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
205 if jid_ is None:
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
206 jid_ = JID(client.jid.host)
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
207 try:
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
208 if set(features).issubset(client.features[jid_]):
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
209 return defer.succeed(set([jid_]))
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
210 except (TypeError, AttributeError, KeyError):
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
211 pass
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
212 return defer.succeed(set())
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
213
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
214 def add_feature(self, jid_, feature, profile_key):
999
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
215 """Add a feature to an entity.
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
216
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
217 To be called from your tests when needed.
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
218 """
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
219 client = self.get_client(profile_key)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
220 if not hasattr(client, "features"):
999
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
221 client.features = {}
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
222 if jid_ not in client.features:
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
223 client.features[jid_] = set()
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
224 client.features[jid_].add(feature)
c37a24922f27 plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents: 998
diff changeset
225
335
Goffi <goffi@goffi.org>
parents:
diff changeset
226
Goffi <goffi@goffi.org>
parents:
diff changeset
227 class FakeBridge(object):
Goffi <goffi@goffi.org>
parents:
diff changeset
228 """Class to simulate and test bridge calls"""
Goffi <goffi@goffi.org>
parents:
diff changeset
229
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
230 def __init__(self):
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
231 self.expected_calls = {}
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
232
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
233 def expect_call(self, name, *check_args, **check_kwargs):
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
234 if hasattr(self, name): # queue this new call as one already exists
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
235 self.expected_calls.setdefault(name, [])
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
236 self.expected_calls[name].append((check_args, check_kwargs))
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
237 return
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
238
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
239 def check_call(*args, **kwargs):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
240 if args != check_args or kwargs != check_kwargs:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
241 print("\n\n--------------------")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
242 print("Args are not equals:")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
243 print("args\n----\n%s (sent)\n%s (wanted)" % (args, check_args))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
244 print("kwargs\n------\n%s (sent)\n%s (wanted)" % (kwargs, check_kwargs))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
245 print("--------------------\n\n")
335
Goffi <goffi@goffi.org>
parents:
diff changeset
246 raise DifferentArgsException
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
247 delattr(self, name)
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
248
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
249 if name in self.expected_calls: # register the next call
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
250 args, kwargs = self.expected_calls[name].pop(0)
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
251 if len(self.expected_calls[name]) == 0:
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
252 del self.expected_calls[name]
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
253 self.expect_call(name, *args, **kwargs)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
254
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
255 setattr(self, name, check_call)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
256
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
257 def add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
258 self, name, int_suffix, in_sign, out_sign, method, async_=False, doc=None
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
259 ):
694
4284b6ad8aa3 tests: plugin text syntaxes sanitisation tests
Goffi <goffi@goffi.org>
parents: 693
diff changeset
260 pass
335
Goffi <goffi@goffi.org>
parents:
diff changeset
261
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
262 def add_signal(self, name, int_suffix, signature):
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
263 pass
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
264
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
265 def add_test_callback(self, name, method):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
266 """This can be used to register callbacks for bridge methods AND signals.
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
267 Contrary to expect_call, this will not check if the method or signal is
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
268 called/sent with the correct arguments, it will instead run the callback
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
269 of your choice."""
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
270 setattr(self, name, method)
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
271
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
272
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
273 class FakeParams(Params):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
274 """Class to simulate and test params object. The methods of Params that could
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
275 not be run (for example those using the storage attribute must be overwritten
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
276 by a naive simulation of what they should do."""
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
277
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
278 def __init__(self, host, storage):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
279 Params.__init__(self, host, storage)
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
280 self.params = {} # naive simulation of values storage
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
281
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
282 def param_set(self, name, value, category, security_limit=-1, profile_key="@NONE@"):
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
283 profile = self.get_profile_name(profile_key)
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
284 self.params.setdefault(profile, {})
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
285 self.params[profile_key][(category, name)] = value
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
286
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
287 def param_get_a(self, name, category, attr="value", profile_key="@NONE@"):
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
288 profile = self.get_profile_name(profile_key)
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
289 return self.params[profile][(category, name)]
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
290
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
291 def get_profile_name(self, profile_key, return_profile_keys=False):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
292 if profile_key == "@DEFAULT@":
1269
91e5becc6623 test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents: 1206
diff changeset
293 return C.PROFILE[0]
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
294 elif profile_key == "@NONE@":
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
295 raise exceptions.ProfileNotSetError
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
296 else:
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
297 return profile_key
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
298
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
299 def load_ind_params(self, profile, cache=None):
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
300 self.params[profile] = {}
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
301 return defer.succeed(None)
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
302
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
303
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
304 class FakeMemory(Memory):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
305 """Class to simulate and test memory object"""
Goffi <goffi@goffi.org>
parents:
diff changeset
306
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
307 def __init__(self, host):
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
308 # do not call Memory.__init__, we just want to call the methods that are
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
309 # manipulating basic stuff, the others should be overwritten when needed
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
310 self.host = host
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
311 self.params = FakeParams(host, None)
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
312 self.config = tools_config.parse_main_conf()
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
313 self.reinit()
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
314
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
315 def reinit(self):
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
316 """Tests that manipulate params, entities, features should
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
317 re-initialise the memory first to not fake the result."""
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
318 self.params.load_default_params()
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
319 self.params.params.clear()
833
9bac2fc74968 memory: bug fix to not register twice frontends parameters + added some tests for param update
souliane <souliane@mailoo.org>
parents: 829
diff changeset
320 self.params.frontends_cache = []
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
321 self.entities_data = {}
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
322
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
323 def get_profile_name(self, profile_key, return_profile_keys=False):
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
324 return self.params.get_profile_name(profile_key, return_profile_keys)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
325
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
326 def add_to_history(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
327 self,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
328 from_jid,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
329 to_jid,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
330 message,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
331 _type="chat",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
332 extra=None,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
333 timestamp=None,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
334 profile="@NONE@",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
335 ):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
336 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
337
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
338 def contact_add(self, contact_jid, attributes, groups, profile_key="@DEFAULT@"):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
339 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
340
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
341 def set_presence_status(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
342 self, contact_jid, show, priority, statuses, profile_key="@DEFAULT@"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
343 ):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
344 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
345
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
346 def add_waiting_sub(self, type_, contact_jid, profile_key):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
347 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
348
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
349 def del_waiting_sub(self, contact_jid, profile_key):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
350 pass
Goffi <goffi@goffi.org>
parents:
diff changeset
351
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
352 def update_entity_data(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
353 self, entity_jid, key, value, silent=False, profile_key="@NONE@"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
354 ):
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
355 self.entities_data.setdefault(entity_jid, {})
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
356 self.entities_data[entity_jid][key] = value
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
357
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
358 def entity_data_get(self, entity_jid, keys, profile_key):
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
359 result = {}
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
360 for key in keys:
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
361 result[key] = self.entities_data[entity_jid][key]
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
362 return result
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
363
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
364
335
Goffi <goffi@goffi.org>
parents:
diff changeset
365 class FakeTriggerManager(object):
Goffi <goffi@goffi.org>
parents:
diff changeset
366
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
367 def add(self, point_name, callback, priority=0):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
368 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
369
335
Goffi <goffi@goffi.org>
parents:
diff changeset
370 def point(self, point_name, *args, **kwargs):
Goffi <goffi@goffi.org>
parents:
diff changeset
371 """We always return true to continue the action"""
Goffi <goffi@goffi.org>
parents:
diff changeset
372 return True
Goffi <goffi@goffi.org>
parents:
diff changeset
373
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
374
4107
bc7d45dedeb0 backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents: 4078
diff changeset
375 class FakeRosterProtocol(LiberviaRosterProtocol):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
376 """This class is used by FakeClient (one instance per profile)"""
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
377
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
378 def __init__(self, host, parent):
4107
bc7d45dedeb0 backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents: 4078
diff changeset
379 LiberviaRosterProtocol.__init__(self, host)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
380 self.parent = parent
1412
979210da778a test: fix the tests
souliane <souliane@mailoo.org>
parents: 1396
diff changeset
381 self._jids = {}
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
382 self.add_item(parent.jid.userhostJID())
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
383
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
384 def add_item(self, jid, *args, **kwargs):
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
385 if not args and not kwargs:
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
386 # defaults values setted for the tests only
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
387 kwargs["subscriptionTo"] = True
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
388 kwargs["subscriptionFrom"] = True
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
389 roster_item = RosterItem(jid, *args, **kwargs)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
390 attrs = {
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
391 "to": b2s(roster_item.subscriptionTo),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
392 "from": b2s(roster_item.subscriptionFrom),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
393 "ask": b2s(roster_item.pendingOut),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
394 }
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
395 if roster_item.name:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
396 attrs["name"] = roster_item.name
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
397 self.host.bridge.expect_call(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
398 "contact_new", jid.full(), attrs, roster_item.groups, self.parent.profile
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
399 )
1412
979210da778a test: fix the tests
souliane <souliane@mailoo.org>
parents: 1396
diff changeset
400 self._jids[jid] = roster_item
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
401 self._register_item(roster_item)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
402
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
403
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
404 class FakeXmlStream(object):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
405 """This class is used by FakeClient (one instance per profile)"""
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
406
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
407 def __init__(self):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
408 self.sent = []
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
409
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
410 def send(self, obj):
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
411 """Save the sent messages to compare them later.
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
412
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
413 @param obj (domish.Element, str or unicode): message to send
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
414 """
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
415 if not isinstance(obj, domish.Element):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
416 assert isinstance(obj, str) or isinstance(obj, str)
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
417 obj = parseXml(obj)
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
418
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
419 if obj.name == "iq":
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
420 # IQ request expects an answer, return the request itself so
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
421 # you can check if it has been well built by your plugin.
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
422 self.iqDeferreds[obj["id"]].callback(obj)
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
423
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
424 self.sent.append(obj)
849
c5a8f602662b plugin room_game, radiocol: RoomGame.send returns a Deferred.
souliane <souliane@mailoo.org>
parents: 833
diff changeset
425 return defer.succeed(None)
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
426
1277
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
427 def addObserver(self, *argv):
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
428 pass
3a3e3014f9f8 plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents: 1271
diff changeset
429
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
430
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
431 class FakeClient(object):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
432 """Tests involving more than one profile need one instance of this class per profile"""
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
433
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
434 def __init__(self, host, profile=None):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
435 self.host = host
1269
91e5becc6623 test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents: 1206
diff changeset
436 self.profile = profile if profile else C.PROFILE[0]
91e5becc6623 test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents: 1206
diff changeset
437 self.jid = C.PROFILE_DICT[self.profile]
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
438 self.roster = FakeRosterProtocol(host, self)
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
439 self.xmlstream = FakeXmlStream()
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
440
1271
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
441 def reinit(self):
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
442 self.xmlstream = FakeXmlStream()
2308f8405ffb test: refactoring:
souliane <souliane@mailoo.org>
parents: 1269
diff changeset
443
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
444 def send(self, obj):
849
c5a8f602662b plugin room_game, radiocol: RoomGame.send returns a Deferred.
souliane <souliane@mailoo.org>
parents: 833
diff changeset
445 return self.xmlstream.send(obj)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
446
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
447
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
448 class SatTestCase(unittest.TestCase):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
449
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
450 def assert_equal_xml(self, xml, expected, ignore_blank=False):
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
451 def equal_elt(got_elt, exp_elt):
696
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
452 if ignore_blank:
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
453 for elt in got_elt, exp_elt:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
454 for attr in ("text", "tail"):
696
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
455 value = getattr(elt, attr)
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
456 try:
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
457 value = value.strip() or None
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
458 except AttributeError:
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
459 value = None
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
460 setattr(elt, attr, value)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
461 if got_elt.tag != exp_elt.tag:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
462 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
463 print("tag: got [%s] expected: [%s]" % (got_elt.tag, exp_elt.tag))
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
464 return False
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
465 if got_elt.attrib != exp_elt.attrib:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
466 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
467 print("attribs: got %s expected %s" % (got_elt.attrib, exp_elt.attrib))
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
468 return False
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
469 if got_elt.tail != exp_elt.tail or got_elt.text != exp_elt.text:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
470 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
471 print("text: got [%s] expected: [%s]" % (got_elt.text, exp_elt.text))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
472 print("tail: got [%s] expected: [%s]" % (got_elt.tail, exp_elt.tail))
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
473 return False
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
474 if len(got_elt) != len(exp_elt):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
475 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt))
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
476 print("children len: got %d expected: %d" % (len(got_elt), len(exp_elt)))
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
477 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
478 for idx, child in enumerate(got_elt):
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
479 if not equal_elt(child, exp_elt[idx]):
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
480 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
481 return True
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
482
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
483 def remove_blank(xml):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
484 lines = [
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
485 line.strip() for line in re.sub(r"[ \t\r\f\v]+", " ", xml).split("\n")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
486 ]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
487 return "\n".join([line for line in lines if line])
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
488
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
489 xml_elt = etree.fromstring(remove_blank(xml) if ignore_blank else xml)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
490 expected_elt = etree.fromstring(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
491 remove_blank(expected) if ignore_blank else expected
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
492 )
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
493
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
494 if not equal_elt(xml_elt, expected_elt):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
495 print("---")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
496 print("XML are not equals:")
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
497 print("got:\n-\n%s\n-\n\n" % etree.tostring(xml_elt, encoding="utf-8"))
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
498 print(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
499 "was expecting:\n-\n%s\n-\n\n"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
500 % etree.tostring(expected_elt, encoding="utf-8")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4107
diff changeset
501 )
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
502 print("---")
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
503 raise DifferentXMLException
789
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
504
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
505 def assert_equal_unsorted_list(self, a, b, msg):
789
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
506 counter_a = Counter(a)
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
507 counter_b = Counter(b)
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
508 if counter_a != counter_b:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
509 print("---")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
510 print("Unsorted lists are not equals:")
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
511 print("got : %s" % counter_a)
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
512 print("was expecting: %s" % counter_b)
789
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
513 if msg:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
514 print(msg)
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
515 print("---")
789
0cb423500fbb test: use the SatTestCase methods instead of builtin "assert" in tests for memory, plugin xep-0033
souliane <souliane@mailoo.org>
parents: 786
diff changeset
516 raise DifferentListException