annotate src/test/helpers.py @ 829:187d2443c82d

test: improvements for the helpers classes: - simplification for retrieving the sent messages - an expected bridge call which is already set can no more be overwritten with new arguments for the same method name. The new arguments are stored in a FIFO list instead, and each call of the method also registers the arguments for the next call.
author souliane <souliane@mailoo.org>
date Wed, 15 Jan 2014 23:22:07 +0100
parents 1fe00f0c9a91
children 9bac2fc74968
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
335
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/python
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
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
811
1fe00f0c9a91 dates update
Goffi <goffi@goffi.org>
parents: 794
diff changeset
5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 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
771
bfabeedbf32e core: i18n refactoring:
Goffi <goffi@goffi.org>
parents: 696
diff changeset
20 from sat.core.i18n import _
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
21 from sat.core import exceptions
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
22 from constants import Const
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
23 from wokkel.xmppim import RosterItem
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
24 from sat.core.xmpp import SatRosterProtocol
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
25 from sat.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
26 from twisted.trial.unittest import FailTest
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
27 from twisted.trial import unittest
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
28 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
29 from twisted.words.protocols.jabber.jid import JID
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
30 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
31 from collections import Counter
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
32 import re
335
Goffi <goffi@goffi.org>
parents:
diff changeset
33
Goffi <goffi@goffi.org>
parents:
diff changeset
34
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
35 def b2s(value):
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
36 """Convert a bool to a unicode string used in bridge
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
37 @param value: boolean value
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
38 @return: unicode conversion, according to bridge convention
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
39
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
40 """
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
41 return u"True" if value else u"False"
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
42
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
43
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
44 class DifferentArgsException(FailTest):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
45 pass
Goffi <goffi@goffi.org>
parents:
diff changeset
46
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
47
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
48 class DifferentXMLException(FailTest):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
49 pass
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
50
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
51
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
52 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
53 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
54
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
55
335
Goffi <goffi@goffi.org>
parents:
diff changeset
56 class FakeSAT(object):
Goffi <goffi@goffi.org>
parents:
diff changeset
57 """Class to simulate a SAT instance"""
Goffi <goffi@goffi.org>
parents:
diff changeset
58
Goffi <goffi@goffi.org>
parents:
diff changeset
59 def __init__(self):
Goffi <goffi@goffi.org>
parents:
diff changeset
60 self.bridge = FakeBridge()
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
61 self.memory = FakeMemory(self)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
62 self.trigger = FakeTriggerManager()
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
63 self.init()
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
64
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
65 def init(self):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
66 """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
67 uses FakeClient or get/set some other data that need to be cleaned"""
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
68 self.sent_messages = []
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
69 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
70 self.plugins = {}
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
71 self.profiles = {}
335
Goffi <goffi@goffi.org>
parents:
diff changeset
72
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
73 def delContact(self, to, profile_key):
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
74 #TODO
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
75 pass
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
76
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
77 def registerCallback(self, callback, *args, **kwargs):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
78 pass
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
79
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
80 def registerNewAccountCB(self, data, profile):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
81 pass
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
82
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
83 def sendMessage(self, to_s, msg, subject=None, mess_type='auto', extra={}, profile_key='@NONE@'):
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
84 self.sendAndStoreMessage({"to": JID(to_s)})
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
85
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
86 def sendAndStoreMessage(self, mess_data, skip_send=False, profile=None):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
87 """Save the information to check later to whom messages have been sent and
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
88 if entries have been added to the history"""
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
89 if not skip_send:
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
90 self.sent_messages.append(mess_data["to"])
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
91 self.stored_messages.append(mess_data["to"])
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
92 pass
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
93
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
94 def requestServerDisco(self, feature, jid_=None, cache_only=False, profile_key="@NONE"):
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
95 """Discover if a server or its items offer a given feature
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
96 @param feature: the feature to check
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
97 @param jid_: the jid of the server, local server if None
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
98 @param cache_only: expect the result to be in cache and don't actually
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
99 make any request. This can be used anytime for requesting a feature on
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
100 the local server because the data are cached for sure.
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
101 @result: the Deferred entity jid offering the feature, or None
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
102 """
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
103 profile = self.memory.getProfileName(profile_key)
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
104 self.memory.server_features.setdefault(profile, {})
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
105 if jid_ is None:
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
106 jid_ = self.getClientHostJid(profile_key)
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
107 # call FakeMemory.init and FakeMemory.addServerFeature
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
108 # in your tests to change the return value of this method
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
109 return defer.succeed(jid_ if self.memory.hasServerFeature(feature, jid_, profile_key) else None)
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
110
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
111 def getClientHostJid(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
112 return Const.PROFILE_DICT[profile_key].host
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
113
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
114 def getClient(self, profile_key):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
115 """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
116 @return: client or None if it doesn't exist"""
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
117 profile = self.memory.getProfileName(profile_key)
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
118 if not profile:
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
119 return None
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
120 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
121 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
122 self.profiles[profile].client_initialized.callback(None)
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
123 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
124
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
125 def getJidNStream(self, profile_key):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
126 """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
127 @return: tuple (jid, xmlstream) from profile, can be None"""
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
128 return (Const.PROFILE_DICT[profile_key], None)
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
129
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
130 def isConnected(self, profile):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
131 return True
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
132
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
133 def getSentMessageRaw(self, profile_index):
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
134 """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
135 Called by tests. FakeClient instances associated to each profile must have
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
136 been previously initialized with the method FakeSAT.getClient.
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
137 @return: the sent message for given profile, or None"""
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
138 try:
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
139 return self.profiles[Const.PROFILE[profile_index]].xmlstream.sent.pop(0)
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
140 except IndexError:
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
141 return None
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
142
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
143 def getSentMessage(self, profile_index):
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
144 """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
145 Called by tests. FakeClient instances associated to each profile must have
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
146 been previously initialized with the method FakeSAT.getClient.
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
147 @return: XML representation of the sent message for given profile, or None"""
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
148 entry = self.getSentMessageRaw(profile_index)
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
149 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
150
335
Goffi <goffi@goffi.org>
parents:
diff changeset
151
Goffi <goffi@goffi.org>
parents:
diff changeset
152 class FakeBridge(object):
Goffi <goffi@goffi.org>
parents:
diff changeset
153 """Class to simulate and test bridge calls"""
Goffi <goffi@goffi.org>
parents:
diff changeset
154
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
155 def __init__(self):
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
156 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
157
335
Goffi <goffi@goffi.org>
parents:
diff changeset
158 def expectCall(self, name, *check_args, **check_kwargs):
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
159 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
160 self.expected_calls.setdefault(name, [])
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
161 self.expected_calls[name].append((check_args, check_kwargs))
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
162 return
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
163
335
Goffi <goffi@goffi.org>
parents:
diff changeset
164 def checkCall(*args, **kwargs):
Goffi <goffi@goffi.org>
parents:
diff changeset
165 if args != check_args or kwargs != check_kwargs:
Goffi <goffi@goffi.org>
parents:
diff changeset
166 print "\n\n--------------------"
Goffi <goffi@goffi.org>
parents:
diff changeset
167 print "Args are not equals:"
Goffi <goffi@goffi.org>
parents:
diff changeset
168 print "args\n----\n%s (sent)\n%s (wanted)" % (args, check_args)
Goffi <goffi@goffi.org>
parents:
diff changeset
169 print "kwargs\n------\n%s (sent)\n%s (wanted)" % (kwargs, check_kwargs)
Goffi <goffi@goffi.org>
parents:
diff changeset
170 print "--------------------\n\n"
Goffi <goffi@goffi.org>
parents:
diff changeset
171 raise DifferentArgsException
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
172 delattr(self, name)
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
173
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
174 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
175 args, kwargs = self.expected_calls[name].pop(0)
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
176 if len(self.expected_calls[name]) == 0:
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
177 del self.expected_calls[name]
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
178 self.expectCall(name, *args, **kwargs)
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
179
335
Goffi <goffi@goffi.org>
parents:
diff changeset
180 setattr(self, name, checkCall)
Goffi <goffi@goffi.org>
parents:
diff changeset
181
694
4284b6ad8aa3 tests: plugin text syntaxes sanitisation tests
Goffi <goffi@goffi.org>
parents: 693
diff changeset
182 def addMethod(self, name, int_suffix, in_sign, out_sign, method, async=False):
4284b6ad8aa3 tests: plugin text syntaxes sanitisation tests
Goffi <goffi@goffi.org>
parents: 693
diff changeset
183 pass
335
Goffi <goffi@goffi.org>
parents:
diff changeset
184
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
185 def addSignal(self, name, int_suffix, signature):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
186 pass
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
187
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
188 def addTestCallback(self, name, method):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
189 """This can be used to register callbacks for bridge methods AND signals.
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
190 Contrary to expectCall, this will not check if the method or signal is
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
191 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
192 of your choice."""
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
193 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
194
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
195
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
196 class FakeParams(Params):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
197 """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
198 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
199 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
200
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
201 def __init__(self, host, storage):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
202 Params.__init__(self, host, storage)
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
203 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
204
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
205 def setParam(self, name, value, category, security_limit=-1, profile_key='@NONE@'):
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
206 profile = self.getProfileName(profile_key)
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
207 self.params.setdefault(profile, {})
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
208 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
209
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
210 def getParamA(self, name, category, attr="value", profile_key='@NONE@'):
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
211 profile = self.getProfileName(profile_key)
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
212 return self.params[profile][(category, name)]
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
213
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
214 def getProfileName(self, profile_key, return_profile_keys=False):
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
215 if profile_key == '@DEFAULT@':
792
2136be5a44a8 test: define the constants JIDs and profiles as lists
souliane <souliane@mailoo.org>
parents: 789
diff changeset
216 return Const.PROFILE[0]
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
217 elif profile_key == '@NONE@':
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
218 raise exceptions.ProfileNotSetError
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
219 else:
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
220 return profile_key
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
221
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
222 def loadIndParams(self, profile, cache=None):
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
223 self.params[profile] = {}
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
224 return defer.succeed(None)
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
225
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
226
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
227 class FakeMemory(Memory):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
228 """Class to simulate and test memory object"""
Goffi <goffi@goffi.org>
parents:
diff changeset
229
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
230 def __init__(self, host):
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
231 # 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
232 # 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
233 self.host = host
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
234 self.params = FakeParams(host, None)
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
235 self.config = self.parseMainConf()
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
236 self.init()
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
237
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
238 def init(self):
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
239 """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
240 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
241 self.params.load_default_params()
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
242 self.params.params.clear()
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
243 self.entities_data = {}
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
244 self.server_features = {}
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
245
782
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
246 def getProfileName(self, profile_key, return_profile_keys=False):
0e5807193721 test: added some tests for Memory
souliane <souliane@mailoo.org>
parents: 781
diff changeset
247 return self.params.getProfileName(profile_key, return_profile_keys)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
248
669
ffb716804580 core, bridge: extra parameter is saved in history:
Goffi <goffi@goffi.org>
parents: 649
diff changeset
249 def addToHistory(self, from_jid, to_jid, message, _type='chat', extra=None, timestamp=None, profile="@NONE@"):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
250 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
251
335
Goffi <goffi@goffi.org>
parents:
diff changeset
252 def addContact(self, contact_jid, attributes, groups, profile_key='@DEFAULT@'):
Goffi <goffi@goffi.org>
parents:
diff changeset
253 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
254
484
23cbdf0a0777 core: presence status + last resource refactored and kept in entitiesCache in memory.py, profile cache is purged on disconnection
Goffi <goffi@goffi.org>
parents: 480
diff changeset
255 def setPresenceStatus(self, contact_jid, show, priority, statuses, profile_key='@DEFAULT@'):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
256 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
257
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
258 def addWaitingSub(self, type_, contact_jid, profile_key):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
259 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
260
335
Goffi <goffi@goffi.org>
parents:
diff changeset
261 def delWaitingSub(self, contact_jid, profile_key):
Goffi <goffi@goffi.org>
parents:
diff changeset
262 pass
Goffi <goffi@goffi.org>
parents:
diff changeset
263
781
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
264 def updateEntityData(self, entity_jid, key, value, profile_key):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
265 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
266 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
267
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
268 def getEntityData(self, entity_jid, keys, profile_key):
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
269 result = {}
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
270 for key in keys:
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
271 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
272 return result
80ab2b58e205 test: added support of basic memory stuff in helpers.py
souliane <souliane@mailoo.org>
parents: 780
diff changeset
273
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
274
335
Goffi <goffi@goffi.org>
parents:
diff changeset
275 class FakeTriggerManager(object):
Goffi <goffi@goffi.org>
parents:
diff changeset
276
786
c3acc1298a2f test: FakeMemory inherits from Memory + more helpers basic support + cleaning
souliane <souliane@mailoo.org>
parents: 782
diff changeset
277 def add(self, point_name, callback, priority=0):
335
Goffi <goffi@goffi.org>
parents:
diff changeset
278 pass
587
952322b1d490 Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 572
diff changeset
279
335
Goffi <goffi@goffi.org>
parents:
diff changeset
280 def point(self, point_name, *args, **kwargs):
Goffi <goffi@goffi.org>
parents:
diff changeset
281 """We always return true to continue the action"""
Goffi <goffi@goffi.org>
parents:
diff changeset
282 return True
Goffi <goffi@goffi.org>
parents:
diff changeset
283
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
284
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
285 class FakeRosterProtocol(SatRosterProtocol):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
286 """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
287
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
288 def __init__(self, host, parent):
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
289 SatRosterProtocol.__init__(self, host)
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
290 self.parent = parent
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
291 self.addItem(parent.jid)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
292
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
293 def addItem(self, jid, *args, **kwargs):
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
294 if not args and not kwargs:
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
295 # defaults values setted for the tests only
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
296 kwargs["subscriptionTo"] = True
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
297 kwargs["subscriptionFrom"] = True
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
298 roster_item = RosterItem(jid, *args, **kwargs)
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
299 attrs = {'to': b2s(roster_item.subscriptionTo), 'from': b2s(roster_item.subscriptionFrom), 'ask': b2s(roster_item.pendingOut)}
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
300 if roster_item.name:
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
301 attrs['name'] = roster_item.name
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
302 self.host.bridge.expectCall("newContact", jid.full(), attrs, roster_item.groups, self.parent.profile)
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
303 self.onRosterSet(roster_item)
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
304
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
305
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
306 class FakeXmlStream(object):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
307 """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
308
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
309 def __init__(self):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
310 self.sent = []
649
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
311
e20c823f23e2 tests: helpers improvments:
Goffi <goffi@goffi.org>
parents: 647
diff changeset
312 def send(self, obj):
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
313 """Save the sent messages to compare them later"""
829
187d2443c82d test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents: 811
diff changeset
314 self.sent.append(obj)
794
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
315
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
316
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
317 class FakeClient(object):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
318 """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
319
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
320 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
321 self.host = host
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
322 self.profile = profile if profile else Const.PROFILE[0]
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
323 self.jid = Const.PROFILE_DICT[self.profile]
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
324 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
325 self.client_initialized = defer.Deferred()
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
326 self.xmlstream = FakeXmlStream()
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
327
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
328 def send(self, obj):
52c4b755aba6 test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents: 792
diff changeset
329 self.xmlstream.send(obj)
335
Goffi <goffi@goffi.org>
parents:
diff changeset
330
591
65821b3fa7ab Fix pep8 support in src/test.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 587
diff changeset
331
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
332 class SatTestCase(unittest.TestCase):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
333
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
334 def assertEqualXML(self, xml, expected, ignore_blank=False):
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
335 def equalElt(got_elt, exp_elt):
696
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
336 if ignore_blank:
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
337 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
338 for attr in ('text', 'tail'):
696
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
339 value = getattr(elt, attr)
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
340 try:
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
341 value = value.strip() or None
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
342 except AttributeError:
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
343 value = None
f1a2831d549d test: better ignore_blank in helpers's assertEqualXML
Goffi <goffi@goffi.org>
parents: 694
diff changeset
344 setattr(elt, attr, value)
693
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
345 if (got_elt.tag != exp_elt.tag):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
346 print "XML are not equals (elt %s/%s):" % (got_elt, exp_elt)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
347 print "tag: got [%s] expected: [%s]" % (got_elt.tag, exp_elt.tag)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
348 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
349 if (got_elt.attrib != exp_elt.attrib):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
350 print "XML are not equals (elt %s/%s):" % (got_elt, exp_elt)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
351 print "attribs: got %s expected %s" % (got_elt.attrib, exp_elt.attrib)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
352 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
353 if (got_elt.tail != exp_elt.tail or got_elt.text != exp_elt.text):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
354 print "XML are not equals (elt %s/%s):" % (got_elt, exp_elt)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
355 print "text: got [%s] expected: [%s]" % (got_elt.text, exp_elt.text)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
356 print "tail: got [%s] expected: [%s]" % (got_elt.tail, exp_elt.tail)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
357 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
358 if (len(got_elt) != len(exp_elt)):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
359 print "XML are not equals (elt %s/%s):" % (got_elt, exp_elt)
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
360 print "children len: got %d expected: %d" % (len(got_elt), len(exp_elt))
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
361 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
362 for idx, child in enumerate(got_elt):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
363 if not equalElt(child, exp_elt[idx]):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
364 return False
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
365 return True
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
366
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
367 def remove_blank(xml):
780
9810f22ba733 test: store the constants in constants.py + better PEP8 compliance
souliane <souliane@mailoo.org>
parents: 771
diff changeset
368 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
369 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
370
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
371 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
372 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
373
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
374 if not equalElt(xml_elt, expected_elt):
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
375 print "---"
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
376 print "XML are not equals:"
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
377 print "got:\n-\n%s\n-\n\n" % etree.tostring(xml_elt, encoding='utf-8')
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
378 print "was expecting:\n-\n%s\n-\n\n" % etree.tostring(expected_elt, encoding='utf-8')
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
379 print "---"
65b30bc7f1b3 tests: added XML comparaison method to helpers
Goffi <goffi@goffi.org>
parents: 669
diff changeset
380 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
381
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
382 def assertEqualUnsortedList(self, a, b, msg):
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
383 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
384 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
385 if counter_a != 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
386 print "---"
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
387 print "Unsorted lists are not equals:"
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
388 print "got : %s" % 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
389 print "was expecting: %s" % 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
390 if msg:
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
391 print msg
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
392 print "---"
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
393 raise DifferentListException