# -*- coding: utf-8 -*- ''' :codeauthor: :email:`Rahul Handay ` ''' # Import Python Libs from __future__ import absolute_import # Import Salt Testing Libs from salttesting import TestCase, skipIf from salttesting.helpers import ensure_in_syspath from salttesting.mock import ( MagicMock, patch, NO_MOCK, NO_MOCK_REASON ) ensure_in_syspath('../../') # Import Salt Libs from salt.modules import win_path # Globals win_path.__salt__ = {} class MockWin32Gui(object): ''' Mock class for win32gui ''' def __init__(self): pass @staticmethod def SendMessageTimeout(*args): ''' Mock method for SendMessageTimeOut ''' return [args[0]] class MockWin32Con(object): ''' Mock class for win32con ''' HWND_BROADCAST = 1 WM_SETTINGCHANGE = 1 def __init__(self): pass win_path.win32gui = MockWin32Gui win_path.win32con = MockWin32Con @skipIf(NO_MOCK, NO_MOCK_REASON) class WinPathTestCase(TestCase): ''' Test cases for salt.modules.win_path ''' def test_rehash(self): ''' Test to rehash the Environment variables ''' self.assertTrue(win_path.rehash()) def test_get_path(self): ''' Test to Returns the system path ''' mock = MagicMock(return_value={'vdata': 'c:\\salt'}) with patch.dict(win_path.__salt__, {'reg.read_value': mock}): self.assertListEqual(win_path.get_path(), ['c:\\salt']) def test_exists(self): ''' Test to check if the directory is configured ''' mock = MagicMock(return_value='c:\\salt') with patch.object(win_path, 'get_path', mock): self.assertTrue(win_path.exists("c:\\salt")) def test_add(self): ''' Test to add the directory to the SYSTEM path ''' mock_get = MagicMock(return_value=['c:\\salt']) with patch.object(win_path, 'get_path', mock_get): mock_set = MagicMock(return_value=True) with patch.dict(win_path.__salt__, {'reg.set_value': mock_set}): mock_rehash = MagicMock(side_effect=[True, False]) with patch.object(win_path, 'rehash', mock_rehash): self.assertTrue(win_path.add("c:\\salt", 1)) self.assertFalse(win_path.add("c:\\salt", 1)) def test_remove(self): ''' Test to remove the directory from the SYSTEM path ''' mock_get = MagicMock(side_effect=[[1], ['c:\\salt'], ['c:\\salt']]) with patch.object(win_path, 'get_path', mock_get): self.assertTrue(win_path.remove("c:\\salt")) mock_set = MagicMock(side_effect=[True, False]) with patch.dict(win_path.__salt__, {'reg.set_value': mock_set}): mock_rehash = MagicMock(return_value="Salt") with patch.object(win_path, 'rehash', mock_rehash): self.assertEqual(win_path.remove("c:\\salt"), "Salt") self.assertFalse(win_path.remove("c:\\salt")) if __name__ == '__main__': from integration import run_tests run_tests(WinPathTestCase, needs_daemon=False)