scullery/tests/03_test_salt.py

60 lines
2.5 KiB
Python
Raw Normal View History

"""
Copyright 2023, Georg Pfuetzenreuter
Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence").
You may not use this work except in compliance with the Licence.
An English copy of the Licence is shipped in a file called LICENSE along with this applications source code.
You may obtain copies of the Licence in any of the official languages at https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12.
---
Testing functions for Scullery - a SaltStack testing tool.
"""
import pytest
@pytest.mark.parametrize('config', ['complete'], indirect=True)
@pytest.mark.parametrize('suite', [
'one_minion_salt',
'two_minions_one_master_salt',
])
def test_salt(script_runner, script, config, suite):
cmd = (script, '--config', config, '--suite', suite)
result = script_runner.run(*cmd, '--debug', '--env', '--test')
# not possible until we have a way to apply without invoking tests
# assert result.success
assert 'Comment: File /srv/hello_world.txt updated' in result.stderr
assert 'Succeeded: 1 (changed=1)' in result.stderr
assert 'DEBUG - main_interactive: state.apply requested' in result.stderr
assert script_runner.run(*cmd, '--stop')
@pytest.mark.parametrize('config', ['complete'], indirect=True)
@pytest.mark.parametrize('suite,count', [
('one_minion_salt', 0),
('two_minions_one_master_salt', 1)
])
def test_salt_test(script_runner, script, config, suite, count):
cmd = (script, '--config', config, '--suite', suite)
result = script_runner.run(*cmd, '--debug', '--env', '--test')
assert result.success
for message in [
'Comment: File /srv/hello_world.txt updated',
'Succeeded: 1 (changed=1)',
'DEBUG - main_interactive: state.apply requested',
'INFO - main_interactive: Initiating tests ...',
'DEBUG - runtests: Test result is 0',
'DEBUG - runtests: Test succeeded'
]:
assert message in result.stderr
assert not any(term in result.stderr for term in [
'FAILED', 'WARNING - runtests: Tests failed',
'DEBUG - runtests: Test result is 1', 'AssertionError'
])
if count > 0:
minions = [0, 1]
else:
minions = [0]
for m in minions:
assert 'test_hello_world_content[paramiko://scullery-minion%i] PASSED' % m in result.stdout
assert script_runner.run(*cmd, '--stop')