~mvo/ubuntu-sso-client/strawman-lp711413

« back to all changes in this revision

Viewing changes to ubuntuone/oauthdesktop/tests/__init__.py

  • Committer: natalia.bidart at canonical
  • Date: 2010-06-08 11:54:48 UTC
  • Revision ID: natalia.bidart@canonical.com-20100608115448-aqeiwm4ki1nljaw1
Built correct structure.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2009 Canonical Ltd.
 
2
#
 
3
# This program is free software: you can redistribute it and/or modify it
 
4
# under the terms of the GNU General Public License version 3, as published
 
5
# by the Free Software Foundation.
 
6
#
 
7
# This program is distributed in the hope that it will be useful, but
 
8
# WITHOUT ANY WARRANTY; without even the implied warranties of
 
9
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
 
10
# PURPOSE.  See the GNU General Public License for more details.
 
11
#
 
12
# You should have received a copy of the GNU General Public License along
 
13
# with this program.  If not, see <http://www.gnu.org/licenses/>.
 
14
 
 
15
"""Tests for OAuth library."""
 
16
 
 
17
import dbus
 
18
 
 
19
from ubuntuone.oauthdesktop import DBUS_IFACE_AUTH_NAME
 
20
from ubuntuone.oauthdesktop.main import Login, LoginProcessor
 
21
 
 
22
# OAuth stubs
 
23
class FakeLoginProcessor(LoginProcessor):
 
24
    """Stub login processor."""
 
25
 
 
26
    def __init__(self, dbus_object):
 
27
        """Initialize the login processor."""
 
28
        LoginProcessor.__init__(self, dbus_object, use_libnotify=False)
 
29
        self.next_login_cb = None
 
30
 
 
31
    def login(self, realm, consumer_key, error_handler=None,
 
32
              reply_handler=None, do_login=True):
 
33
        """Stub, call self.next_login_cb or send NewCredentials if
 
34
        self.next_login_cb isn't defined.
 
35
        """
 
36
        self.realm = str(realm)
 
37
        self.consumer_key = str(consumer_key)
 
38
        if self.next_login_cb:
 
39
            cb = self.next_login_cb[0]
 
40
            args = self.next_login_cb[1]
 
41
            self.next_login_cb = None
 
42
            return cb(*args)
 
43
        else:
 
44
            self.dbus_object.NewCredentials(realm, consumer_key)
 
45
 
 
46
    def clear_token(self, realm, consumer_key):
 
47
        """Stub, do nothing"""
 
48
        pass
 
49
 
 
50
    def next_login_with(self, callback, args=tuple()):
 
51
        """shortcircuit the next call to login and call the specified callback.
 
52
        callback is usually one of: self.got_token, self.got_no_token,
 
53
        self.got_denial or self.got_error.
 
54
        """
 
55
        self.next_login_cb = (callback, args)
 
56
 
 
57
 
 
58
class FakeLogin(Login):
 
59
    """Stub Object which listens for D-Bus OAuth requests"""
 
60
 
 
61
    def __init__(self, bus):
 
62
        """Initiate the object."""
 
63
        self.bus = bus
 
64
        self.busName = dbus.service.BusName(DBUS_IFACE_AUTH_NAME, bus=self.bus)
 
65
        # bypass the parent class __init__ as it has the path hardcoded
 
66
        # and we can't use '/' as the path, as we are already using it
 
67
        # for syncdaemon. pylint: disable-msg=W0233,W0231
 
68
        dbus.service.Object.__init__(self, object_path="/oauthdesktop",
 
69
                                     bus_name=self.busName)
 
70
        self.processor = FakeLoginProcessor(self)
 
71
        self.currently_authing = False
 
72
 
 
73
    def shutdown(self):
 
74
        """Shutdown and remove any trace from the bus"""
 
75
        self.busName.get_bus().release_name(self.busName.get_name())
 
76
        self.remove_from_connection()
 
77
 
 
78