salt/tests/integration/shell/test_proxy.py
rallytime 3273bbdab7
Merge branch '2017.7' into '2018.3'
Conflicts:
  - doc/ref/configuration/master.rst
  - doc/ref/modules/all/index.rst
  - doc/topics/grains/index.rst
  - doc/topics/releases/2016.3.4.rst
  - doc/topics/spm/spm_formula.rst
  - doc/topics/tutorials/cron.rst
  - doc/topics/tutorials/index.rst
  - doc/topics/tutorials/stormpath.rst
  - salt/engines/slack.py
  - salt/log/handlers/fluent_mod.py
  - salt/modules/cyg.py
  - salt/modules/junos.py
  - salt/modules/namecheap_dns.py
  - salt/modules/namecheap_domains.py
  - salt/modules/namecheap_ns.py
  - salt/modules/namecheap_ssl.py
  - salt/modules/namecheap_users.py
  - salt/modules/reg.py
  - salt/modules/tomcat.py
  - salt/modules/vault.py
  - salt/modules/win_file.py
  - salt/modules/zpool.py
  - salt/output/highstate.py
  - salt/renderers/pass.py
  - salt/runners/cache.py
  - salt/states/boto_apigateway.py
  - salt/states/boto_iam.py
  - salt/states/boto_route53.py
  - salt/states/msteams.py
  - salt/states/reg.py
  - salt/states/win_iis.py
  - tests/integration/modules/test_cmdmod.py
  - tests/integration/states/test_user.py
  - tests/support/helpers.py
  - tests/unit/cloud/clouds/test_openstack.py
  - tests/unit/fileserver/test_gitfs.py
  - tests/unit/modules/test_junos.py
  - tests/unit/pillar/test_git.py
  - tests/unit/states/test_win_path.py
  - tests/unit/test_pillar.py
  - tests/unit/utils/test_format_call.py
  - tests/unit/utils/test_utils.py
  - tests/unit/utils/test_warnings.py
2018-06-01 14:54:12 -04:00

145 lines
4.8 KiB
Python

# -*- coding: utf-8 -*-
'''
:codeauthor: Thayne Harbaugh (tharbaug@adobe.com)
tests.integration.shell.proxy
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'''
# Import python libs
from __future__ import absolute_import, print_function, unicode_literals
import logging
# Import salt tests libs
import tests.integration.utils
from tests.integration.utils import testprogram
log = logging.getLogger(__name__)
class ProxyTest(testprogram.TestProgramCase):
'''
Various integration tests for the salt-proxy executable.
'''
def test_exit_status_no_proxyid(self):
'''
Ensure correct exit status when --proxyid argument is missing.
'''
proxy = testprogram.TestDaemonSaltProxy(
name='proxy-no_proxyid',
parent_dir=self._test_dir,
)
# Call setup here to ensure config and script exist
proxy.setup()
stdout, stderr, status = proxy.run(
args=[
'--config-dir', proxy.abs_path(proxy.config_dir), # Needed due to verbatim_args=True
'-d',
],
verbatim_args=True, # prevents --proxyid from being added automatically
catch_stderr=True,
with_retcode=True,
# The proxy minion had a bug where it would loop forever
# without daemonizing - protect that with a timeout.
timeout=60,
)
try:
self.assert_exit_status(
status, 'EX_USAGE',
message='no --proxyid specified',
stdout=stdout,
stderr=tests.integration.utils.decode_byte_list(stderr)
)
finally:
# Although the start-up should fail, call shutdown() to set the
# internal _shutdown flag and avoid the registered atexit calls to
# cause timeout exeptions and respective traceback
proxy.shutdown()
def test_exit_status_unknown_user(self):
'''
Ensure correct exit status when the proxy is configured to run as an unknown user.
'''
proxy = testprogram.TestDaemonSaltProxy(
name='proxy-unknown_user',
config_base={'user': 'some_unknown_user_xyz'},
parent_dir=self._test_dir,
)
# Call setup here to ensure config and script exist
proxy.setup()
stdout, stderr, status = proxy.run(
args=['-d'],
catch_stderr=True,
with_retcode=True,
)
try:
self.assert_exit_status(
status, 'EX_NOUSER',
message='unknown user not on system',
stdout=stdout,
stderr=tests.integration.utils.decode_byte_list(stderr)
)
finally:
# Although the start-up should fail, call shutdown() to set the
# internal _shutdown flag and avoid the registered atexit calls to
# cause timeout exeptions and respective traceback
proxy.shutdown()
# pylint: disable=invalid-name
def test_exit_status_unknown_argument(self):
'''
Ensure correct exit status when an unknown argument is passed to salt-proxy.
'''
proxy = testprogram.TestDaemonSaltProxy(
name='proxy-unknown_argument',
parent_dir=self._test_dir,
)
# Call setup here to ensure config and script exist
proxy.setup()
stdout, stderr, status = proxy.run(
args=['-d', '--unknown-argument'],
catch_stderr=True,
with_retcode=True,
)
try:
self.assert_exit_status(
status, 'EX_USAGE',
message='unknown argument',
stdout=stdout, stderr=stderr
)
finally:
# Although the start-up should fail, call shutdown() to set the
# internal _shutdown flag and avoid the registered atexit calls to
# cause timeout exeptions and respective traceback
proxy.shutdown()
def test_exit_status_correct_usage(self):
'''
Ensure correct exit status when salt-proxy starts correctly.
'''
proxy = testprogram.TestDaemonSaltProxy(
name='proxy-correct_usage',
parent_dir=self._test_dir,
)
# Call setup here to ensure config and script exist
proxy.setup()
stdout, stderr, status = proxy.run(
args=['-d'],
catch_stderr=True,
with_retcode=True,
)
try:
self.assert_exit_status(
status, 'EX_OK',
message='correct usage',
stdout=stdout,
stderr=tests.integration.utils.decode_byte_list(stderr)
)
finally:
proxy.shutdown(wait_for_orphans=3)