~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugins/launchpad/account.py

  • Committer: Vincent Ladeuil
  • Date: 2009-05-04 14:48:21 UTC
  • mto: (4349.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4350.
  • Revision ID: v.ladeuil+lp@free.fr-20090504144821-39dvqkikmd3zqkdg
Handle servers proposing several authentication schemes.

* bzrlib/transport/http/_urllib2_wrappers.py:
(AbstractAuthHandler.auth_required): Several schemes can be
proposed by the server, try to match each one in turn.
(BasicAuthHandler.auth_match): Delete dead code.

* bzrlib/tests/test_http.py:
(load_tests): Separate proxy and http authentication tests as they
require different server setups.
(TestAuth.create_transport_readonly_server): Simplified by using
parameter provided by load_tests.
(TestAuth.test_changing_nonce): Adapt to new parametrization.
(TestProxyAuth.create_transport_readonly_server): Deleted.

* bzrlib/tests/http_utils.py:
(DigestAndBasicAuthRequestHandler, HTTPBasicAndDigestAuthServer,
ProxyBasicAndDigestAuthServer): Add a test server proposing both
basic and digest auth schemes but accepting only digest as valid.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007-2010 Canonical Ltd
 
1
# Copyright (C) 2007, 2008 Canonical Ltd
2
2
#
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
20
20
than once for each place that needs to take it into account.
21
21
"""
22
22
 
23
 
from bzrlib import (
24
 
    errors,
25
 
    trace,
26
 
    transport,
27
 
    )
 
23
from bzrlib import errors, trace
28
24
from bzrlib.config import AuthenticationConfig, GlobalConfig
 
25
from bzrlib.transport import get_transport
29
26
 
30
27
 
31
28
LAUNCHPAD_BASE = 'https://launchpad.net/'
83
80
def _get_auth_user(auth=None):
84
81
    if auth is None:
85
82
        auth = AuthenticationConfig()
86
 
    username = auth.get_user('ssh', '.launchpad.net')
 
83
    username = auth.get_user('ssh', '.launchpad.net', default="")
 
84
    if username == "":
 
85
        username = None
87
86
    return username
88
87
 
89
88
def _set_auth_user(username, auth=None):
100
99
    uploaded SSH keys.
101
100
    """
102
101
    if _transport is None:
103
 
        _transport = transport.get_transport(LAUNCHPAD_BASE)
 
102
        _transport = get_transport(LAUNCHPAD_BASE)
104
103
 
105
104
    try:
106
105
        data = _transport.get_bytes('~%s/+sshkeys' % username)