source:
ralphm-patches/roster_item.patch
@
47:f6d222b68f1c
Last change on this file since 47:f6d222b68f1c was 36:f2953cadca90, checked in by Ralph Meijer <ralphm@…>, 12 years ago | |
---|---|
File size: 6.0 KB |
-
wokkel/test/test_xmppim.py
diff -r c9d1bf0b783d wokkel/test/test_xmppim.py
a b 449 449 450 450 451 451 452 class RosterItemTest(unittest.TestCase): 453 """ 454 Tests for L{xmppim.RosterItem}. 455 """ 456 457 def test_toElement(self): 458 item = xmppim.RosterItem(JID('user@example.org')) 459 element = item.toElement() 460 self.assertEquals('item', element.name) 461 self.assertEquals(NS_ROSTER, element.uri) 462 self.assertTrue(element.hasAttribute('subscription')) 463 self.assertFalse(element.hasAttribute('ask')) 464 self.assertFalse(element.hasAttribute('name')) 465 self.assertEquals(0, len(list(element.elements()))) 466 467 468 def test_toElementJID(self): 469 item = xmppim.RosterItem(JID('user@example.org')) 470 element = item.toElement() 471 self.assertEquals(u'user@example.org', element.getAttribute('jid')) 472 473 474 def test_toElementSubscriptionNone(self): 475 item = xmppim.RosterItem(JID('user@example.org'), 476 subscriptionTo=False, 477 subscriptionFrom=False) 478 element = item.toElement() 479 self.assertEquals('none', element.getAttribute('subscription')) 480 481 482 def test_toElementSubscriptionTo(self): 483 item = xmppim.RosterItem(JID('user@example.org'), 484 subscriptionTo=True, 485 subscriptionFrom=False) 486 element = item.toElement() 487 self.assertEquals('to', element.getAttribute('subscription')) 488 489 490 def test_toElementSubscriptionFrom(self): 491 item = xmppim.RosterItem(JID('user@example.org'), 492 subscriptionTo=False, 493 subscriptionFrom=True) 494 element = item.toElement() 495 self.assertEquals('from', element.getAttribute('subscription')) 496 497 498 def test_toElementSubscriptionBoth(self): 499 item = xmppim.RosterItem(JID('user@example.org'), 500 subscriptionTo=True, 501 subscriptionFrom=True) 502 element = item.toElement() 503 self.assertEquals('both', element.getAttribute('subscription')) 504 505 506 def test_toElementRemove(self): 507 item = xmppim.RosterItem(JID('user@example.org'), 508 remove=True) 509 element = item.toElement() 510 self.assertEquals('remove', element.getAttribute('subscription')) 511 512 513 def test_toElementAsk(self): 514 item = xmppim.RosterItem(JID('user@example.org'), 515 ask=True) 516 element = item.toElement() 517 self.assertEquals('subscribe', element.getAttribute('ask')) 518 519 520 def test_toElementName(self): 521 item = xmppim.RosterItem(JID('user@example.org'), 522 name='Joe User') 523 element = item.toElement() 524 self.assertEquals(u'Joe User', element.getAttribute('name')) 525 526 527 def test_toElementGroups(self): 528 groups = set(['Friends', 'Jabber']) 529 item = xmppim.RosterItem(JID('user@example.org'), 530 groups=groups) 531 532 element = item.toElement() 533 foundGroups = set() 534 for child in element.elements(): 535 if child.uri == NS_ROSTER and child.name == 'group': 536 foundGroups.add(unicode(child)) 537 538 self.assertEqual(groups, foundGroups) 539 540 541 452 542 class RosterClientProtocolTest(unittest.TestCase): 453 543 """ 454 544 Tests for L{xmppim.RosterClientProtocol}. -
wokkel/xmppim.py
diff -r c9d1bf0b783d wokkel/xmppim.py
a b 588 588 @ivar subscriptionFrom: Contact's subscription state. If C{True}, the 589 589 contact is subscribed to the presence information 590 590 of the roster owner. 591 @type subscription To: C{bool}591 @type subscriptionFrom: C{bool} 592 592 @ivar ask: Whether subscription is pending. 593 593 @type ask: C{bool} 594 594 @ivar groups: Set of groups this contact is categorized in. Groups are … … 596 596 @type groups: C{set} 597 597 """ 598 598 599 def __init__(self, jid): 599 subscriptionStates = {(False, False): 'none', 600 (True, False): 'to', 601 (False, True): 'from', 602 (True, True): 'both'} 603 604 def __init__(self, jid, subscriptionTo=False, subscriptionFrom=False, 605 ask=None, name=False, groups=None, remove=False): 600 606 self.jid = jid 601 self.name = None 602 self.subscriptionTo = False 603 self.subscriptionFrom = False 604 self.ask = None 605 self.groups = set() 607 self.subscriptionTo = subscriptionTo 608 self.subscriptionFrom = subscriptionFrom 609 self.ask = ask 610 self.name = name 611 self.groups = groups or set() 612 self.remove = remove 613 614 615 def toElement(self): 616 element = domish.Element((NS_ROSTER, 'item')) 617 element['jid'] = self.jid.full() 618 619 if self.remove: 620 subscription = 'remove' 621 else: 622 subscription = self.subscriptionStates[self.subscriptionTo, 623 self.subscriptionFrom] 624 element['subscription'] = subscription 625 626 if self.ask: 627 element['ask'] = 'subscribe' 628 if self.name: 629 element['name'] = self.name 630 631 if self.groups: 632 for group in self.groups: 633 element.addElement('group', content=group) 634 635 return element 636 606 637 607 638 608 639 class RosterClientProtocol(XMPPHandler): … … 662 693 """ 663 694 iq = IQ(self.xmlstream, 'set') 664 695 iq.addElement((NS_ROSTER, 'query')) 665 item = iq.query.addElement('item') 666 item['jid'] = entity.full() 667 item['subscription'] = 'remove' 696 item = RosterItem(entity, remove=True) 697 iq.query.addChild(item.toElement()) 668 698 return iq.send() 669 699 670 700
Note: See TracBrowser
for help on using the repository browser.