/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/plugins/launchpad/test_account.py

[merge] robertc's integration, updated tests to check for retcode=3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007-2010 Canonical Ltd
2
 
#
3
 
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
7
 
#
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
#
13
 
# You should have received a copy of the GNU General Public License
14
 
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
 
 
17
 
"""Tests for Launchpad user ID management functions."""
18
 
 
19
 
from ... import config
20
 
from ...tests import TestCaseInTempDir, TestCaseWithMemoryTransport
21
 
from . import account
22
 
 
23
 
 
24
 
class LaunchpadAccountTests(TestCaseInTempDir):
25
 
 
26
 
    def test_get_lp_login_unconfigured(self):
27
 
        # Test that get_lp_login() returns None if no username has
28
 
        # been configured.
29
 
        my_config = config.MemoryStack(b'')
30
 
        self.assertEqual(None, account.get_lp_login(my_config))
31
 
 
32
 
    def test_get_lp_login(self):
33
 
        # Test that get_lp_login() returns the configured username
34
 
        my_config = config.MemoryStack(
35
 
            b'[DEFAULT]\nlaunchpad_username=test-user\n')
36
 
        self.assertEqual('test-user', account.get_lp_login(my_config))
37
 
 
38
 
    def test_set_lp_login(self):
39
 
        # Test that set_lp_login() updates the config file.
40
 
        my_config = config.MemoryStack(b'')
41
 
        self.assertEqual(None, my_config.get('launchpad_username'))
42
 
        account.set_lp_login('test-user', my_config)
43
 
        self.assertEqual(
44
 
            'test-user', my_config.get('launchpad_username'))
45
 
 
46
 
    def test_unknown_launchpad_username(self):
47
 
        # Test formatting of UnknownLaunchpadUsername exception
48
 
        error = account.UnknownLaunchpadUsername(user='test-user')
49
 
        self.assertEqualDiff('The user name test-user is not registered '
50
 
                             'on Launchpad.', str(error))
51
 
 
52
 
    def test_no_registered_ssh_keys(self):
53
 
        # Test formatting of NoRegisteredSSHKeys exception
54
 
        error = account.NoRegisteredSSHKeys(user='test-user')
55
 
        self.assertEqualDiff('The user test-user has not registered any '
56
 
                             'SSH keys with Launchpad.\n'
57
 
                             'See <https://launchpad.net/people/+me>',
58
 
                             str(error))
59
 
 
60
 
    def test_set_lp_login_updates_authentication_conf(self):
61
 
        self.assertIs(None, account._get_auth_user())
62
 
        account.set_lp_login('foo')
63
 
        self.assertEqual('foo', account._get_auth_user())
64
 
 
65
 
    def test_get_lp_login_does_not_update_for_none_user(self):
66
 
        account.get_lp_login()
67
 
        self.assertIs(None, account._get_auth_user())
68
 
 
69
 
    def test_get_lp_login_updates_authentication_conf(self):
70
 
        account._set_global_option('foo')
71
 
        self.assertIs(None, account._get_auth_user())
72
 
        account.get_lp_login()
73
 
        auth = config.AuthenticationConfig()
74
 
        self.assertEqual('foo', account._get_auth_user(auth))
75
 
        self.assertEqual('foo', auth.get_user('ssh', 'bazaar.launchpad.net'))
76
 
        self.assertEqual('foo', auth.get_user('ssh',
77
 
                                              'bazaar.staging.launchpad.net'))
78
 
 
79
 
    def test_get_lp_login_leaves_existing_credentials(self):
80
 
        auth = config.AuthenticationConfig()
81
 
        auth.set_credentials('Foo', 'bazaar.launchpad.net', 'foo', 'ssh')
82
 
        auth.set_credentials('Bar', 'bazaar.staging.launchpad.net', 'foo',
83
 
                             'ssh')
84
 
        account._set_global_option('foo')
85
 
        account.get_lp_login()
86
 
        auth = config.AuthenticationConfig()
87
 
        credentials = auth.get_credentials('ssh', 'bazaar.launchpad.net')
88
 
        self.assertEqual('Foo', credentials['name'])
89
 
 
90
 
    def test_get_lp_login_errors_on_mismatch(self):
91
 
        account._set_auth_user('foo')
92
 
        account._set_global_option('bar')
93
 
        e = self.assertRaises(account.MismatchedUsernames,
94
 
                              account.get_lp_login)
95
 
        self.assertEqual('breezy.conf and authentication.conf disagree about'
96
 
                         ' launchpad account name.  Please re-run launchpad-login.', str(e))
97
 
 
98
 
 
99
 
class CheckAccountTests(TestCaseWithMemoryTransport):
100
 
 
101
 
    def test_check_lp_login_valid_user(self):
102
 
        transport = self.get_transport()
103
 
        transport.mkdir('~test-user')
104
 
        transport.put_bytes('~test-user/+sshkeys', b'some keys here')
105
 
        account.check_lp_login('test-user', transport)
106
 
 
107
 
    def test_check_lp_login_no_user(self):
108
 
        transport = self.get_transport()
109
 
        self.assertRaises(account.UnknownLaunchpadUsername,
110
 
                          account.check_lp_login, 'test-user', transport)
111
 
 
112
 
    def test_check_lp_login_no_ssh_keys(self):
113
 
        transport = self.get_transport()
114
 
        transport.mkdir('~test-user')
115
 
        transport.put_bytes('~test-user/+sshkeys', b'')
116
 
        self.assertRaises(account.NoRegisteredSSHKeys,
117
 
                          account.check_lp_login, 'test-user', transport)