1
# Copyright (C) 2007, 2008 Canonical Ltd
1
# Copyright (C) 2007-2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
17
17
"""Tests for Launchpad user ID management functions."""
19
from cStringIO import StringIO
21
from bzrlib import config
22
from bzrlib.tests import TestCaseInTempDir, TestCaseWithMemoryTransport
23
from bzrlib.plugins.launchpad import account
19
from ... import config
20
from ...tests import TestCaseInTempDir, TestCaseWithMemoryTransport
26
24
class LaunchpadAccountTests(TestCaseInTempDir):
28
def setup_config(self, text):
29
my_config = config.GlobalConfig()
30
config_file = StringIO(text)
31
my_config._get_parser(config_file)
34
26
def test_get_lp_login_unconfigured(self):
35
27
# Test that get_lp_login() returns None if no username has
37
my_config = self.setup_config('')
29
my_config = config.MemoryStack(b'')
38
30
self.assertEqual(None, account.get_lp_login(my_config))
40
32
def test_get_lp_login(self):
41
33
# Test that get_lp_login() returns the configured username
42
my_config = self.setup_config(
43
'[DEFAULT]\nlaunchpad_username=test-user\n')
34
my_config = config.MemoryStack(
35
b'[DEFAULT]\nlaunchpad_username=test-user\n')
44
36
self.assertEqual('test-user', account.get_lp_login(my_config))
46
38
def test_set_lp_login(self):
47
39
# Test that set_lp_login() updates the config file.
48
my_config = self.setup_config('')
49
self.assertEqual(None, my_config.get_user_option('launchpad_username'))
40
my_config = config.MemoryStack(b'')
41
self.assertEqual(None, my_config.get('launchpad_username'))
50
42
account.set_lp_login('test-user', my_config)
52
'test-user', my_config.get_user_option('launchpad_username'))
44
'test-user', my_config.get('launchpad_username'))
54
46
def test_unknown_launchpad_username(self):
55
47
# Test formatting of UnknownLaunchpadUsername exception
61
53
# Test formatting of NoRegisteredSSHKeys exception
62
54
error = account.NoRegisteredSSHKeys(user='test-user')
63
55
self.assertEqualDiff('The user test-user has not registered any '
64
'SSH keys with Launchpad.\n'
65
'See <https://launchpad.net/people/+me>',
56
'SSH keys with Launchpad.\n'
57
'See <https://launchpad.net/people/+me>',
68
60
def test_set_lp_login_updates_authentication_conf(self):
69
61
self.assertIs(None, account._get_auth_user())
100
92
account._set_global_option('bar')
101
93
e = self.assertRaises(account.MismatchedUsernames,
102
94
account.get_lp_login)
103
self.assertEqual('bazaar.conf and authentication.conf disagree about'
104
' launchpad account name. Please re-run launchpad-login.', str(e))
95
self.assertEqual('breezy.conf and authentication.conf disagree about'
96
' launchpad account name. Please re-run launchpad-login.', str(e))
107
99
class CheckAccountTests(TestCaseWithMemoryTransport):
109
101
def test_check_lp_login_valid_user(self):
110
102
transport = self.get_transport()
111
103
transport.mkdir('~test-user')
112
transport.put_bytes('~test-user/+sshkeys', 'some keys here')
104
transport.put_bytes('~test-user/+sshkeys', b'some keys here')
113
105
account.check_lp_login('test-user', transport)
115
107
def test_check_lp_login_no_user(self):
120
112
def test_check_lp_login_no_ssh_keys(self):
121
113
transport = self.get_transport()
122
114
transport.mkdir('~test-user')
123
transport.put_bytes('~test-user/+sshkeys', '')
115
transport.put_bytes('~test-user/+sshkeys', b'')
124
116
self.assertRaises(account.NoRegisteredSSHKeys,
125
117
account.check_lp_login, 'test-user', transport)