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