123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- # -*- coding: utf-8 -*-
- """
- :codeauthor: :email:`Jakub Sliva <jakub.sliva@ultimum.io>`
- """
- # Import Python Libs
- from __future__ import absolute_import, unicode_literals
- import salt.states.zabbix_valuemap as zabbix_valuemap
- # Import Salt Testing Libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import MagicMock, patch
- from tests.support.unit import TestCase
- INPUT_PARAMS = {
- "mappings": [
- {"newvalue": "OK", "value": "0h"},
- {"newvalue": "Failure", "value": "1"},
- ],
- "name": "Server HP Health",
- }
- EXISTING_OBJ = [
- {
- "valuemapid": "21",
- "name": "Server HP Health",
- "mappings": [
- {"newvalue": "OK", "value": "0h"},
- {"newvalue": "Failure", "value": "1"},
- ],
- }
- ]
- EXISTING_OBJ_DIFF = {
- "valuemapid": "21",
- "name": "Server HP Health",
- "mappings": [
- {"newvalue": "OK", "value": "0h"},
- {"newvalue": "Failure", "value": "1"},
- {"newvalue": "some", "value": "2"},
- ],
- }
- DIFF_PARAMS = {
- "valuemapid": "21",
- "mappings": [
- {"newvalue": "OK", "value": "0h"},
- {"newvalue": "Failure", "value": "1"},
- ],
- }
- class ZabbixActionTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test cases for salt.modules.zabbix
- """
- def setup_loader_modules(self):
- return {zabbix_valuemap: {}}
- def test_present_create(self):
- """
- Test to ensure that named value map is created
- """
- name = "Server HP Health"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- def side_effect_run_query(*args):
- """
- Differentiate between __salt__ exec module function calls with different parameters.
- """
- if args[0] == "valuemap.get":
- return False
- elif args[0] == "valuemap.create":
- return True
- with patch.dict(zabbix_valuemap.__opts__, {"test": False}):
- with patch.dict(
- zabbix_valuemap.__salt__,
- {
- "zabbix.get_zabbix_id_mapper": MagicMock(
- return_value={"valuemap": "valuemapid"}
- ),
- "zabbix.substitute_params": MagicMock(
- side_effect=[INPUT_PARAMS, False]
- ),
- "zabbix.run_query": MagicMock(side_effect=side_effect_run_query),
- "zabbix.compare_params": MagicMock(return_value={}),
- },
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Value map "{0}" created.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Value map "{0}" did not exist.'.format(name),
- "new": 'Zabbix Value map "{0}" created according definition.'.format(
- name
- ),
- }
- }
- self.assertDictEqual(zabbix_valuemap.present(name, {}), ret)
- def test_present_exists(self):
- """
- Test to ensure that named value map is present and not changed
- """
- name = "Server HP Health"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- with patch.dict(zabbix_valuemap.__opts__, {"test": False}):
- with patch.dict(
- zabbix_valuemap.__salt__,
- {
- "zabbix.get_zabbix_id_mapper": MagicMock(
- return_value={"valuemap": "valuemapid"}
- ),
- "zabbix.substitute_params": MagicMock(
- side_effect=[INPUT_PARAMS, EXISTING_OBJ]
- ),
- "zabbix.run_query": MagicMock(
- return_value=["length of result is 1"]
- ),
- "zabbix.compare_params": MagicMock(return_value={}),
- },
- ):
- ret["result"] = True
- ret[
- "comment"
- ] = 'Zabbix Value map "{0}" already exists and corresponds to a definition.'.format(
- name
- )
- self.assertDictEqual(zabbix_valuemap.present(name, {}), ret)
- def test_present_update(self):
- """
- Test to ensure that named value map is present but must be updated
- """
- name = "Server HP Health"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- def side_effect_run_query(*args):
- """
- Differentiate between __salt__ exec module function calls with different parameters.
- """
- if args[0] == "valuemap.get":
- return ["length of result is 1 = valuemap exists"]
- elif args[0] == "valuemap.update":
- return DIFF_PARAMS
- with patch.dict(zabbix_valuemap.__opts__, {"test": False}):
- with patch.dict(
- zabbix_valuemap.__salt__,
- {
- "zabbix.get_zabbix_id_mapper": MagicMock(
- return_value={"valuemap": "valuemapid"}
- ),
- "zabbix.substitute_params": MagicMock(
- side_effect=[INPUT_PARAMS, EXISTING_OBJ_DIFF]
- ),
- "zabbix.run_query": MagicMock(side_effect=side_effect_run_query),
- "zabbix.compare_params": MagicMock(return_value=DIFF_PARAMS),
- },
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Value map "{0}" updated.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Value map "{0}" differed '
- "in following parameters: {1}".format(name, DIFF_PARAMS),
- "new": 'Zabbix Value map "{0}" fixed.'.format(name),
- }
- }
- self.assertDictEqual(zabbix_valuemap.present(name, {}), ret)
- def test_absent_test_mode(self):
- """
- Test to ensure that named value map is absent in test mode
- """
- name = "Server HP Health"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- with patch.dict(zabbix_valuemap.__opts__, {"test": True}):
- with patch.dict(
- zabbix_valuemap.__salt__,
- {"zabbix.get_object_id_by_params": MagicMock(return_value=11)},
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Value map "{0}" would be deleted.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Value map "{0}" exists.'.format(name),
- "new": 'Zabbix Value map "{0}" would be deleted.'.format(name),
- }
- }
- self.assertDictEqual(zabbix_valuemap.absent(name), ret)
- def test_absent(self):
- """
- Test to ensure that named value map is absent
- """
- name = "Server HP Health"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- with patch.dict(zabbix_valuemap.__opts__, {"test": False}):
- with patch.dict(
- zabbix_valuemap.__salt__,
- {"zabbix.get_object_id_by_params": MagicMock(return_value=False)},
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Value map "{0}" does not exist.'.format(name)
- self.assertDictEqual(zabbix_valuemap.absent(name), ret)
- with patch.dict(
- zabbix_valuemap.__salt__,
- {"zabbix.get_object_id_by_params": MagicMock(return_value=11)},
- ):
- with patch.dict(
- zabbix_valuemap.__salt__,
- {"zabbix.run_query": MagicMock(return_value=True)},
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Value map "{0}" deleted.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Value map "{0}" existed.'.format(name),
- "new": 'Zabbix Value map "{0}" deleted.'.format(name),
- }
- }
- self.assertDictEqual(zabbix_valuemap.absent(name), ret)
|