comparison src/test/test_core_xmpp.py @ 335:99206631503e

Tests - first unit tests, finally \o/ - some helping methods/classes - first tests for core.xmpp module - update .hgignore to ignore test dir - updated setup.py with new modules
author Goffi <goffi@goffi.org>
date Tue, 24 May 2011 00:56:35 +0200
parents
children cf005701624b
comparison
equal deleted inserted replaced
334:698cbc6ebec8 335:99206631503e
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 """
5 SAT: a jabber client
6 Copyright (C) 2009, 2010, 2011 Jérôme Poisson (goffi@goffi.org)
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
20 """
21
22 from sat.test import helpers
23 from twisted.trial import unittest
24 from sat.core.sat_main import SAT
25 from sat.core import xmpp
26 from twisted.internet import defer
27 from twisted.words.protocols.jabber.jid import JID
28 from wokkel.generic import parseXml
29 from wokkel.xmppim import RosterItem
30
31
32
33 class SatXMPPClientTest(unittest.TestCase):
34
35 def setUp(self):
36 self.host = helpers.FakeSAT()
37 self.client = xmpp.SatXMPPClient(self.host, "test_profile", JID("test@example.org"), "test")
38
39 def test_init(self):
40 """Check that init values are correctly initialised"""
41 self.assertEqual(self.client.profile, "test_profile")
42 print self.client.host
43 self.assertEqual(self.client.host_app, self.host)
44 self.assertTrue(isinstance(self.client.client_initialized, defer.Deferred))
45
46 class SatMessageProtocolTest(unittest.TestCase):
47
48 def setUp(self):
49 self.host = helpers.FakeSAT()
50 self.message = xmpp.SatMessageProtocol(self.host)
51 self.message.parent = helpers.FakeParent()
52
53 def test_onMessage(self):
54 xml = """
55 <message type="chat" from="sender@example.net/house" to="test@example.org/SàT" id="test_1">
56 <body>test</body>
57 </message>
58 """
59 stanza = parseXml(xml)
60 self.host.bridge.expectCall("newMessage", "sender@example.net/house", "test", "chat", u"test@example.org/SàT", profile="test_profile")
61 self.message.onMessage(stanza)
62
63 class SatRosterProtocolTest(unittest.TestCase):
64
65 def setUp(self):
66 self.host = helpers.FakeSAT()
67 self.roster = xmpp.SatRosterProtocol(self.host)
68 self.roster.parent = helpers.FakeParent()
69
70 def test_onRosterSet(self):
71 roster_item = RosterItem(helpers.TEST_JID)
72 roster_item.name = u"Test Man"
73 roster_item.subscriptionTo = True
74 roster_item.subscriptionFrom = True
75 roster_item.ask = False
76 roster_item.groups = set([u"Test Group 1", u"Test Group 2", u"Test Group 3"])
77 self.host.bridge.expectCall("newContact", helpers.TEST_JID_STR, {'to':'True', 'from': 'True', 'ask': 'False', 'name': u'Test Man'}, set([u"Test Group 1", u"Test Group 2", u"Test Group 3"]), "test_profile")
78 self.roster.onRosterSet(roster_item)
79
80 class SatPresenceProtocolTest(unittest.TestCase):
81
82 def setUp(self):
83 self.host = helpers.FakeSAT()
84 self.presence = xmpp.SatPresenceProtocol(self.host)
85 self.presence.parent = helpers.FakeParent()
86
87 def test_availableReceived(self):
88 self.host.bridge.expectCall("presenceUpdate", helpers.TEST_JID_STR, "xa", 15, {'default': "test status", 'fr':'statut de test'}, helpers.TEST_PROFILE)
89 self.presence.availableReceived(helpers.TEST_JID, 'xa', {None: "test status", 'fr':'statut de test'}, 15)
90
91 def test_availableReceived_empty_statuses(self):
92 self.host.bridge.expectCall("presenceUpdate", helpers.TEST_JID_STR, "xa", 15, {}, helpers.TEST_PROFILE)
93 self.presence.availableReceived(helpers.TEST_JID, 'xa', None, 15)
94
95 def test_unavailableReceived(self):
96 self.host.bridge.expectCall("presenceUpdate", helpers.TEST_JID_STR, "unavailable", 0, {}, helpers.TEST_PROFILE)
97 self.presence.unavailableReceived(helpers.TEST_JID, None)
98
99 def test_subscribedReceived(self):
100 self.host.bridge.expectCall("subscribe", "subscribed", helpers.TEST_JID.userhost(), helpers.TEST_PROFILE)
101 self.presence.subscribedReceived(helpers.TEST_JID)
102
103 def test_unsubscribedReceived(self):
104 self.host.bridge.expectCall("subscribe", "unsubscribed", helpers.TEST_JID.userhost(), helpers.TEST_PROFILE)
105 self.presence.unsubscribedReceived(helpers.TEST_JID)
106
107 def test_subscribeReceived(self):
108 self.host.bridge.expectCall("subscribe", "subscribe", helpers.TEST_JID.userhost(), helpers.TEST_PROFILE)
109 self.presence.subscribeReceived(helpers.TEST_JID)
110
111 def test_unsubscribeReceived(self):
112 self.host.bridge.expectCall("subscribe", "unsubscribe", helpers.TEST_JID.userhost(), helpers.TEST_PROFILE)
113 self.presence.unsubscribeReceived(helpers.TEST_JID)
114