~landscape/zope3/newer-from-ztk

« back to all changes in this revision

Viewing changes to src/twisted/words/test/test_basesupport.py

  • Committer: Thomas Hervé
  • Date: 2009-07-08 13:52:04 UTC
  • Revision ID: thomas@canonical.com-20090708135204-df5eesrthifpylf8
Remove twisted copy

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2001-2006 Twisted Matrix Laboratories.
2
 
# See LICENSE for details.
3
 
 
4
 
from twisted.trial import unittest
5
 
from twisted.words.im import basesupport
6
 
from twisted.internet import error, defer
7
 
 
8
 
class DummyAccount(basesupport.AbstractAccount):
9
 
    """
10
 
    An account object that will do nothing when asked to start to log on.
11
 
    """
12
 
 
13
 
    loginHasFailed = False
14
 
    loginCallbackCalled = False
15
 
 
16
 
    def _startLogOn(self, *args):
17
 
        """
18
 
        Set self.loginDeferred to the same as the deferred returned, allowing a
19
 
        testcase to .callback or .errback.
20
 
        
21
 
        @return: A deferred.
22
 
        """
23
 
        self.loginDeferred = defer.Deferred()
24
 
        return self.loginDeferred
25
 
 
26
 
    def _loginFailed(self, result):
27
 
        self.loginHasFailed = True
28
 
        return basesupport.AbstractAccount._loginFailed(self, result)
29
 
 
30
 
    def _cb_logOn(self, result):
31
 
        self.loginCallbackCalled = True
32
 
        return basesupport.AbstractAccount._cb_logOn(self, result)
33
 
 
34
 
class DummyUI(object):
35
 
    """
36
 
    Provide just the interface required to be passed to AbstractAccount.logOn.
37
 
    """
38
 
    clientRegistered = False
39
 
 
40
 
    def registerAccountClient(self, result): 
41
 
        self.clientRegistered = True
42
 
 
43
 
class ClientMsgTests(unittest.TestCase):
44
 
    def makeUI(self):
45
 
        return DummyUI()
46
 
 
47
 
    def makeAccount(self):
48
 
        return DummyAccount('la', False, 'la', None, 'localhost', 6667)
49
 
 
50
 
    def test_connect(self):
51
 
        """
52
 
        Test that account.logOn works, and it calls the right callback when a
53
 
        connection is established.
54
 
        """
55
 
        account = self.makeAccount()
56
 
        ui = self.makeUI()
57
 
        d = account.logOn(ui)
58
 
        account.loginDeferred.callback(None)
59
 
 
60
 
        def check(result):
61
 
            self.assert_(not account.loginHasFailed, 
62
 
                    "Login shouldn't have failed")
63
 
            self.assert_(account.loginCallbackCalled, 
64
 
                    "We should be logged in")
65
 
        d.addCallback(check)
66
 
        return d
67
 
 
68
 
    def test_failedConnect(self):
69
 
        """
70
 
        Test that account.logOn works, and it calls the right callback when a
71
 
        connection is established.
72
 
        """
73
 
        account = self.makeAccount()
74
 
        ui = self.makeUI()
75
 
        d = account.logOn(ui)
76
 
        account.loginDeferred.errback(Exception())
77
 
 
78
 
        def err(reason):
79
 
            self.assert_(account.loginHasFailed, "Login should have failed")
80
 
            self.assert_(not account.loginCallbackCalled, 
81
 
                    "We shouldn't be logged in")
82
 
            self.assert_(not ui.clientRegistered, 
83
 
                    "Client shouldn't be registered in the UI")
84
 
        cb = lambda r: self.assert_(False, "Shouldn't get called back")
85
 
        d.addCallbacks(cb, err)
86
 
        return d
87
 
 
88
 
    def test_alreadyConnecting(self):
89
 
        """
90
 
        Test that it can fail sensibly when someone tried to connect before
91
 
        we did. 
92
 
        """
93
 
        account = self.makeAccount()
94
 
        ui = self.makeUI()
95
 
        account.logOn(ui)
96
 
        self.assertRaises(error.ConnectError, account.logOn, ui)
97