1478
1479
realm=realm, path=path))
1479
1480
self.assertEquals(stdout.getvalue(), expected_prompt)
1481
def test_default_prompts(self):
1482
# HTTP prompts can't be tested here, see test_http.py
1483
self._check_default_prompt('FTP %(user)s@%(host)s password: ', 'ftp')
1484
self._check_default_prompt('FTP %(user)s@%(host)s:%(port)d password: ',
1487
self._check_default_prompt('SSH %(user)s@%(host)s:%(port)d password: ',
1482
def _check_default_username_prompt(self, expected_prompt_format, scheme,
1483
host=None, port=None, realm=None, path=None):
1487
expected_prompt = expected_prompt_format % {
1488
'scheme': scheme, 'host': host, 'port': port,
1490
stdout = tests.StringIOWrapper()
1491
ui.ui_factory = tests.TestUIFactory(stdin=username+ '\n',
1493
# We use an empty conf so that the user is always prompted
1494
conf = config.AuthenticationConfig()
1495
self.assertEquals(username, conf.get_user(scheme, host, port=port,
1496
realm=realm, path=path, ask=True))
1497
self.assertEquals(stdout.getvalue(), expected_prompt)
1499
def test_username_defaults_prompts(self):
1500
# HTTP prompts can't be tested here, see test_http.py
1501
self._check_default_username_prompt('FTP %(host)s username: ', 'ftp')
1502
self._check_default_username_prompt(
1503
'FTP %(host)s:%(port)d username: ', 'ftp', port=10020)
1504
self._check_default_username_prompt(
1505
'SSH %(host)s:%(port)d username: ', 'ssh', port=12345)
1507
def test_username_default_no_prompt(self):
1508
conf = config.AuthenticationConfig()
1509
self.assertEquals(getpass.getuser(),
1510
conf.get_user('ftp', 'example.com'))
1511
self.assertEquals("explicitdefault",
1512
conf.get_user('ftp', 'example.com', default="explicitdefault"))
1514
def test_password_default_prompts(self):
1515
# HTTP prompts can't be tested here, see test_http.py
1516
self._check_default_password_prompt(
1517
'FTP %(user)s@%(host)s password: ', 'ftp')
1518
self._check_default_password_prompt(
1519
'FTP %(user)s@%(host)s:%(port)d password: ', 'ftp', port=10020)
1520
self._check_default_password_prompt(
1521
'SSH %(user)s@%(host)s:%(port)d password: ', 'ssh', port=12345)
1489
1522
# SMTP port handling is a bit special (it's handled if embedded in the
1491
1524
# FIXME: should we: forbid that, extend it to other schemes, leave
1492
1525
# things as they are that's fine thank you ?
1493
self._check_default_prompt('SMTP %(user)s@%(host)s password: ',
1526
self._check_default_password_prompt('SMTP %(user)s@%(host)s password: ',
1495
self._check_default_prompt('SMTP %(user)s@%(host)s password: ',
1528
self._check_default_password_prompt('SMTP %(user)s@%(host)s password: ',
1496
1529
'smtp', host='bar.org:10025')
1497
self._check_default_prompt(
1530
self._check_default_password_prompt(
1498
1531
'SMTP %(user)s@%(host)s:%(port)d password: ',
1499
1532
'smtp', port=10025)