clean up toml test files (#571)
This commit is contained in:
@@ -7,4 +7,5 @@ set -x
|
||||
# run tests
|
||||
CLI_TEST_MASTER_PROXY=true \
|
||||
CLI_TEST_SSH_KEY_PATH=/dcos-cli/mesosphere-aws.key \
|
||||
echo "dcos_acs_token = \"$DCOS_ACS_TOKEN\"" >> /dcos-cli/cli/tests/data/dcos.toml && \
|
||||
./bin/start_tests.sh
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
[core]
|
||||
reporting = false
|
||||
dcos_url = "http://dcos.snakeoil.mesosphere.com"
|
||||
@@ -1,4 +0,0 @@
|
||||
[core]
|
||||
dcos_acs_token = "foobar"
|
||||
dcos_url = "https://dcos.snakeoil.mesosphere.com"
|
||||
reporting = true
|
||||
@@ -1,3 +0,0 @@
|
||||
[core]
|
||||
reporting = true
|
||||
dcos_url = "http://dcos.snakeoil.mesosphere.com"
|
||||
@@ -1,2 +0,0 @@
|
||||
[core]
|
||||
reporting = false
|
||||
@@ -1,2 +0,0 @@
|
||||
[core]
|
||||
reporting = false
|
||||
@@ -1,4 +0,0 @@
|
||||
[core]
|
||||
reporting = false
|
||||
[package]
|
||||
cosmos_url = "http://localhost:7070"
|
||||
@@ -1,5 +0,0 @@
|
||||
[core]
|
||||
reporting = false
|
||||
[marathon]
|
||||
[package]
|
||||
cosmos_url = "http://localhost:7070"
|
||||
@@ -1,6 +0,0 @@
|
||||
[package]
|
||||
cosmos_url = "http://localhost:7070"
|
||||
[core]
|
||||
timeout = 5
|
||||
dcos_url = "https://dcos.snakeoil.mesosphere.com"
|
||||
reporting = false
|
||||
@@ -397,6 +397,44 @@ def app(path, app_id, wait=True):
|
||||
watch_all_deployments()
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def update_config(name, value, env=None):
|
||||
""" Context manager for altering config for tests
|
||||
|
||||
:param key: <key>
|
||||
:type key: str
|
||||
:param value: <value>
|
||||
:type value: str
|
||||
;param env: env vars
|
||||
:type env: dict
|
||||
:rtype: None
|
||||
"""
|
||||
|
||||
returncode, stdout, _ = exec_command(
|
||||
['dcos', 'config', 'show', name], env)
|
||||
|
||||
result = None
|
||||
# config param already exists
|
||||
if returncode == 0:
|
||||
result = json.loads('"' + stdout.decode('utf-8').strip() + '"')
|
||||
|
||||
# if we are setting a value
|
||||
if value is not None:
|
||||
config_set(name, value, env)
|
||||
# only unset if the config param already exists
|
||||
elif result is not None:
|
||||
config_unset(name, env)
|
||||
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
# return config to previous state
|
||||
if result is not None:
|
||||
config_set(name, result, env)
|
||||
else:
|
||||
exec_command(['dcos', 'config', 'unset', name], env)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def package(package_name, deploy=False, args=[]):
|
||||
"""Context manager that deploys an app on entrance, and removes it on
|
||||
|
||||
@@ -4,7 +4,7 @@ from dcos import constants
|
||||
|
||||
import pytest
|
||||
|
||||
from .common import assert_command, config_set, exec_command
|
||||
from .common import assert_command, exec_command, update_config
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -31,23 +31,22 @@ def test_version():
|
||||
|
||||
|
||||
def test_logout_no_token(env):
|
||||
exec_command(['dcos', 'config', 'unset', 'core.dcos_acs_token'], env=env)
|
||||
|
||||
returncode, _, stderr = exec_command(
|
||||
['dcos', 'config', 'show', 'core.dcos_acs_token'], env=env)
|
||||
assert returncode == 1
|
||||
assert stderr == b"Property 'core.dcos_acs_token' doesn't exist\n"
|
||||
with update_config("core.dcos_acs_token", None, env):
|
||||
returncode, _, stderr = exec_command(
|
||||
['dcos', 'config', 'show', 'core.dcos_acs_token'], env=env)
|
||||
assert returncode == 1
|
||||
assert stderr == b"Property 'core.dcos_acs_token' doesn't exist\n"
|
||||
|
||||
|
||||
def test_logout_with_token(env):
|
||||
config_set('core.dcos_acs_token', "foobar", env=env)
|
||||
stderr = b"[core.dcos_acs_token]: changed\n"
|
||||
assert_command(
|
||||
['dcos', 'config', 'set', 'core.dcos_acs_token', 'faketoken'],
|
||||
stderr=stderr,
|
||||
env=env)
|
||||
with update_config("core.dcos_acs_token", "foobar", env):
|
||||
stderr = b"[core.dcos_acs_token]: changed\n"
|
||||
assert_command(
|
||||
['dcos', 'config', 'set', 'core.dcos_acs_token', 'faketoken'],
|
||||
stderr=stderr,
|
||||
env=env)
|
||||
|
||||
stderr = b'Removed [core.dcos_acs_token]\n'
|
||||
assert_command(['dcos', 'auth', 'logout'],
|
||||
stderr=stderr,
|
||||
env=env)
|
||||
stderr = b'Removed [core.dcos_acs_token]\n'
|
||||
assert_command(['dcos', 'auth', 'logout'],
|
||||
stderr=stderr,
|
||||
env=env)
|
||||
|
||||
@@ -6,7 +6,8 @@ from dcos import constants
|
||||
|
||||
import pytest
|
||||
|
||||
from .common import assert_command, config_set, config_unset, exec_command
|
||||
from .common import (assert_command, config_set, config_unset,
|
||||
exec_command, update_config)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -20,17 +21,6 @@ def env():
|
||||
return r
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def missing_env():
|
||||
r = os.environ.copy()
|
||||
r.update({
|
||||
constants.PATH_ENV: os.environ[constants.PATH_ENV],
|
||||
constants.DCOS_CONFIG_ENV:
|
||||
os.path.join("tests", "data", "config", "missing_params_dcos.toml")
|
||||
})
|
||||
return r
|
||||
|
||||
|
||||
def test_help():
|
||||
with open('tests/data/help/config.txt') as content:
|
||||
assert_command(['dcos', 'config', '--help'],
|
||||
@@ -80,13 +70,15 @@ def test_invalid_dcos_url(env):
|
||||
stderr = b'Please check url \'abc.com\'. Missing http(s)://\n'
|
||||
assert_command(['dcos', 'config', 'set', 'core.dcos_url', 'abc.com'],
|
||||
stderr=stderr,
|
||||
returncode=1)
|
||||
returncode=1,
|
||||
env=env)
|
||||
|
||||
|
||||
def test_get_top_property(env):
|
||||
stderr = (
|
||||
b"Property 'core' doesn't fully specify a value - "
|
||||
b"possible properties are:\n"
|
||||
b"core.dcos_acs_token\n"
|
||||
b"core.dcos_url\n"
|
||||
b"core.reporting\n"
|
||||
b"core.ssl_verify\n"
|
||||
@@ -95,10 +87,11 @@ def test_get_top_property(env):
|
||||
|
||||
assert_command(['dcos', 'config', 'show', 'core'],
|
||||
stderr=stderr,
|
||||
returncode=1)
|
||||
returncode=1,
|
||||
env=env)
|
||||
|
||||
|
||||
def test_set_package_sources_property(env):
|
||||
def test_set_package_sources_property():
|
||||
notice = (b"This config property has been deprecated. "
|
||||
b"Please add your repositories with `dcos package repo add`\n")
|
||||
assert_command(['dcos', 'config', 'set', 'package.sources', '[\"foo\"]'],
|
||||
@@ -106,7 +99,7 @@ def test_set_package_sources_property(env):
|
||||
returncode=1)
|
||||
|
||||
|
||||
def test_set_core_email_property(env):
|
||||
def test_set_core_email_property():
|
||||
notice = (b"This config property has been deprecated.\n")
|
||||
assert_command(['dcos', 'config', 'set', 'core.email', 'foo@bar.com'],
|
||||
stderr=notice,
|
||||
@@ -189,6 +182,7 @@ def test_unset_top_property(env):
|
||||
stderr = (
|
||||
b"Property 'core' doesn't fully specify a value - "
|
||||
b"possible properties are:\n"
|
||||
b"core.dcos_acs_token\n"
|
||||
b"core.dcos_url\n"
|
||||
b"core.reporting\n"
|
||||
b"core.ssl_verify\n"
|
||||
@@ -216,10 +210,10 @@ def test_set_property_key(env):
|
||||
env=env)
|
||||
|
||||
|
||||
def test_set_missing_property(missing_env):
|
||||
config_set('core.dcos_url', 'http://localhost:8080', missing_env)
|
||||
_get_value('core.dcos_url', 'http://localhost:8080', missing_env)
|
||||
config_unset('core.dcos_url', missing_env)
|
||||
def test_set_missing_property(env):
|
||||
with update_config("core.dcos_url", None, env=env):
|
||||
config_set('core.dcos_url', 'http://localhost:8080', env)
|
||||
_get_value('core.dcos_url', 'http://localhost:8080', env)
|
||||
|
||||
|
||||
def test_set_core_property(env):
|
||||
@@ -272,19 +266,15 @@ def test_bad_port_fail_url_validation(env):
|
||||
'http://localhost:bad_port/', env)
|
||||
|
||||
|
||||
def test_timeout(missing_env):
|
||||
config_set('marathon.url', 'http://1.2.3.4', missing_env)
|
||||
config_set('core.timeout', '1', missing_env)
|
||||
def test_timeout(env):
|
||||
with update_config('marathon.url', 'http://1.2.3.4', env):
|
||||
with update_config('core.timeout', '1', env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env=env)
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env=missing_env)
|
||||
|
||||
assert returncode == 1
|
||||
assert stdout == b''
|
||||
assert "(connect timeout=1)".encode('utf-8') in stderr
|
||||
|
||||
config_unset('core.timeout', missing_env)
|
||||
config_unset('marathon.url', missing_env)
|
||||
assert returncode == 1
|
||||
assert stdout == b''
|
||||
assert "(connect timeout=1)".encode('utf-8') in stderr
|
||||
|
||||
|
||||
def test_parse_error():
|
||||
|
||||
@@ -11,7 +11,8 @@ from six.moves.BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
|
||||
|
||||
from .common import (app, assert_command, assert_lines, config_set,
|
||||
config_unset, exec_command, list_deployments, popen_tty,
|
||||
show_app, watch_all_deployments, watch_deployment)
|
||||
show_app, update_config, watch_all_deployments,
|
||||
watch_deployment)
|
||||
|
||||
_ZERO_INSTANCE_APP_INSTANCES = 100
|
||||
|
||||
@@ -43,24 +44,24 @@ def test_about():
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def missing_env():
|
||||
env = os.environ.copy()
|
||||
env.update({
|
||||
def env():
|
||||
r = os.environ.copy()
|
||||
r.update({
|
||||
constants.PATH_ENV: os.environ[constants.PATH_ENV],
|
||||
constants.DCOS_CONFIG_ENV:
|
||||
os.path.join("tests", "data", "marathon",
|
||||
"missing_marathon_params.toml")
|
||||
constants.DCOS_CONFIG_ENV: os.path.join("tests", "data", "dcos.toml"),
|
||||
})
|
||||
return env
|
||||
|
||||
return r
|
||||
|
||||
|
||||
def test_missing_config(missing_env):
|
||||
assert_command(
|
||||
['dcos', 'marathon', 'app', 'list'],
|
||||
returncode=1,
|
||||
stderr=(b'Missing required config parameter: "core.dcos_url". '
|
||||
b'Please run `dcos config set core.dcos_url <value>`.\n'),
|
||||
env=missing_env)
|
||||
def test_missing_config(env):
|
||||
with update_config("core.dcos_url", None, env):
|
||||
assert_command(
|
||||
['dcos', 'marathon', 'app', 'list'],
|
||||
returncode=1,
|
||||
stderr=(b'Missing required config parameter: "core.dcos_url". '
|
||||
b'Please run `dcos config set core.dcos_url <value>`.\n'),
|
||||
env=env)
|
||||
|
||||
|
||||
def test_empty_list():
|
||||
|
||||
@@ -4,7 +4,7 @@ from dcos import constants
|
||||
|
||||
import pytest
|
||||
|
||||
from .common import config_set, config_unset, exec_command
|
||||
from .common import config_set, exec_command, update_config
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -12,13 +12,21 @@ def env():
|
||||
r = os.environ.copy()
|
||||
r.update({
|
||||
constants.PATH_ENV: os.environ[constants.PATH_ENV],
|
||||
constants.DCOS_CONFIG_ENV: os.path.join("tests",
|
||||
"data", "ssl", "ssl.toml"),
|
||||
constants.DCOS_CONFIG_ENV: os.path.join("tests", "data", "dcos.toml"),
|
||||
})
|
||||
|
||||
return r
|
||||
|
||||
|
||||
@pytest.yield_fixture(autouse=True)
|
||||
def setup_env(env):
|
||||
config_set("core.dcos_url", "https://dcos.snakeoil.mesosphere.com", env)
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
config_set("core.dcos_url", "http://dcos.snakeoil.mesosphere.com", env)
|
||||
|
||||
|
||||
def test_dont_verify_ssl_with_env_var(env):
|
||||
env[constants.DCOS_SSL_VERIFY_ENV] = 'false'
|
||||
|
||||
@@ -31,77 +39,68 @@ def test_dont_verify_ssl_with_env_var(env):
|
||||
|
||||
|
||||
def test_dont_verify_ssl_with_config(env):
|
||||
config_set('core.ssl_verify', 'false', env)
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 0
|
||||
assert stderr == b''
|
||||
|
||||
config_unset('core.ssl_verify', env)
|
||||
with update_config('core.ssl_verify', 'false', env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 0
|
||||
assert stderr == b''
|
||||
|
||||
|
||||
def test_verify_ssl_without_cert_env_var(env):
|
||||
env[constants.DCOS_SSL_VERIFY_ENV] = 'true'
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "certificate verify failed" in stderr.decode('utf-8')
|
||||
with update_config('core.ssl_verify', None, env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "certificate verify failed" in stderr.decode('utf-8')
|
||||
|
||||
env.pop(constants.DCOS_SSL_VERIFY_ENV)
|
||||
|
||||
|
||||
def test_verify_ssl_without_cert_config(env):
|
||||
config_set('core.ssl_verify', 'true', env)
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "certificate verify failed" in stderr.decode('utf-8')
|
||||
|
||||
config_unset('core.ssl_verify', env)
|
||||
with update_config('core.ssl_verify', 'true', env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "certificate verify failed" in stderr.decode('utf-8')
|
||||
|
||||
|
||||
def test_verify_ssl_with_bad_cert_env_var(env):
|
||||
env[constants.DCOS_SSL_VERIFY_ENV] = 'tests/data/ssl/fake.pem'
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "PEM lib" in stderr.decode('utf-8') # wrong private key
|
||||
with update_config('core.ssl_verify', None, env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "PEM lib" in stderr.decode('utf-8') # wrong private key
|
||||
|
||||
env.pop(constants.DCOS_SSL_VERIFY_ENV)
|
||||
|
||||
|
||||
def test_verify_ssl_with_bad_cert_config(env):
|
||||
config_set('core.ssl_verify', 'tests/data/ssl/fake.pem', env)
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "PEM lib" in stderr.decode('utf-8') # wrong private key
|
||||
|
||||
config_unset('core.ssl_verify', env)
|
||||
with update_config('core.ssl_verify', 'tests/data/ssl/fake.pem', env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 1
|
||||
assert "PEM lib" in stderr.decode('utf-8') # wrong private key
|
||||
|
||||
|
||||
def test_verify_ssl_with_good_cert_env_var(env):
|
||||
env[constants.DCOS_SSL_VERIFY_ENV] = '/dcos-cli/adminrouter/snakeoil.crt'
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 0
|
||||
assert stderr == b''
|
||||
with update_config('core.ssl_verify', None, env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 0
|
||||
assert stderr == b''
|
||||
|
||||
env.pop(constants.DCOS_SSL_VERIFY_ENV)
|
||||
|
||||
|
||||
def test_verify_ssl_with_good_cert_config(env):
|
||||
config_set('core.ssl_verify', '/dcos-cli/adminrouter/snakeoil.crt', env)
|
||||
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 0
|
||||
assert stderr == b''
|
||||
|
||||
config_unset('core.ssl_verify', env)
|
||||
with update_config(
|
||||
'core.ssl_verify', '/dcos-cli/adminrouter/snakeoil.crt', env):
|
||||
returncode, stdout, stderr = exec_command(
|
||||
['dcos', 'marathon', 'app', 'list'], env)
|
||||
assert returncode == 0
|
||||
assert stderr == b''
|
||||
|
||||
@@ -121,7 +121,8 @@ def test_request_with_bad_auth_acl(mock, req_mock, auth_mock):
|
||||
|
||||
with pytest.raises(DCOSException) as e:
|
||||
http._request_with_auth(mock, "method", mock.url)
|
||||
assert e.exconly().split(':')[1].strip() == "Authentication failed"
|
||||
msg = "Your core.dcos_acs_token is invalid. Please run: `dcos auth login`"
|
||||
assert e.exconly().split(':', 1)[1].strip() == msg
|
||||
|
||||
|
||||
@patch('requests.Response')
|
||||
@@ -138,7 +139,8 @@ def test_request_with_bad_oauth(mock, req_mock, auth_mock):
|
||||
|
||||
with pytest.raises(DCOSException) as e:
|
||||
http._request_with_auth(mock, "method", mock.url)
|
||||
assert e.exconly().split(':')[1].strip() == "Authentication failed"
|
||||
msg = "Your core.dcos_acs_token is invalid. Please run: `dcos auth login`"
|
||||
assert e.exconly().split(':', 1)[1].strip() == msg
|
||||
|
||||
|
||||
@patch('requests.Response')
|
||||
|
||||
Reference in New Issue
Block a user