Files
deb-python-dcos/cli/tests/integrations/test_auth.py
2015-06-03 10:10:14 -07:00

58 lines
1.6 KiB
Python

import os
import webbrowser
from dcos import auth, constants, util
from dcoscli.main import main
from mock import Mock, patch
def test_no_browser_auth():
webbrowser.get = Mock(side_effect=webbrowser.Error())
with patch('webbrowser.open') as op:
_mock_dcos_run([util.which('dcos')], False)
assert op.call_count == 0
def test_when_authenticated():
with patch('dcos.auth.force_auth'):
_mock_dcos_run([util.which('dcos')], True)
assert auth.force_auth.call_count == 0
def test_anonymous_login():
with patch('sys.stdin.readline', return_value='\n'), \
patch('uuid.uuid1', return_value='anonymous@email'):
assert _mock_dcos_run([util.which('dcos'),
'help'], False) == 0
assert _mock_dcos_run([util.which('dcos'), 'config',
'show', 'core.email'], False) == 0
assert _mock_dcos_run([util.which('dcos'), 'config',
'unset', 'core.email'], False) == 0
def _mock_dcos_run(args, authenticated=True):
if authenticated:
env = _config_with_credentials()
else:
env = _config_without_credentials()
with patch('sys.argv', args), patch.dict(os.environ, env):
return main()
def _config_with_credentials():
return {
constants.DCOS_CONFIG_ENV: os.path.join(
'tests', 'data', 'auth', 'dcos_with_credentials.toml')
}
def _config_without_credentials():
return {
constants.DCOS_CONFIG_ENV: os.path.join(
'tests', 'data', 'auth', 'dcos_without_credentials.toml')
}