# -*- coding: utf-8 -*-
'''
    :codeauthor: Pedro Algarvio (pedro@algarvio.me)


    tests.integration.states.match
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'''

# Import python libs
from __future__ import absolute_import, print_function, unicode_literals
import os

# Import Salt Testing libs
from tests.support.case import ModuleCase
from tests.support.paths import FILES
from tests.support.helpers import skip_if_not_root

# Import salt libs
import salt.utils.files
import salt.utils.stringutils

STATE_DIR = os.path.join(FILES, 'file', 'base')


class StateMatchTest(ModuleCase):
    '''
    Validate the file state
    '''

    @skip_if_not_root
    def test_issue_2167_ipcidr_no_AttributeError(self):
        subnets = self.run_function('network.subnets')
        self.assertTrue(len(subnets) > 0)
        top_filename = 'issue-2167-ipcidr-match.sls'
        top_file = os.path.join(STATE_DIR, top_filename)
        try:
            with salt.utils.files.fopen(top_file, 'w') as fp_:
                fp_.write(
                    salt.utils.stringutils.to_str(
                        'base:\n'
                        '  {0}:\n'
                        '    - match: ipcidr\n'
                        '    - test\n'.format(subnets[0])
                    )
                )
            ret = self.run_function('state.top', [top_filename])
            self.assertNotIn(
                'AttributeError: \'Matcher\' object has no attribute '
                '\'functions\'',
                ret
            )
        finally:
            os.remove(top_file)
