def test_update(self): ''' Test for Execute the configured functions ''' with patch.dict(mine.__salt__, {'config.option': MagicMock(return_value={'A': 'B'}), 'data.update': MagicMock(return_value='A')}): with patch.dict(mine.__opts__, {'file_client': 'local', 'id': 'id'}): self.assertEqual(mine.update(True), 'A') with patch.object(mine, '_mine_send', return_value='A'): self.assertEqual(mine.update(True), 'A')
def test_update_local_specific(self): """ Tests the ``update``-function on the minion's local cache. Updates mine functions from kwargs only. """ manual_mine_functions = { "ip_addr": { "mine_function": "network.ip_addrs" }, "network.ip_addrs": [], "kernel": [ { "mine_function": "grains.get" }, "kernel", { "allow_tgt": "web*" }, ], "foo.bar": { "allow_tgt": "G@roles:webserver", "allow_tgt_type": "compound" }, } with patch.dict(mine.__opts__, { "file_client": "local", "id": "webserver" }), patch.dict( mine.__salt__, { "config.merge": MagicMock(return_value={}), "grains.get": lambda x: "Linux!!", "network.ip_addrs": MagicMock(return_value=self.ip_ret), "foo.bar": MagicMock(return_value=self.foo_ret), }, ): ret = mine.update(mine_functions=manual_mine_functions) self.assertEqual(ret, "FakeCache:StoreSuccess!") # Check if the mine entries have been stored properly in the FakeCache. self.assertEqual( self.cache.fetch("minions/webserver", "mine_cache"), { "ip_addr": self.ip_ret, "network.ip_addrs": self.ip_ret, "foo.bar": { salt.utils.mine.MINE_ITEM_ACL_DATA: self.foo_ret, salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, "allow_tgt": "G@roles:webserver", "allow_tgt_type": "compound", }, "kernel": { salt.utils.mine.MINE_ITEM_ACL_DATA: "Linux!!", salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, "allow_tgt": "web*", }, }, )
def test_update_master(self): ''' Tests whether the ``update``-function sends the correct data to the master. ''' config_mine_functions = { 'ip_addr': { 'mine_function': 'network.ip_addrs' }, 'network.ip_addrs': [], 'kernel': [{ 'mine_function': 'grains.get' }, 'kernel'], 'foo.bar': {}, } mock_load = { 'id': 'webserver', 'cmd': '_mine', 'data': { 'ip_addr': { salt.utils.mine.MINE_ITEM_ACL_DATA: '2001:db8::1:3', salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, }, 'network.ip_addrs': { salt.utils.mine.MINE_ITEM_ACL_DATA: '2001:db8::1:3', salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, }, 'foo.bar': { salt.utils.mine.MINE_ITEM_ACL_DATA: 'baz', salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, }, 'kernel': { salt.utils.mine.MINE_ITEM_ACL_DATA: 'Linux!', salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, }, }, 'clear': False, } with \ patch.object(mine, '_mine_send', MagicMock(side_effect=lambda x, y: x)),\ patch.dict(mine.__opts__, { 'file_client': 'remote', 'id': 'webserver', }), \ patch.dict(mine.__salt__, { 'config.merge': MagicMock(return_value=config_mine_functions), 'grains.get': lambda x: 'Linux!', 'network.ip_addrs': MagicMock(return_value='2001:db8::1:3'), 'foo.bar': MagicMock(return_value='baz'), }): # Verify the correct load self.assertEqual(mine.update(), mock_load)
def test_update(self): ''' Test for Execute the configured functions ''' with patch.dict( mine.__salt__, { 'config.option': MagicMock(return_value={'A': 'B'}), 'data.update': MagicMock(return_value='A') }): with patch.dict(mine.__opts__, { 'file_client': 'local', 'id': 'id' }): self.assertEqual(mine.update(True), 'A') with patch.object(mine, '_mine_send', return_value='A'): self.assertEqual(mine.update(True), 'A')
def test_update_local_specific(self): ''' Tests the ``update``-function on the minion's local cache. Updates mine functions from kwargs only. ''' manual_mine_functions = { 'ip_addr': { 'mine_function': 'network.ip_addrs' }, 'network.ip_addrs': [], 'kernel': [{ 'mine_function': 'grains.get' }, 'kernel', { 'allow_tgt': 'web*' }], 'foo.bar': { 'allow_tgt': 'G@roles:webserver', 'allow_tgt_type': 'compound' }, } with \ patch.dict(mine.__opts__, { 'file_client': 'local', 'id': 'webserver', }), \ patch.dict(mine.__salt__, { 'config.merge': MagicMock(return_value={}), 'grains.get': lambda x: 'Linux!!', 'network.ip_addrs': MagicMock(return_value=self.ip_ret), 'foo.bar': MagicMock(return_value=self.foo_ret), }): ret = mine.update(mine_functions=manual_mine_functions) self.assertEqual(ret, 'FakeCache:StoreSuccess!') # Check if the mine entries have been stored properly in the FakeCache. self.assertEqual( self.cache.fetch('minions/webserver', 'mine_cache'), { 'ip_addr': self.ip_ret, 'network.ip_addrs': self.ip_ret, 'foo.bar': { salt.utils.mine.MINE_ITEM_ACL_DATA: self.foo_ret, salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, 'allow_tgt': 'G@roles:webserver', 'allow_tgt_type': 'compound', }, 'kernel': { salt.utils.mine.MINE_ITEM_ACL_DATA: 'Linux!!', salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, 'allow_tgt': 'web*', }, })
def test_update_master(self): """ Tests whether the ``update``-function sends the correct data to the master. """ config_mine_functions = { "ip_addr": { "mine_function": "network.ip_addrs" }, "network.ip_addrs": [], "kernel": [{ "mine_function": "grains.get" }, "kernel"], "foo.bar": {}, } mock_load = { "id": "webserver", "cmd": "_mine", "data": { "ip_addr": self.ip_ret, "network.ip_addrs": self.ip_ret, "foo.bar": self.foo_ret, "kernel": self.kernel_ret, }, "clear": False, } with patch.object( mine, "_mine_send", MagicMock(side_effect=lambda x, y: x)), patch.dict( mine.__opts__, { "file_client": "remote", "id": "webserver" }), patch.dict( mine.__salt__, { "config.merge": MagicMock(return_value=config_mine_functions), "grains.get": lambda x: self.kernel_ret, "network.ip_addrs": MagicMock(return_value=self.ip_ret), "foo.bar": MagicMock(return_value=self.foo_ret), }, ): # Verify the correct load self.assertEqual(mine.update(), mock_load)
def test_update_master(self): ''' Tests whether the ``update``-function sends the correct data to the master. ''' config_mine_functions = { 'ip_addr': { 'mine_function': 'network.ip_addrs' }, 'network.ip_addrs': [], 'kernel': [{ 'mine_function': 'grains.get' }, 'kernel'], 'foo.bar': {}, } mock_load = { 'id': 'webserver', 'cmd': '_mine', 'data': { 'ip_addr': self.ip_ret, 'network.ip_addrs': self.ip_ret, 'foo.bar': self.foo_ret, 'kernel': self.kernel_ret, }, 'clear': False, } with \ patch.object(mine, '_mine_send', MagicMock(side_effect=lambda x, y: x)),\ patch.dict(mine.__opts__, { 'file_client': 'remote', 'id': 'webserver', }), \ patch.dict(mine.__salt__, { 'config.merge': MagicMock(return_value=config_mine_functions), 'grains.get': lambda x: self.kernel_ret, 'network.ip_addrs': MagicMock(return_value=self.ip_ret), 'foo.bar': MagicMock(return_value=self.foo_ret), }): # Verify the correct load self.assertEqual(mine.update(), mock_load)
def test_update_local_specific(mock_cache): """ Tests the ``update``-function on the minion's local cache. Updates mine functions from kwargs only. """ foo_ret = "baz" ip_ret = "2001:db8::1:3" manual_mine_functions = { "ip_addr": { "mine_function": "network.ip_addrs" }, "network.ip_addrs": [], "kernel": [ { "mine_function": "grains.get" }, "kernel", { "allow_tgt": "web*" }, ], "foo.bar": { "allow_tgt": "G@roles:webserver", "allow_tgt_type": "compound" }, } with patch.dict(mine.__opts__, { "file_client": "local", "id": "webserver" }), patch.dict( mine.__salt__, { "config.merge": MagicMock(return_value={}), "grains.get": lambda x: "Linux!!", "network.ip_addrs": MagicMock(return_value=ip_ret), "foo.bar": MagicMock(return_value=foo_ret), }, ): ret = mine.update(mine_functions=manual_mine_functions) assert ret == "FakeCache:StoreSuccess!" assert mock_cache.fetch("minions/webserver", "mine_cache") == { "ip_addr": ip_ret, "network.ip_addrs": ip_ret, "foo.bar": { salt.utils.mine.MINE_ITEM_ACL_DATA: foo_ret, salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, "allow_tgt": "G@roles:webserver", "allow_tgt_type": "compound", }, "kernel": { salt.utils.mine.MINE_ITEM_ACL_DATA: "Linux!!", salt.utils.mine.MINE_ITEM_ACL_ID: salt.utils.mine.MINE_ITEM_ACL_VERSION, "allow_tgt": "web*", }, }