예제 #1
0
    def test_set_webconfiguration_settings(self, mock_log):
        # Setup
        name = "IIS"
        setting = {
            "name": "Collection[{yaml:\n\tdata}]",
            "filter":
            "system.webServer / security / authentication / anonymousAuthentication",
            "value": [],
        }
        settings = [setting]

        # Execute
        with patch.dict(win_iis.__salt__), patch(
                "salt.modules.win_iis._prepare_settings",
                MagicMock(return_value=settings)), patch(
                    "salt.modules.win_iis._srvmgr",
                    MagicMock(return_value={
                        "retcode": 0,
                        "stdout": "{}"
                    }),
                ), patch(
                    "salt.modules.win_iis.get_webconfiguration_settings",
                    MagicMock(side_effect=[[], settings]),
                ):
            ret = win_iis.set_webconfiguration_settings(name,
                                                        settings=settings)

            # Verify
            self.assertEqual(ret, True)
            mock_log.debug.assert_called_with(
                "Settings configured successfully: %s", settings)
예제 #2
0
    def test_set_webconfiguration_settings(self, mock_log):
        # Setup
        name = 'IIS'
        setting = {
            'name': 'Collection[{yaml:\n\tdata}]',
            'filter':
            'system.webServer / security / authentication / anonymousAuthentication',
            'value': []
        }
        settings = [setting]

        # Execute
        with patch.dict(win_iis.__salt__), \
             patch('salt.modules.win_iis._prepare_settings',
                   MagicMock(return_value=settings)), \
             patch('salt.modules.win_iis._srvmgr',
                   MagicMock(return_value={'retcode': 0, 'stdout': '{}'})), \
             patch('salt.modules.win_iis.get_webconfiguration_settings',
                   MagicMock(side_effect=[[], settings])):
            ret = win_iis.set_webconfiguration_settings(name,
                                                        settings=settings)

            # Verify
            self.assertEqual(ret, True)
            mock_log.debug.assert_called_with(
                'Settings configured successfully: %s', settings)
예제 #3
0
    def test_set_webconfiguration_settings_fail(self):
        settings = [{
            "name": "enabled",
            "filter":
            "system.webServer/security/authentication/anonymousAuthentication",
            "value": False,
        }]

        current_settings = [{
            "name": "enabled",
            "filter":
            "system.webServer/security/authentication/anonymousAuthentication",
            "value": True,
        }]

        new_settings = [{
            "name": "enabled",
            "filter":
            "system.webServer/security/authentication/anonymousAuthentication",
            "value": True,
        }]

        ps_cmd = [
            "Set-WebConfigurationProperty",
            "-PSPath",
            "'salt'",
            "-Filter",
            "'system.webServer/security/authentication/anonymousAuthentication'",
            "-Name",
            "'enabled'",
            "-Value",
            "'False';",
        ]

        with patch.object(
                win_iis,
                "get_webconfiguration_settings",
                side_effect=[current_settings, new_settings],
        ) as get_webconfiguration_settings:
            with patch.object(win_iis, "_srvmgr", return_value={"retcode":
                                                                0}) as _srvmgr:
                ret = win_iis.set_webconfiguration_settings("salt", settings)

                self.assertEqual(get_webconfiguration_settings.call_count, 2)
                self.assertEqual(
                    get_webconfiguration_settings.mock_calls[0],
                    call(name="salt", settings=settings),
                )
                self.assertEqual(
                    get_webconfiguration_settings.mock_calls[1],
                    call(name="salt", settings=settings),
                )

                _srvmgr.assert_called_once_with(ps_cmd)

                self.assertFalse(ret)
예제 #4
0
    def test_set_webconfiguration_settings_fail(self):
        settings = [{'name': 'enabled',
                     'filter': 'system.webServer/security/authentication/anonymousAuthentication',
                     'value': False}]

        current_settings = [{'name': 'enabled',
                             'filter': 'system.webServer/security/authentication/anonymousAuthentication',
                             'value': True}]

        new_settings = [{'name': 'enabled',
                         'filter': 'system.webServer/security/authentication/anonymousAuthentication',
                         'value': True}]

        ps_cmd = ['Set-WebConfigurationProperty',
                  '-PSPath',
                  "'salt'",
                  '-Filter',
                  "'system.webServer/security/authentication/anonymousAuthentication'",
                  '-Name',
                  "'enabled'",
                  '-Location',
                  "''",
                  '-Value',
                  "'False';"]

        with patch.object(win_iis, 'get_webconfiguration_settings', side_effect=[current_settings, new_settings]) as get_webconfiguration_settings:
            with patch.object(win_iis, '_srvmgr', return_value={'retcode': 0}) as _srvmgr:
                ret = win_iis.set_webconfiguration_settings('salt', settings, '')

                self.assertEqual(get_webconfiguration_settings.call_count, 2)
                self.assertEqual(get_webconfiguration_settings.mock_calls[0], call(name='salt',
                                                                                   settings=settings,
                                                                                   location=''))
                self.assertEqual(get_webconfiguration_settings.mock_calls[1], call(name='salt',
                                                                                   settings=settings,
                                                                                   location=''))

                _srvmgr.assert_called_once_with(ps_cmd)

                self.assertFalse(ret)
예제 #5
0
    def test_set_webconfiguration_settings_failed(self, mock_log):
        # Setup
        name = "IIS"
        setting = {
            "name":
            "Collection[{yaml:\n\tdata}]",
            "filter":
            ("system.webServer / security / authentication / anonymousAuthentication"
             ),
            "value": [],
        }
        settings = [setting]

        # Execute
        with patch.dict(win_iis.__salt__), patch(
                "salt.modules.win_iis._prepare_settings",
                MagicMock(return_value=settings)), patch(
                    "salt.modules.win_iis._srvmgr",
                    MagicMock(return_value={
                        "retcode": 0,
                        "stdout": "{}"
                    }),
                ), patch(
                    "salt.modules.win_iis.get_webconfiguration_settings",
                    MagicMock(side_effect=[[], [{
                        "value": "unexpected_change!"
                    }]]),
                ):

            ret = win_iis.set_webconfiguration_settings(name,
                                                        settings=settings)

            # Verify
            self.assertEqual(ret, False)
            mock_log.error.assert_called_with("Failed to change settings: %s",
                                              settings)
예제 #6
0
 def test_set_webconfiguration_settings_no_settings(self):
     self.assertEqual(win_iis.set_webconfiguration_settings("salt", {}),
                      False)
예제 #7
0
 def test_set_webconfiguration_settings_empty(self, mock_log):
     ret = win_iis.set_webconfiguration_settings("name", settings=[])
     mock_log.warning.assert_called_once_with("No settings provided")
     self.assertEqual(ret, False)