Mercurial > libervia-backend
annotate libervia/backend/test/helpers.py @ 4118:07370d2a9bde
plugin XEP-0167: keep media order when starting a call:
media content order is relevant when building Jingle contents/SDP notably for bundling.
This patch fixes the previous behaviour of always using the same order by keeping the
order of the data (i.e. order of original SDP offer). Previous behaviour could lead to
call failure.
rel 424
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 03 Oct 2023 15:15:24 +0200 |
parents | bc7d45dedeb0 |
children | 0d7bb4df2343 |
rev | line source |
---|---|
3028 | 1 #!/usr/bin/env python3 |
3137 | 2 |
335 | 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 | 5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org) |
335 | 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 | 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 | 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 | 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 |
4078
15055a00162c
refactoring: rename `sat_configure` to `libervia_configure`
Goffi <goffi@goffi.org>
parents:
4071
diff
changeset
|
23 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
|
24 |
1909
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
25 import logging |
4071
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
26 from libervia.backend.core.log import getLogger |
1909
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
27 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
|
28 |
4071
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
29 from libervia.backend.core import exceptions |
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
30 from libervia.backend.tools import config as tools_config |
3028 | 31 from .constants import Const as C |
649 | 32 from wokkel.xmppim import RosterItem |
1277
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
33 from wokkel.generic import parseXml |
4107
bc7d45dedeb0
backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents:
4078
diff
changeset
|
34 from libervia.backend.core.xmpp import LiberviaRosterProtocol |
4071
4b842c1fb686
refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents:
4037
diff
changeset
|
35 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
|
36 from twisted.trial.unittest import FailTest |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
37 from twisted.trial import unittest |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
38 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
|
39 from twisted.words.protocols.jabber.jid import JID |
1277
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
40 from twisted.words.xish import domish |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
41 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
|
42 from collections import Counter |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
43 import re |
335 | 44 |
45 | |
649 | 46 def b2s(value): |
47 """Convert a bool to a unicode string used in bridge | |
48 @param value: boolean value | |
49 @return: unicode conversion, according to bridge convention | |
50 | |
51 """ | |
3028 | 52 return "True" if value else "False" |
591
65821b3fa7ab
Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
53 |
780
9810f22ba733
test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
54 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
55 def mute_logging(): |
1909
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
56 """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
|
57 logger = getLogger() |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
58 logger.original_level = logger.getEffectiveLevel() |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
59 logger.setLevel(logging.CRITICAL) |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
60 |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
61 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
62 def unmute_logging(): |
1909
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
63 """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
|
64 logger = getLogger() |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
65 logger.setLevel(logger.original_level) |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
66 |
0681d69cbe0a
test: add helpers methods muteLogging and unmuteLogging
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
67 |
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
|
68 class DifferentArgsException(FailTest): |
335 | 69 pass |
70 | |
780
9810f22ba733
test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
71 |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
72 class DifferentXMLException(FailTest): |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
73 pass |
591
65821b3fa7ab
Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
74 |
780
9810f22ba733
test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
75 |
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
|
76 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
|
77 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
|
78 |
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 |
335 | 80 class FakeSAT(object): |
81 """Class to simulate a SAT instance""" | |
82 | |
83 def __init__(self): | |
84 self.bridge = FakeBridge() | |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
85 self.memory = FakeMemory(self) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
86 self.trigger = FakeTriggerManager() |
1271 | 87 self.profiles = {} |
88 self.reinit() | |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
89 |
1271 | 90 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
|
91 """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
|
92 uses FakeClient or get/set some other data that need to be cleaned""" |
1271 | 93 for profile in self.profiles: |
94 self.profiles[profile].reinit() | |
95 self.memory.reinit() | |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
96 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
|
97 self.plugins = {} |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
98 self.profiles = {} |
335 | 99 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
100 def contact_del(self, to, profile_key): |
649 | 101 #TODO |
102 pass | |
103 | |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
104 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
|
105 pass |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
106 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
107 def message_send(self, to_s, msg, subject=None, mess_type='auto', extra={}, profile_key='@NONE@'): |
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
108 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
|
109 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
110 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
|
111 """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
|
112 |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
113 @param mess_data: message data dictionnary |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
114 @param client: profile's client |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
115 """ |
1271 | 116 client.xmlstream.send(mess_data['xml']) |
1206
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
117 return mess_data |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
118 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
119 def _store_message(self, mess_data, client): |
1206
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
120 """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
|
121 |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
122 @param mess_data: message data dictionnary |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
123 @param client: profile's client |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
124 """ |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
125 self.stored_messages.append(mess_data["to"]) |
1206
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
126 return mess_data |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
127 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
128 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
|
129 """Simulate the message being sent to the frontends. |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
130 |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
131 @param mess_data: message data dictionnary |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
132 @param client: profile's client |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
133 """ |
020e663bc286
test: fixes FakeSAT for plugin XEP-0033
souliane <souliane@mailoo.org>
parents:
1037
diff
changeset
|
134 return mess_data # TODO |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
135 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
136 def get_profile_name(self, profile_key): |
1284
41ffe2c2dddc
plugin XEP-0313: update (still draft)
souliane <souliane@mailoo.org>
parents:
1277
diff
changeset
|
137 """Get the profile name from the profile_key""" |
41ffe2c2dddc
plugin XEP-0313: update (still draft)
souliane <souliane@mailoo.org>
parents:
1277
diff
changeset
|
138 return profile_key |
41ffe2c2dddc
plugin XEP-0313: update (still draft)
souliane <souliane@mailoo.org>
parents:
1277
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_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
|
141 """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
|
142 @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
|
143 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
|
144 if not profile: |
1624 | 145 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
|
146 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
|
147 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
|
148 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
|
149 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
150 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
|
151 """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
|
152 @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
|
153 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
|
154 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
155 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
|
156 return True |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
157 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
158 def get_sent_messages(self, profile_index): |
1271 | 159 """Return all the sent messages (in the order they have been sent) and |
160 empty the list. Called by tests. FakeClient instances associated to each | |
161 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
|
162 FakeSAT.get_client. |
1271 | 163 |
164 @param profile_index: index of the profile to consider (cf. C.PROFILE) | |
165 @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
|
166 try: |
1271 | 167 tmp = self.profiles[C.PROFILE[profile_index]].xmlstream.sent |
168 self.profiles[C.PROFILE[profile_index]].xmlstream.sent = [] | |
169 return tmp | |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
170 except IndexError: |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
171 return None |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
172 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
173 def get_sent_message(self, profile_index): |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
174 """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
|
175 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
|
176 been previously initialized with the method FakeSAT.get_client. |
1271 | 177 |
178 @param profile_index: index of the profile to consider (cf. C.PROFILE) | |
179 @return: the sent message for given profile, or None""" | |
180 try: | |
181 return self.profiles[C.PROFILE[profile_index]].xmlstream.sent.pop(0) | |
182 except IndexError: | |
183 return None | |
184 | |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
185 def get_sent_message_xml(self, profile_index): |
1271 | 186 """Pop and return the sent message in first position (works like a FIFO). |
187 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
|
188 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
|
189 @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
|
190 entry = self.get_sent_message(profile_index) |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
191 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
|
192 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
193 def find_features_set(self, features, identity=None, jid_=None, profile=C.PROF_KEY_NONE): |
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
194 """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
|
195 |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
196 @return: a set of entities |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
197 """ |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
198 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
|
199 if jid_ is None: |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
200 jid_ = JID(client.jid.host) |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
201 try: |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
202 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
|
203 return defer.succeed(set([jid_])) |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
204 except (TypeError, AttributeError, KeyError): |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
205 pass |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
206 return defer.succeed(set()) |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
207 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
208 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
|
209 """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
|
210 |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
211 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
|
212 """ |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
213 client = self.get_client(profile_key) |
999
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
214 if not hasattr(client, 'features'): |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
215 client.features = {} |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
216 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
|
217 client.features[jid_] = set() |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
218 client.features[jid_].add(feature) |
c37a24922f27
plugin XEP_0033: fixes the server part and the tests
souliane <souliane@mailoo.org>
parents:
998
diff
changeset
|
219 |
335 | 220 |
221 class FakeBridge(object): | |
222 """Class to simulate and test bridge calls""" | |
223 | |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
224 def __init__(self): |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
225 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
|
226 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
227 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
|
228 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
|
229 self.expected_calls.setdefault(name, []) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
230 self.expected_calls[name].append((check_args, check_kwargs)) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
231 return |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
232 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
233 def check_call(*args, **kwargs): |
335 | 234 if args != check_args or kwargs != check_kwargs: |
3028 | 235 print("\n\n--------------------") |
236 print("Args are not equals:") | |
237 print("args\n----\n%s (sent)\n%s (wanted)" % (args, check_args)) | |
238 print("kwargs\n------\n%s (sent)\n%s (wanted)" % (kwargs, check_kwargs)) | |
239 print("--------------------\n\n") | |
335 | 240 raise DifferentArgsException |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
241 delattr(self, name) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
242 |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
243 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
|
244 args, kwargs = self.expected_calls[name].pop(0) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
245 if len(self.expected_calls[name]) == 0: |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
246 del self.expected_calls[name] |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
247 self.expect_call(name, *args, **kwargs) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
248 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
249 setattr(self, name, check_call) |
335 | 250 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
251 def add_method(self, name, int_suffix, in_sign, out_sign, method, async_=False, doc=None): |
694
4284b6ad8aa3
tests: plugin text syntaxes sanitisation tests
Goffi <goffi@goffi.org>
parents:
693
diff
changeset
|
252 pass |
335 | 253 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
254 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
|
255 pass |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
256 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
257 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
|
258 """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
|
259 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
|
260 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
|
261 of your choice.""" |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
262 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
|
263 |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
264 |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
265 class FakeParams(Params): |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
266 """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
|
267 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
|
268 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
|
269 |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
270 def __init__(self, host, storage): |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
271 Params.__init__(self, host, storage) |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
272 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
|
273 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
274 def param_set(self, name, value, category, security_limit=-1, profile_key='@NONE@'): |
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
275 profile = self.get_profile_name(profile_key) |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
276 self.params.setdefault(profile, {}) |
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
277 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
|
278 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
279 def param_get_a(self, name, category, attr="value", profile_key='@NONE@'): |
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
280 profile = self.get_profile_name(profile_key) |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
281 return self.params[profile][(category, name)] |
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
282 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
283 def get_profile_name(self, profile_key, return_profile_keys=False): |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
284 if profile_key == '@DEFAULT@': |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
1206
diff
changeset
|
285 return C.PROFILE[0] |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
286 elif profile_key == '@NONE@': |
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
287 raise exceptions.ProfileNotSetError |
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
288 else: |
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
289 return profile_key |
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 load_ind_params(self, profile, cache=None): |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
292 self.params[profile] = {} |
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
293 return defer.succeed(None) |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
294 |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
295 |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
296 class FakeMemory(Memory): |
335 | 297 """Class to simulate and test memory object""" |
298 | |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
299 def __init__(self, host): |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
300 # 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
|
301 # 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
|
302 self.host = host |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
303 self.params = FakeParams(host, None) |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
304 self.config = tools_config.parse_main_conf() |
1271 | 305 self.reinit() |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
306 |
1271 | 307 def reinit(self): |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
308 """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
|
309 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
|
310 self.params.load_default_params() |
782
0e5807193721
test: added some tests for Memory
souliane <souliane@mailoo.org>
parents:
781
diff
changeset
|
311 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
|
312 self.params.frontends_cache = [] |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
313 self.entities_data = {} |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
314 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
315 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
|
316 return self.params.get_profile_name(profile_key, return_profile_keys) |
335 | 317 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
318 def add_to_history(self, from_jid, to_jid, message, _type='chat', extra=None, timestamp=None, profile="@NONE@"): |
335 | 319 pass |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
320 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
321 def contact_add(self, contact_jid, attributes, groups, profile_key='@DEFAULT@'): |
335 | 322 pass |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
323 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
324 def set_presence_status(self, contact_jid, show, priority, statuses, profile_key='@DEFAULT@'): |
335 | 325 pass |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
326 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
327 def add_waiting_sub(self, type_, contact_jid, profile_key): |
335 | 328 pass |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
329 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
330 def del_waiting_sub(self, contact_jid, profile_key): |
335 | 331 pass |
332 | |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
333 def update_entity_data(self, entity_jid, key, value, silent=False, profile_key="@NONE@"): |
781
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
334 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
|
335 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
|
336 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
337 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
|
338 result = {} |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
339 for key in keys: |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
340 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
|
341 return result |
80ab2b58e205
test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents:
780
diff
changeset
|
342 |
591
65821b3fa7ab
Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
343 |
335 | 344 class FakeTriggerManager(object): |
345 | |
786
c3acc1298a2f
test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents:
782
diff
changeset
|
346 def add(self, point_name, callback, priority=0): |
335 | 347 pass |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
348 |
335 | 349 def point(self, point_name, *args, **kwargs): |
350 """We always return true to continue the action""" | |
351 return True | |
352 | |
780
9810f22ba733
test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
353 |
4107
bc7d45dedeb0
backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents:
4078
diff
changeset
|
354 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
|
355 """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
|
356 |
649 | 357 def __init__(self, host, parent): |
4107
bc7d45dedeb0
backend: rename `SatRosterProtocol` to `LiberviaRosterProtocol`
Goffi <goffi@goffi.org>
parents:
4078
diff
changeset
|
358 LiberviaRosterProtocol.__init__(self, host) |
649 | 359 self.parent = parent |
1412 | 360 self._jids = {} |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
361 self.add_item(parent.jid.userhostJID()) |
649 | 362 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
363 def add_item(self, jid, *args, **kwargs): |
649 | 364 if not args and not kwargs: |
365 # defaults values setted for the tests only | |
366 kwargs["subscriptionTo"] = True | |
367 kwargs["subscriptionFrom"] = True | |
368 roster_item = RosterItem(jid, *args, **kwargs) | |
369 attrs = {'to': b2s(roster_item.subscriptionTo), 'from': b2s(roster_item.subscriptionFrom), 'ask': b2s(roster_item.pendingOut)} | |
370 if roster_item.name: | |
371 attrs['name'] = roster_item.name | |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
372 self.host.bridge.expect_call("contact_new", jid.full(), attrs, roster_item.groups, self.parent.profile) |
1412 | 373 self._jids[jid] = roster_item |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
374 self._register_item(roster_item) |
649 | 375 |
376 | |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
377 class FakeXmlStream(object): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
378 """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
|
379 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
380 def __init__(self): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
381 self.sent = [] |
649 | 382 |
383 def send(self, obj): | |
1277
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
384 """Save the sent messages to compare them later. |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
385 |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
386 @param obj (domish.Element, str or unicode): message to send |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
387 """ |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
388 if not isinstance(obj, domish.Element): |
3028 | 389 assert(isinstance(obj, str) or isinstance(obj, str)) |
1277
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
390 obj = parseXml(obj) |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
391 |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
392 if obj.name == 'iq': |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
393 # IQ request expects an answer, return the request itself so |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
394 # you can check if it has been well built by your plugin. |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
395 self.iqDeferreds[obj['id']].callback(obj) |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
396 |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
397 self.sent.append(obj) |
849
c5a8f602662b
plugin room_game, radiocol: RoomGame.send returns a Deferred.
souliane <souliane@mailoo.org>
parents:
833
diff
changeset
|
398 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
|
399 |
1277
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
400 def addObserver(self, *argv): |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
401 pass |
3a3e3014f9f8
plugin XEP-0313: first draft:
souliane <souliane@mailoo.org>
parents:
1271
diff
changeset
|
402 |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
403 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
404 class FakeClient(object): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
405 """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
|
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, host, profile=None): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
408 self.host = host |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
1206
diff
changeset
|
409 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
|
410 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
|
411 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
|
412 self.xmlstream = FakeXmlStream() |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
413 |
1271 | 414 def reinit(self): |
415 self.xmlstream = FakeXmlStream() | |
416 | |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
792
diff
changeset
|
417 def send(self, obj): |
849
c5a8f602662b
plugin room_game, radiocol: RoomGame.send returns a Deferred.
souliane <souliane@mailoo.org>
parents:
833
diff
changeset
|
418 return self.xmlstream.send(obj) |
335 | 419 |
591
65821b3fa7ab
Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
420 |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
421 class SatTestCase(unittest.TestCase): |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
422 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
423 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
|
424 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
|
425 if ignore_blank: |
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
426 for elt in got_elt, exp_elt: |
780
9810f22ba733
test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
427 for attr in ('text', 'tail'): |
696
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
428 value = getattr(elt, attr) |
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
429 try: |
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
430 value = value.strip() or None |
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
431 except AttributeError: |
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
432 value = None |
f1a2831d549d
test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents:
694
diff
changeset
|
433 setattr(elt, attr, value) |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
434 if (got_elt.tag != exp_elt.tag): |
3028 | 435 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt)) |
436 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
|
437 return False |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
438 if (got_elt.attrib != exp_elt.attrib): |
3028 | 439 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt)) |
440 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
|
441 return False |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
442 if (got_elt.tail != exp_elt.tail or got_elt.text != exp_elt.text): |
3028 | 443 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt)) |
444 print("text: got [%s] expected: [%s]" % (got_elt.text, exp_elt.text)) | |
445 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
|
446 return False |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
447 if (len(got_elt) != len(exp_elt)): |
3028 | 448 print("XML are not equals (elt %s/%s):" % (got_elt, exp_elt)) |
449 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
|
450 return False |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
451 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
|
452 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
|
453 return False |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
454 return True |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
455 |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
456 def remove_blank(xml): |
780
9810f22ba733
test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents:
771
diff
changeset
|
457 lines = [line.strip() for line in re.sub(r'[ \t\r\f\v]+', ' ', xml).split('\n')] |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
458 return '\n'.join([line for line in lines if line]) |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
459 |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
460 xml_elt = etree.fromstring(remove_blank(xml) if ignore_blank else xml) |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
461 expected_elt = etree.fromstring(remove_blank(expected) if ignore_blank else expected) |
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
462 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
463 if not equal_elt(xml_elt, expected_elt): |
3028 | 464 print("---") |
465 print("XML are not equals:") | |
466 print("got:\n-\n%s\n-\n\n" % etree.tostring(xml_elt, encoding='utf-8')) | |
467 print("was expecting:\n-\n%s\n-\n\n" % etree.tostring(expected_elt, encoding='utf-8')) | |
468 print("---") | |
693
65b30bc7f1b3
tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents:
669
diff
changeset
|
469 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
|
470 |
4037
524856bd7b19
massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
471 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
|
472 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
|
473 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
|
474 if counter_a != counter_b: |
3028 | 475 print("---") |
476 print("Unsorted lists are not equals:") | |
477 print("got : %s" % counter_a) | |
478 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
|
479 if msg: |
3028 | 480 print(msg) |
481 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
|
482 raise DifferentListException |