saltfactories.utils.functional

Salt functional testing support

class saltfactories.utils.functional.Loaders(opts)[source]

Bases: object

This class provides the required functionality for functional testing against the salt loaders

Parameters

opts (dict) – The options dictionary to load the salt loaders.

Example usage:

import salt.config
from saltfactories.utils.functional import Loaders


@pytest.fixture(scope="module")
def minion_opts():
    return salt.config.minion_config(None)


@pytest.fixture(scope="module")
def loaders(minion_opts):
    return Loaders(minion_opts)


@pytest.fixture(autouse=True)
def reset_loaders_state(loaders):
    try:
        # Run the tests
        yield
    finally:
        # Reset the loaders state
        loaders.reset_state()
property grains

The grains loaded by the salt loader

property utils

The utils loaded by the salt loader

property modules

The execution modules loaded by the salt loader

property serializers

The serializers loaded by the salt loader

property states

The state modules loaded by the salt loader

property pillar

The pillar loaded by the salt loader

class saltfactories.utils.functional.StateResult(raw)[source]

Bases: object

This class wraps a single salt state return into a more pythonic object in order to simplify assertions

Parameters

raw (dict) – A single salt state return result

Return type

None

def test_user_absent(loaders):
    ret = loaders.states.user.absent(name=random_string("account-", uppercase=False))
    assert ret.result is True
property run_num

The __run_num__ key on the full state return dictionary

property name

The name key on the full state return dictionary

property result

The result key on the full state return dictionary

property changes

The changes key on the full state return dictionary

property comment

The comment key on the full state return dictionary

property warnings

The warnings key on the full state return dictionary

class saltfactories.utils.functional.StateFunction(proxy_func, state_func)[source]

Bases: object

Simple wrapper around Salt’s state execution module functions which actually proxies the call through Salt’s state.single execution module

Return type

None

class saltfactories.utils.functional.MultiStateResult(raw)[source]

Bases: object

This class wraps multiple salt state returns, for example, running the state.sls execution module, into a more pythonic object in order to simplify assertions

Parameters

raw (dict,list) – The multiple salt state returns result, a dictionary on success or a list on failure

Return type

None

Example usage on the test suite:

def test_issue_1876_syntax_error(loaders, state_tree, tmp_path):
    testfile = tmp_path / "issue-1876.txt"
    sls_contents = """
    {}:
      file:
        - managed
        - source: salt://testfile

      file.append:
        - text: foo
    """.format(
        testfile
    )
    with pytest.helpers.temp_file("issue-1876.sls", sls_contents, state_tree):
        ret = loaders.modules.state.sls("issue-1876")
        assert ret.failed
        errmsg = (
            "ID '{}' in SLS 'issue-1876' contains multiple state declarations of the"
            " same type".format(testfile)
        )
        assert errmsg in ret.errors


def test_pydsl(loaders, state_tree, tmp_path):
    testfile = tmp_path / "testfile"
    sls_contents = """
    #!pydsl

    state("{}").file("touch")
    """.format(
        testfile
    )
    with pytest.helpers.temp_file("pydsl.sls", sls_contents, state_tree):
        ret = loaders.modules.state.sls("pydsl")
        for staterun in ret:
            assert staterun.result is True
        assert testfile.exists()
property failed

Return True or False if the multiple state run was not successful

property errors

Return the list of errors in case the multiple state run was not successful

class saltfactories.utils.functional.StateModuleFuncWrapper(func, wrapper)[source]

Bases: object

This class simply wraps a single or multiple state returns into a more pythonic object, StateResult or py:class:~saltfactories.utils.functional.MultiStateResult

Parameters
  • func (callable) – A salt loader function

  • wrapper (StateResult,MultiStateResult) – The wrapper to use for the return of the salt loader function’s return

Return type

None