123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290 |
- # -*- 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_action as zabbix_action
- # 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 = {
- "status": "0",
- "filter": {
- "evaltype": "2",
- "conditions": [{"operator": "2", "conditiontype": "24", "value": "database"}],
- },
- "eventsource": "2",
- "name": "Auto registration Databases",
- "operations": [{"opgroup": [{"groupid": "6"}], "operationtype": "4"}],
- }
- EXISTING_OBJ = [
- {
- "status": "0",
- "operations": [
- {
- "operationtype": "4",
- "esc_period": "0",
- "evaltype": "0",
- "opconditions": [],
- "esc_step_to": "1",
- "actionid": "28",
- "esc_step_from": "1",
- "opgroup": [{"groupid": "6", "operationid": "92"}],
- "operationid": "92",
- }
- ],
- "def_shortdata": "",
- "name": "Auto registration Databases",
- "esc_period": "0",
- "def_longdata": "",
- "filter": {
- "formula": "",
- "evaltype": "2",
- "conditions": [
- {
- "operator": "2",
- "conditiontype": "24",
- "formulaid": "A",
- "value": "database",
- }
- ],
- "eval_formula": "A",
- },
- "eventsource": "2",
- "actionid": "28",
- "r_shortdata": "",
- "r_longdata": "",
- "recovery_msg": "0",
- }
- ]
- EXISTING_OBJ_DIFF = {
- "status": "0",
- "operations": [
- {
- "operationtype": "4",
- "esc_period": "0",
- "evaltype": "0",
- "opconditions": [],
- "esc_step_to": "1",
- "actionid": "28",
- "esc_step_from": "1",
- "opgroup": [{"groupid": "6", "operationid": "92"}],
- "operationid": "92",
- }
- ],
- "def_shortdata": "",
- "name": "Auto registration Databases",
- "esc_period": "0",
- "def_longdata": "",
- "filter": {
- "formula": "",
- "evaltype": "2",
- "conditions": [
- {
- "operator": "2",
- "conditiontype": "24",
- "formulaid": "A",
- "value": "SOME OTHER VALUE",
- }
- ],
- "eval_formula": "A",
- },
- "eventsource": "2",
- "actionid": "28",
- "r_shortdata": "",
- "r_longdata": "",
- "recovery_msg": "0",
- }
- DIFF_PARAMS = {
- "filter": {
- "evaltype": "2",
- "conditions": [{"operator": "2", "conditiontype": "24", "value": "virtual"}],
- },
- "actionid": "28",
- }
- class ZabbixActionTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test cases for salt.modules.zabbix
- """
- def setup_loader_modules(self):
- return {zabbix_action: {}}
- def test_present_create(self):
- """
- Test to ensure that named action is created
- """
- name = "Auto registration Databases"
- 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] == "action.get":
- return False
- elif args[0] == "action.create":
- return True
- with patch.dict(zabbix_action.__opts__, {"test": False}):
- with patch.dict(
- zabbix_action.__salt__,
- {
- "zabbix.get_zabbix_id_mapper": MagicMock(
- return_value={"action": "actionid"}
- ),
- "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 Action "{0}" created.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Action "{0}" did not exist.'.format(name),
- "new": 'Zabbix Action "{0}" created according definition.'.format(
- name
- ),
- }
- }
- self.assertDictEqual(zabbix_action.present(name, {}), ret)
- def test_present_exists(self):
- """
- Test to ensure that named action is present and not changed
- """
- name = "Auto registration Databases"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- with patch.dict(zabbix_action.__opts__, {"test": False}):
- with patch.dict(
- zabbix_action.__salt__,
- {
- "zabbix.get_zabbix_id_mapper": MagicMock(
- return_value={"action": "actionid"}
- ),
- "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 Action "{0}" already exists and corresponds to a definition.'.format(
- name
- )
- self.assertDictEqual(zabbix_action.present(name, {}), ret)
- def test_present_update(self):
- """
- Test to ensure that named action is present but must be updated
- """
- name = "Auto registration Databases"
- 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] == "action.get":
- return ["length of result is 1 = action exists"]
- elif args[0] == "action.update":
- return DIFF_PARAMS
- with patch.dict(zabbix_action.__opts__, {"test": False}):
- with patch.dict(
- zabbix_action.__salt__,
- {
- "zabbix.get_zabbix_id_mapper": MagicMock(
- return_value={"action": "actionid"}
- ),
- "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 Action "{0}" updated.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Action "{0}" differed '
- "in following parameters: {1}".format(name, DIFF_PARAMS),
- "new": 'Zabbix Action "{0}" fixed.'.format(name),
- }
- }
- self.assertDictEqual(zabbix_action.present(name, {}), ret)
- def test_absent_test_mode(self):
- """
- Test to ensure that named action is absent in test mode
- """
- name = "Auto registration Databases"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- with patch.dict(zabbix_action.__opts__, {"test": True}):
- with patch.dict(
- zabbix_action.__salt__,
- {"zabbix.get_object_id_by_params": MagicMock(return_value=11)},
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Action "{0}" would be deleted.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Action "{0}" exists.'.format(name),
- "new": 'Zabbix Action "{0}" would be deleted.'.format(name),
- }
- }
- self.assertDictEqual(zabbix_action.absent(name), ret)
- def test_absent(self):
- """
- Test to ensure that named action is absent
- """
- name = "Auto registration Databases"
- ret = {"name": name, "result": False, "comment": "", "changes": {}}
- with patch.dict(zabbix_action.__opts__, {"test": False}):
- with patch.dict(
- zabbix_action.__salt__,
- {"zabbix.get_object_id_by_params": MagicMock(return_value=False)},
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Action "{0}" does not exist.'.format(name)
- self.assertDictEqual(zabbix_action.absent(name), ret)
- with patch.dict(
- zabbix_action.__salt__,
- {"zabbix.get_object_id_by_params": MagicMock(return_value=11)},
- ):
- with patch.dict(
- zabbix_action.__salt__,
- {"zabbix.run_query": MagicMock(return_value=True)},
- ):
- ret["result"] = True
- ret["comment"] = 'Zabbix Action "{0}" deleted.'.format(name)
- ret["changes"] = {
- name: {
- "old": 'Zabbix Action "{0}" existed.'.format(name),
- "new": 'Zabbix Action "{0}" deleted.'.format(name),
- }
- }
- self.assertDictEqual(zabbix_action.absent(name), ret)
|