Changeset 174:c0f51d95bf0f for wokkel
- Timestamp:
- May 9, 2012, 2:24:28 PM (10 years ago)
- Branch:
- default
- Location:
- wokkel
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
wokkel/test/test_xmppim.py
r173 r174 966 966 967 967 968 def test_setItem(self): 969 """ 970 Setting a roster item renders the item and sends it out. 971 """ 972 item = xmppim.RosterItem(JID('test@example.org'), 973 name='Joe User', 974 groups=set(['Friends', 'Jabber'])) 975 d = self.service.setItem(item) 976 977 # Inspect outgoing iq request 978 979 iq = self.stub.output[-1] 980 self.assertEqual('set', iq.getAttribute('type')) 981 self.assertNotIdentical(None, iq.query) 982 self.assertEqual(NS_ROSTER, iq.query.uri) 983 984 children = list(domish.generateElementsQNamed(iq.query.children, 985 'item', NS_ROSTER)) 986 self.assertEqual(1, len(children)) 987 child = children[0] 988 self.assertEqual('test@example.org', child['jid']) 989 self.assertIdentical(None, child.getAttribute('subscription')) 990 991 # Fake successful response 992 993 response = toResponse(iq, 'result') 994 d.callback(response) 995 return d 996 997 998 def test_setItemIgnoreAttributes(self): 999 """ 1000 Certain attributes should be rendered for roster set. 1001 """ 1002 item = xmppim.RosterItem(JID('test@example.org'), 1003 subscriptionTo=True, 1004 subscriptionFrom=False, 1005 name='Joe User', 1006 groups=set(['Friends', 'Jabber'])) 1007 item.pendingOut = True 1008 item.approved = True 1009 d = self.service.setItem(item) 1010 1011 # Inspect outgoing iq request 1012 1013 iq = self.stub.output[-1] 1014 self.assertEqual('set', iq.getAttribute('type')) 1015 self.assertNotIdentical(None, iq.query) 1016 self.assertEqual(NS_ROSTER, iq.query.uri) 1017 1018 children = list(domish.generateElementsQNamed(iq.query.children, 1019 'item', NS_ROSTER)) 1020 self.assertEqual(1, len(children)) 1021 child = children[0] 1022 self.assertIdentical(None, child.getAttribute('ask')) 1023 self.assertIdentical(None, child.getAttribute('approved')) 1024 self.assertIdentical(None, child.getAttribute('subscription')) 1025 1026 # Fake successful response 1027 1028 response = toResponse(iq, 'result') 1029 d.callback(response) 1030 return d 1031 1032 968 1033 def test_removeItem(self): 969 1034 """ -
wokkel/xmppim.py
r173 r174 694 694 695 695 696 def toElement(self): 696 def toElement(self, rosterSet=False): 697 """ 698 Render to a DOM representation. 699 700 If C{rosterSet} is set, some attributes, that may not be sent 701 as a roster set, will not be rendered. 702 703 @type rosterSet: C{boolean}. 704 """ 697 705 element = domish.Element((NS_ROSTER, 'item')) 698 706 element['jid'] = self.entity.full() … … 701 709 subscription = 'remove' 702 710 else: 703 subscription = self.__subscriptionStates[self.subscriptionTo,704 self.subscriptionFrom]705 706 if self.pendingOut:707 element['ask'] = u'subscribe'708 709 711 if self.name: 710 712 element['name'] = self.name 711 712 if self.approved:713 element['approved'] = u'true'714 713 715 714 if self.groups: 716 715 for group in self.groups: 717 716 element.addElement('group', content=group) 717 718 if rosterSet: 719 subscription = None 720 else: 721 subscription = self.__subscriptionStates[self.subscriptionTo, 722 self.subscriptionFrom] 723 724 if self.pendingOut: 725 element['ask'] = u'subscribe' 726 727 if self.approved: 728 element['approved'] = u'true' 718 729 719 730 if subscription: … … 755 766 versioning. 756 767 @type version: C{unicode} 768 769 @ivar rosterSet: If set, this is a roster set request. This flag is used 770 to make sure some attributes of the roster item are not rendered by 771 L{toElement}. 772 @type roster: C{boolean} 757 773 """ 758 774 item = None 759 775 version = None 776 rosterSet = False 760 777 761 778 def parseRequest(self, element): … … 773 790 query['ver'] = self.version 774 791 if self.item: 775 query.addChild(self.item.toElement( ))792 query.addChild(self.item.toElement(rosterSet=self.rosterSet)) 776 793 return element 777 794 … … 893 910 894 911 912 def setItem(self, item): 913 """ 914 Add or modify a roster item. 915 916 Note that RFC 6121 doesn't allow all properties of a roster item to 917 be sent when setting a roster item. Only the C{name} and C{groups} 918 attributes from C{item} are sent to the server. Presence subscription 919 management must be done through L{PresenceProtocol}. 920 921 @param item: The roster item to be set. 922 @type item: L{RosterItem}. 923 924 @rtype: L{twisted.internet.defer.Deferred} 925 """ 926 request = RosterRequest(stanzaType='set') 927 request.rosterSet = True 928 request.item = item 929 return self.request(request) 930 931 895 932 def removeItem(self, entity): 896 933 """ … … 899 936 @param entity: The contact to remove the roster item for. 900 937 @type entity: L{JID<twisted.words.protocols.jabber.jid.JID>} 938 901 939 @rtype: L{twisted.internet.defer.Deferred} 902 940 """ 903 request = RosterRequest(stanzaType='set') 904 request.item = RosterItem(entity) 905 request.item.remove = True 906 return self.request(request) 941 item = RosterItem(entity) 942 item.remove = True 943 return self.setItem(item) 907 944 908 945
Note: See TracChangeset
for help on using the changeset viewer.