2016-06-03 20:47:23 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
'''
|
2018-05-28 21:13:12 +00:00
|
|
|
:codeauthor: Thayne Harbaugh (tharbaug@adobe.com)
|
2016-06-03 20:47:23 +00:00
|
|
|
|
|
|
|
tests.integration.shell.proxy
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
'''
|
|
|
|
|
|
|
|
# Import python libs
|
2017-12-15 03:56:49 +00:00
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
2016-06-03 20:47:23 +00:00
|
|
|
import logging
|
|
|
|
|
2017-02-27 15:59:04 +00:00
|
|
|
# Import salt tests libs
|
|
|
|
import tests.integration.utils
|
|
|
|
from tests.integration.utils import testprogram
|
2016-06-03 20:47:23 +00:00
|
|
|
|
|
|
|
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(
|
2016-07-29 17:57:54 +00:00
|
|
|
args=[
|
|
|
|
'--config-dir', proxy.abs_path(proxy.config_dir), # Needed due to verbatim_args=True
|
|
|
|
'-d',
|
|
|
|
],
|
2016-06-03 20:47:23 +00:00
|
|
|
verbatim_args=True, # prevents --proxyid from being added automatically
|
|
|
|
catch_stderr=True,
|
|
|
|
with_retcode=True,
|
2016-09-06 22:29:26 +00:00
|
|
|
# The proxy minion had a bug where it would loop forever
|
|
|
|
# without daemonizing - protect that with a timeout.
|
|
|
|
timeout=60,
|
2016-06-03 20:47:23 +00:00
|
|
|
)
|
2017-06-08 05:28:21 +00:00
|
|
|
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()
|
2016-06-03 20:47:23 +00:00
|
|
|
|
|
|
|
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',
|
2016-09-06 22:29:26 +00:00
|
|
|
config_base={'user': 'some_unknown_user_xyz'},
|
2016-06-03 20:47:23 +00:00
|
|
|
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,
|
|
|
|
)
|
2017-06-08 05:28:21 +00:00
|
|
|
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()
|
2016-06-03 20:47:23 +00:00
|
|
|
|
|
|
|
# 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,
|
|
|
|
)
|
2017-06-08 05:28:21 +00:00
|
|
|
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()
|
2016-06-03 20:47:23 +00:00
|
|
|
|
|
|
|
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,
|
|
|
|
)
|
2017-06-08 05:28:21 +00:00
|
|
|
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)
|