Mercurial > libervia-backend
annotate src/test/helpers_plugins.py @ 2138:6e509ee853a8
plugin OTR, core; use of new sendMessage + OTR mini refactoring:
- new client.sendMessage method is used instead of sendMessageToStream
- client.feedback is used in OTR
- OTR now add message processing hints and carbon private element as recommanded by XEP-0364. Explicit Message Encryption is still TODO
- OTR use the new sendMessageFinish trigger, this has a number of advantages:
* there is little risk that OTR is skipped by other plugins (they have to use client.sendMessage as recommanded)
* being at the end of the chain, OTR can check and remove any HTML or other leaking elements
* OTR doesn't have to skip other plugins anymore, this means that things like delivery receipts are now working with OTR
(but because there is not full stanza encryption, they can leak metadata)
* OTR can decide to follow storage hint by letting or deleting "history" key
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 05 Feb 2017 15:00:01 +0100 |
parents | 2daf7b4c6756 |
children | 70399d1acb47 |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1766
diff
changeset
|
1 #!/usr/bin/env python2 |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
3 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
4 # SAT: a jabber client |
1766 | 5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) |
6 # Copyright (C) 2013-2016 Adrien Cossa (souliane@mailoo.org) | |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
7 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
8 # This program is free software: you can redistribute it and/or modify |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
9 # it under the terms of the GNU Affero General Public License as published by |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
10 # the Free Software Foundation, either version 3 of the License, or |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
11 # (at your option) any later version. |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
12 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
13 # This program is distributed in the hope that it will be useful, |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
16 # GNU Affero General Public License for more details. |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
17 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
18 # You should have received a copy of the GNU Affero General Public License |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
20 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
21 """ Helpers class for plugin dependencies """ |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
22 |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
23 from twisted.internet import defer |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
24 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
25 from wokkel.muc import Room, User |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
26 from wokkel.generic import parseXml |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
27 from wokkel.disco import DiscoItem, DiscoItems |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
28 |
1270
037ec0795a85
test: fixes import for wokkel.rsm
souliane <souliane@mailoo.org>
parents:
1269
diff
changeset
|
29 # temporary until the changes are integrated to Wokkel |
037ec0795a85
test: fixes import for wokkel.rsm
souliane <souliane@mailoo.org>
parents:
1269
diff
changeset
|
30 from sat.tmp.wokkel.rsm import RSMResponse |
037ec0795a85
test: fixes import for wokkel.rsm
souliane <souliane@mailoo.org>
parents:
1269
diff
changeset
|
31 |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
32 from constants import Const as C |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
33 from sat.plugins import plugin_xep_0045 |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
34 from collections import OrderedDict |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
36 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
37 class FakeMUCClient(object): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
38 def __init__(self, plugin_parent): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
39 self.plugin_parent = plugin_parent |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
40 self.host = plugin_parent.host |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
41 self.joined_rooms = {} |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
42 |
1412 | 43 def join(self, room_jid, nick, options=None, profile_key=C.PROF_KEY_NONE): |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
44 """ |
1412 | 45 @param room_jid: the room JID |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
46 @param nick: nick to be used in the room |
1412 | 47 @param options: joining options |
48 @param profile_key: the profile key of the user joining the room | |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
49 @return: the deferred joined wokkel.muc.Room instance |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
50 """ |
1412 | 51 profile = self.host.memory.getProfileName(profile_key) |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
52 roster = {} |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
53 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
54 # ask the other profiles to fill our roster |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
55 for i in xrange(0, len(C.PROFILE)): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
56 other_profile = C.PROFILE[i] |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
57 if other_profile == profile: |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
58 continue |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
59 try: |
1412 | 60 other_room = self.plugin_parent.clients[other_profile].joined_rooms[room_jid] |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
61 roster.setdefault(other_room.nick, User(other_room.nick, C.PROFILE_DICT[other_profile])) |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
62 for other_nick in other_room.roster: |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
63 roster.setdefault(other_nick, other_room.roster[other_nick]) |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
64 except (AttributeError, KeyError): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
65 pass |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
66 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
67 # rename our nick if it already exists |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
68 while nick in roster.keys(): |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
69 if C.PROFILE_DICT[profile].userhost() == roster[nick].entity.userhost(): |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
70 break # same user with different resource --> same nickname |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
71 nick = nick + "_" |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
72 |
1412 | 73 room = Room(room_jid, nick) |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
74 room.roster = roster |
1412 | 75 self.joined_rooms[room_jid] = room |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
76 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
77 # fill the other rosters with the new entry |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
78 for i in xrange(0, len(C.PROFILE)): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
79 other_profile = C.PROFILE[i] |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
80 if other_profile == profile: |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
81 continue |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
82 try: |
1412 | 83 other_room = self.plugin_parent.clients[other_profile].joined_rooms[room_jid] |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
84 other_room.roster.setdefault(room.nick, User(room.nick, C.PROFILE_DICT[profile])) |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
85 except (AttributeError, KeyError): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
86 pass |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
87 |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
88 return defer.succeed(room) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
89 |
1412 | 90 def leave(self, roomJID, profile_key=C.PROF_KEY_NONE): |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
91 """ |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
92 @param roomJID: the room JID |
1412 | 93 @param profile_key: the profile key of the user joining the room |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
94 @return: a dummy deferred |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
95 """ |
1412 | 96 profile = self.host.memory.getProfileName(profile_key) |
97 room = self.joined_rooms[roomJID] | |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
98 # remove ourself from the other rosters |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
99 for i in xrange(0, len(C.PROFILE)): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
100 other_profile = C.PROFILE[i] |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
101 if other_profile == profile: |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
102 continue |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
103 try: |
1412 | 104 other_room = self.plugin_parent.clients[other_profile].joined_rooms[roomJID] |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
105 del other_room.roster[room.nick] |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
106 except (AttributeError, KeyError): |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
107 pass |
1412 | 108 del self.joined_rooms[roomJID] |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
109 return defer.Deferred() |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
110 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
111 |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
112 class FakeXEP_0045(plugin_xep_0045.XEP_0045): |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
113 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
114 def __init__(self, host): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
115 self.host = host |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
116 self.clients = {} |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
117 for profile in C.PROFILE: |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
118 self.clients[profile] = FakeMUCClient(self) |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
119 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
120 def join(self, room_jid, nick, options={}, profile_key='@DEFAULT@'): |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
121 """ |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
122 @param roomJID: the room JID |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
123 @param nick: nick to be used in the room |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
124 @param options: ignore |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
125 @param profile_key: the profile of the user joining the room |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
126 @return: the deferred joined wokkel.muc.Room instance or None |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
127 """ |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
128 profile = self.host.memory.getProfileName(profile_key) |
1412 | 129 if room_jid in self.clients[profile].joined_rooms: |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
130 return defer.succeed(None) |
1412 | 131 room = self.clients[profile].join(room_jid, nick, profile_key=profile) |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
132 return room |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
133 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
134 def joinRoom(self, muc_index, user_index): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
135 """Called by tests |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
136 @return: the nickname of the user who joined room""" |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
137 muc_jid = C.MUC[muc_index] |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
138 nick = C.JID[user_index].user |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
139 profile = C.PROFILE[user_index] |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
140 self.join(muc_jid, nick, profile_key=profile) |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
141 return self.getNick(muc_index, user_index) |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
142 |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
143 def leave(self, room_jid, profile_key='@DEFAULT@'): |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
144 """ |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
145 @param roomJID: the room JID |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
146 @param profile_key: the profile of the user leaving the room |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
147 @return: a dummy deferred |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
148 """ |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
149 profile = self.host.memory.getProfileName(profile_key) |
1412 | 150 if room_jid not in self.clients[profile].joined_rooms: |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
151 raise plugin_xep_0045.UnknownRoom("This room has not been joined") |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
152 return self.clients[profile].leave(room_jid, profile) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
153 |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
154 def leaveRoom(self, muc_index, user_index): |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
155 """Called by tests |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
156 @return: the nickname of the user who left the room""" |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
157 muc_jid = C.MUC[muc_index] |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
158 nick = self.getNick(muc_index, user_index) |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
159 profile = C.PROFILE[user_index] |
829
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
160 self.leave(muc_jid, profile_key=profile) |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
161 return nick |
187d2443c82d
test: improvements for the helpers classes:
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
162 |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
163 def getRoom(self, muc_index, user_index): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
164 """Called by tests |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
165 @return: a wokkel.muc.Room instance""" |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
166 profile = C.PROFILE[user_index] |
1412 | 167 muc_jid = C.MUC[muc_index] |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
168 try: |
1412 | 169 return self.clients[profile].joined_rooms[muc_jid] |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
170 except (AttributeError, KeyError): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
171 return None |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
172 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
173 def getNick(self, muc_index, user_index): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
174 try: |
1412 | 175 return self.getRoomNick(C.MUC[muc_index], C.PROFILE[user_index]) |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
176 except (KeyError, AttributeError): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
177 return '' |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
178 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
179 def getNickOfUser(self, muc_index, user_index, profile_index, secure=True): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
180 try: |
1412 | 181 room = self.clients[C.PROFILE[profile_index]].joined_rooms[C.MUC[muc_index]] |
182 return self.getRoomNickOfUser(room, C.JID[user_index]) | |
794
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
183 except (KeyError, AttributeError): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
184 return None |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
185 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
186 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
187 class FakeXEP_0249(object): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
188 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
189 def __init__(self, host): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
190 self.host = host |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
191 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
192 def invite(self, target, room, options={}, profile_key='@DEFAULT@'): |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
193 """ |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
194 Invite a user to a room. To accept the invitation from a test, |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
195 just call FakeXEP_0045.joinRoom (no need to have a dedicated method). |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
196 @param target: jid of the user to invite |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
197 @param room: jid of the room where the user is invited |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
198 @options: attribute with extra info (reason, password) as in #XEP-0249 |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
199 @profile_key: %(doc_profile_key)s |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
200 """ |
52c4b755aba6
test: make FakeClient profile dependent and add some tools to test MUC
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
201 pass |
1269
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
202 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
203 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
204 class FakeSatPubSubClient(object): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
205 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
206 def __init__(self, host, parent_plugin): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
207 self.host = host |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
208 self.parent_plugin = parent_plugin |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
209 self.__items = OrderedDict() |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
210 self.__rsm_responses = {} |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
211 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
212 def createNode(self, service, nodeIdentifier=None, options=None, |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
213 sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
214 return defer.succeed(None) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
215 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
216 def deleteNode(self, service, nodeIdentifier, sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
217 try: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
218 del self.__items[nodeIdentifier] |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
219 except KeyError: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
220 pass |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
221 return defer.succeed(None) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
222 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
223 def subscribe(self, service, nodeIdentifier, subscriber, |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
224 options=None, sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
225 return defer.succeed(None) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
226 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
227 def unsubscribe(self, service, nodeIdentifier, subscriber, |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
228 subscriptionIdentifier=None, sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
229 return defer.succeed(None) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
230 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
231 def publish(self, service, nodeIdentifier, items=None, sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
232 node = self.__items.setdefault(nodeIdentifier, []) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
233 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
234 def replace(item_obj): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
235 index = 0 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
236 for current in node: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
237 if current['id'] == item_obj['id']: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
238 node[index] = item_obj |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
239 return True |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
240 index += 1 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
241 return False |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
242 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
243 for item in items: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
244 item_obj = parseXml(item) if isinstance(item, unicode) else item |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
245 if not replace(item_obj): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
246 node.append(item_obj) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
247 return defer.succeed(None) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
248 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
249 def items(self, service, nodeIdentifier, maxItems=None, itemIdentifiers=None, |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
250 subscriptionIdentifier=None, sender=None, ext_data=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
251 try: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
252 items = self.__items[nodeIdentifier] |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
253 except KeyError: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
254 items = [] |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
255 if ext_data: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
256 assert('id' in ext_data) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
257 if 'rsm' in ext_data: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
258 args = (0, items[0]['id'], items[-1]['id']) if items else () |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
259 self.__rsm_responses[ext_data['id']] = RSMResponse(len(items), *args) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
260 return defer.succeed(items) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
261 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
262 def retractItems(self, service, nodeIdentifier, itemIdentifiers, sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
263 node = self.__items[nodeIdentifier] |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
264 for item in [item for item in node if item['id'] in itemIdentifiers]: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
265 node.remove(item) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
266 return defer.succeed(None) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
267 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
268 def getRSMResponse(self, id): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
269 if id not in self.__rsm_responses: |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
270 return {} |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
271 result = self.__rsm_responses[id].toDict() |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
272 del self.__rsm_responses[id] |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
273 return result |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
274 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
275 def subscriptions(self, service, nodeIdentifier, sender=None): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
276 return defer.succeed([]) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
277 |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
278 def service_getDiscoItems(self, service, nodeIdentifier, profile_key=C.PROF_KEY_NONE): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
279 items = DiscoItems() |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
280 for item in self.__items.keys(): |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
281 items.append(DiscoItem(service, item)) |
91e5becc6623
test: add tests for plugin_misc_groupblog
souliane <souliane@mailoo.org>
parents:
829
diff
changeset
|
282 return defer.succeed(items) |