Skip to content

Commit

Permalink
Implemented method "change_room_option" and update unittests
Browse files Browse the repository at this point in the history
  • Loading branch information
dirkmoors committed May 20, 2015
1 parent 1046131 commit bfb272d
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 69 deletions.
16 changes: 16 additions & 0 deletions src/pyejabberd/client.py
Expand Up @@ -208,6 +208,22 @@ def get_room_options(self, name, service):
"""
return self._call_api(definitions.GetRoomOptions, name=name, service=service)

def change_room_option(self, name, service, option, value):
"""
Change an option in a MUC room
:param name: The name for the room
:type name: str
:param service: The MUC service name (e.g. "conference")
:type service: str
:param option: The option to change
:type option: str
:param value: The new value
:type value: str|int|bool
:rtype: bool
:return: A boolean indicating whether the room option has been changed successfully
"""
return self._call_api(definitions.ChangeRoomOption, name=name, service=service, option=option, value=value)

def _call_api(self, api_class, **kwargs):
"""
Internal method used to perform api calls
Expand Down
4 changes: 4 additions & 0 deletions src/pyejabberd/contract.py
Expand Up @@ -48,3 +48,7 @@ def destroy_room(self, name, service, host):
@abstractmethod
def get_room_options(self, name, service):
pass

@abstractmethod
def change_room_option(self, name, service, option, value):
pass
8 changes: 8 additions & 0 deletions src/pyejabberd/definitions.py
Expand Up @@ -115,3 +115,11 @@ def transform_response(self, api, arguments, response):
name_dict, value_dict = option
result[name_dict['name']] = value_dict['value']
return result


class ChangeRoomOption(API):
method = 'change_room_option'
arguments = [StringArgument('name'), StringArgument('service'), StringArgument('option'), StringArgument('value')]

def transform_response(self, api, arguments, response):
return response.get('res') == 0
165 changes: 96 additions & 69 deletions tests/test_pyejabberd.py
Expand Up @@ -225,7 +225,7 @@ def test_create_destroy_room(self):
self._remove_room(room, service=MUC_SERVICE, host=XMPP_DOMAIN)

def test_get_room_options(self):
room = 'testroom_1'
room = 'testroom_2'

result = self.api.create_room(room, service=MUC_SERVICE, host=XMPP_DOMAIN)
self.assertTrue(result)
Expand All @@ -238,74 +238,101 @@ def test_get_room_options(self):
self._remove_room(room, service=MUC_SERVICE, host=XMPP_DOMAIN)


# def test_change_room_option(self):
# roomjid = self._create_roomjid(roomname='testroom_3')
#
# try:
# result = self.api.create_room(roomjid)
# self.assertTrue(result)
# self.assertTrue(self._is_online_room(roomjid))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_change_subj, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_change_subj, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_private_messages, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_private_messages, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_query_users, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_query_users, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_user_invites, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.allow_user_invites, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.anonymous, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.anonymous, '1'))
#
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.description, 'test description 1'))
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.description, 'test description 2: Füße'))
#
# # self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.logging, '0'))
# # self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.logging, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.max_users, '10'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.max_users, '100'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.members_by_default, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.members_by_default, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.members_only, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.members_only, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.moderated, '1'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.moderated, '0'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.password, 'abcdefg'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.password, '51@#211323$%^&*()Füße'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.password_protected, '1'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.password_protected, '0'))
#
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.persistent, '0'))
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.persistent, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.public, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.public, '1'))
#
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.public_list, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.public_list, '1'))
#
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject, 'test subject 1'))
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject, 'test subject 2: Füße'))
#
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject_author, 'test author 1'))
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject_author, 'test author 2: Füße'))
#
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.title, 'test title 1'))
# #self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.title, 'test title 2: Füße'))
# except:
# traceback.print_exc()
# finally:
# self._remove_room(roomjid)
def test_change_room_option(self):
room = 'testroom_3'

result = self.api.create_room(room, service=MUC_SERVICE, host=XMPP_DOMAIN)
self.assertTrue(result)
self.assertTrue(self._is_online_room(room, service=MUC_SERVICE))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_change_subj.name, value='0'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_change_subj.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_private_messages.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_private_messages.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_query_users.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_query_users.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_user_invites.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.allow_user_invites.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.anonymous.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.anonymous.name, value='1'))

#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.description, 'test description 1'))
#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.description, 'test description 2: Füße'))

# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.logging, '0'))
# self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.logging, '1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.max_users.name, value='10'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.max_users.name, value='100'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.members_by_default.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.members_by_default.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.members_only.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.members_only.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.moderated.name, value='1'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.moderated.name, value='0'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.password.name, value='abcdefg'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.password.name, value='51@#211323$%^&*()Füße'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.password_protected.name, value='1'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.password_protected.name, value='0'))

#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.persistent, '0'))
#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.persistent, '1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.public.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.public.name, value='1'))

self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.public_list.name, value='0'))
self.assertTrue(self.api.change_room_option(
room, service=MUC_SERVICE, option=muc.MUCRoomOption.public_list.name, value='1'))

#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject, 'test subject 1'))
#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject, 'test subject 2: Füße'))

#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject_author, 'test author 1'))
#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.subject_author, 'test author 2: Füße'))

#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.title, 'test title 1'))
#self.assertTrue(self.api.change_room_option(roomjid, muc.MUCRoomOption.title, 'test title 2: Füße'))

self._remove_room(room, service=MUC_SERVICE, host=XMPP_DOMAIN)




def _is_registered(self, username, host, registered_users=None):
registered_users = registered_users or self.api.registered_users(host=host)
Expand Down

0 comments on commit bfb272d

Please sign in to comment.