summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sleekxmpp/stanza/nick.py80
-rw-r--r--tests/test_messagestanzas.py13
-rw-r--r--tests/test_presencestanzas.py10
3 files changed, 85 insertions, 18 deletions
diff --git a/sleekxmpp/stanza/nick.py b/sleekxmpp/stanza/nick.py
index 47d4620a..de54b307 100644
--- a/sleekxmpp/stanza/nick.py
+++ b/sleekxmpp/stanza/nick.py
@@ -5,22 +5,68 @@
See the file LICENSE for copying permission.
"""
-from .. xmlstream.stanzabase import registerStanzaPlugin, ElementBase, ET
+
+from sleekxmpp.stanza import Message, Presence
+from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin
+from sleekxmpp.xmlstream.stanzabase import ElementBase, ET
+
class Nick(ElementBase):
- namespace = 'http://jabber.org/nick/nick'
- name = 'nick'
- plugin_attrib = 'nick'
- interfaces = set(('nick'))
- plugin_attrib_map = set()
- plugin_xml_map = set()
-
- def setNick(self, nick):
- self.xml.text = nick
-
- def getNick(self):
- return self.xml.text
-
- def delNick(self):
- if self.parent is not None:
- self.parent().xml.remove(self.xml)
+
+ """
+ XEP-0172: User Nickname allows the addition of a <nick> element
+ in several stanza types, including <message> and <presence> stanzas.
+
+ The nickname contained in a <nick> should be the global, friendly or
+ informal name chosen by the owner of a bare JID. The <nick> element
+ may be included when establishing communications with new entities,
+ such as normal XMPP users or MUC services.
+
+ The nickname contained in a <nick> element will not necessarily be
+ the same as the nickname used in a MUC.
+
+ Example stanzas:
+ <message to="user@example.com">
+ <nick xmlns="http://jabber.org/nick/nick">The User</nick>
+ <body>...</body>
+ </message>
+
+ <presence to="otheruser@example.com" type="subscribe">
+ <nick xmlns="http://jabber.org/nick/nick">The User</nick>
+ </presence>
+
+ Stanza Interface:
+ nick -- A global, friendly or informal name chosen by a user.
+
+ Methods:
+ getNick -- Return the nickname in the <nick> element.
+ setNick -- Add a <nick> element with the given nickname.
+ delNick -- Remove the <nick> element.
+ """
+
+ namespace = 'http://jabber.org/nick/nick'
+ name = 'nick'
+ plugin_attrib = name
+ interfaces = set(('nick',))
+
+ def setNick(self, nick):
+ """
+ Add a <nick> element with the given nickname.
+
+ Arguments:
+ nick -- A human readable, informal name.
+ """
+ self.xml.text = nick
+
+ def getNick(self):
+ """Return the nickname in the <nick> element."""
+ return self.xml.text
+
+ def delNick(self):
+ """Remove the <nick> element."""
+ if self.parent is not None:
+ self.parent().xml.remove(self.xml)
+
+
+registerStanzaPlugin(Message, Nick)
+registerStanzaPlugin(Presence, Nick)
diff --git a/tests/test_messagestanzas.py b/tests/test_messagestanzas.py
index 5e2a667a..9b7b0a3f 100644
--- a/tests/test_messagestanzas.py
+++ b/tests/test_messagestanzas.py
@@ -25,7 +25,7 @@ class TestMessageStanzas(SleekTest):
self.failUnless(str(msg['to']) == 'usr@server.tld')
def testHTMLPlugin(self):
- "Test message/html/html stanza"
+ "Test message/html/body stanza"
msg = self.Message()
msg['to'] = "fritzy@netflint.net/sleekxmpp"
msg['body'] = "this is the plaintext message"
@@ -43,4 +43,15 @@ class TestMessageStanzas(SleekTest):
</html>
</message>""")
+ def testNickPlugin(self):
+ "Test message/nick/nick stanza."
+ msg = self.Message()
+ msg['nick']['nick'] = 'A nickname!'
+ self.checkMessage(msg, """
+ <message>
+ <nick xmlns="http://jabber.org/nick/nick">A nickname!</nick>
+ </message>
+ """)
+
+
suite = unittest.TestLoader().loadTestsFromTestCase(TestMessageStanzas)
diff --git a/tests/test_presencestanzas.py b/tests/test_presencestanzas.py
index 2cab3af7..6c11263f 100644
--- a/tests/test_presencestanzas.py
+++ b/tests/test_presencestanzas.py
@@ -53,5 +53,15 @@ class TestPresenceStanzas(SleekTest):
self.failUnless(c.roster == {},
"Roster updated for superfulous unavailable presence")
+ def testNickPlugin(self):
+ """Test presence/nick/nick stanza."""
+ p = self.Presence()
+ p['nick']['nick'] = 'A nickname!'
+ self.checkPresence(p, """
+ <presence>
+ <nick xmlns="http://jabber.org/nick/nick">A nickname!</nick>
+ </presence>
+ """)
+
suite = unittest.TestLoader().loadTestsFromTestCase(TestPresenceStanzas)