mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
593d302f0b
The test has been disabled because it started to fail after an update of the Datadog API client. The issue itself (id cannot be set in constructor) and other issues (module name, additional attribute in API responses) are now fixed. The test is now working fine again. Fixes #3219.
242 lines
8.9 KiB
Python
242 lines
8.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright (c) Ansible project
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
from __future__ import (absolute_import, division, print_function)
|
|
|
|
__metaclass__ = type
|
|
|
|
from ansible_collections.community.general.plugins.modules import datadog_downtime
|
|
from ansible_collections.community.general.tests.unit.compat.mock import MagicMock, patch
|
|
from ansible_collections.community.general.tests.unit.plugins.modules.utils import (
|
|
AnsibleExitJson, AnsibleFailJson, ModuleTestCase, set_module_args
|
|
)
|
|
|
|
from pytest import importorskip
|
|
|
|
# Skip this test if python 2 so datadog_api_client cannot be installed
|
|
datadog_api_client = importorskip("datadog_api_client")
|
|
Downtime = datadog_api_client.v1.model.downtime.Downtime
|
|
DowntimeRecurrence = datadog_api_client.v1.model.downtime_recurrence.DowntimeRecurrence
|
|
|
|
|
|
class TestDatadogDowntime(ModuleTestCase):
|
|
|
|
def setUp(self):
|
|
super(TestDatadogDowntime, self).setUp()
|
|
self.module = datadog_downtime
|
|
|
|
def tearDown(self):
|
|
super(TestDatadogDowntime, self).tearDown()
|
|
|
|
def test_without_required_parameters(self):
|
|
"""Failure must occurs when all parameters are missing"""
|
|
with self.assertRaises(AnsibleFailJson):
|
|
set_module_args({})
|
|
self.module.main()
|
|
|
|
@patch("ansible_collections.community.general.plugins.modules.datadog_downtime.DowntimesApi")
|
|
def test_create_downtime_when_no_id(self, downtimes_api_mock):
|
|
set_module_args({
|
|
"monitor_tags": ["foo:bar"],
|
|
"scope": ["*"],
|
|
"monitor_id": 12345,
|
|
"downtime_message": "Message",
|
|
"start": 1111,
|
|
"end": 2222,
|
|
"timezone": "UTC",
|
|
"rrule": "rrule",
|
|
"api_key": "an_api_key",
|
|
"app_key": "an_app_key",
|
|
})
|
|
|
|
downtime = Downtime()
|
|
downtime.monitor_tags = ["foo:bar"]
|
|
downtime.scope = ["*"]
|
|
downtime.monitor_id = 12345
|
|
downtime.message = "Message"
|
|
downtime.start = 1111
|
|
downtime.end = 2222
|
|
downtime.timezone = "UTC"
|
|
downtime.recurrence = DowntimeRecurrence(
|
|
rrule="rrule",
|
|
type="rrule"
|
|
)
|
|
|
|
create_downtime_mock = MagicMock(return_value=self.__downtime_with_id(12345))
|
|
downtimes_api_mock.return_value = MagicMock(create_downtime=create_downtime_mock)
|
|
with self.assertRaises(AnsibleExitJson) as result:
|
|
self.module.main()
|
|
self.assertTrue(result.exception.args[0]['changed'])
|
|
self.assertEqual(result.exception.args[0]['downtime']['id'], 12345)
|
|
create_downtime_mock.assert_called_once_with(downtime)
|
|
|
|
@patch("ansible_collections.community.general.plugins.modules.datadog_downtime.DowntimesApi")
|
|
def test_create_downtime_when_id_and_disabled(self, downtimes_api_mock):
|
|
set_module_args({
|
|
"id": 1212,
|
|
"monitor_tags": ["foo:bar"],
|
|
"scope": ["*"],
|
|
"monitor_id": 12345,
|
|
"downtime_message": "Message",
|
|
"start": 1111,
|
|
"end": 2222,
|
|
"timezone": "UTC",
|
|
"rrule": "rrule",
|
|
"api_key": "an_api_key",
|
|
"app_key": "an_app_key",
|
|
})
|
|
|
|
downtime = Downtime()
|
|
downtime.monitor_tags = ["foo:bar"]
|
|
downtime.scope = ["*"]
|
|
downtime.monitor_id = 12345
|
|
downtime.message = "Message"
|
|
downtime.start = 1111
|
|
downtime.end = 2222
|
|
downtime.timezone = "UTC"
|
|
downtime.recurrence = DowntimeRecurrence(
|
|
rrule="rrule",
|
|
type="rrule"
|
|
)
|
|
|
|
disabled_downtime = Downtime()
|
|
disabled_downtime.disabled = True
|
|
disabled_downtime.id = 1212
|
|
|
|
create_downtime_mock = MagicMock(return_value=self.__downtime_with_id(12345))
|
|
get_downtime_mock = MagicMock(return_value=disabled_downtime)
|
|
downtimes_api_mock.return_value = MagicMock(
|
|
create_downtime=create_downtime_mock, get_downtime=get_downtime_mock
|
|
)
|
|
with self.assertRaises(AnsibleExitJson) as result:
|
|
self.module.main()
|
|
self.assertTrue(result.exception.args[0]['changed'])
|
|
self.assertEqual(result.exception.args[0]['downtime']['id'], 12345)
|
|
create_downtime_mock.assert_called_once_with(downtime)
|
|
get_downtime_mock.assert_called_once_with(1212)
|
|
|
|
@patch("ansible_collections.community.general.plugins.modules.datadog_downtime.DowntimesApi")
|
|
def test_update_downtime_when_not_disabled(self, downtimes_api_mock):
|
|
set_module_args({
|
|
"id": 1212,
|
|
"monitor_tags": ["foo:bar"],
|
|
"scope": ["*"],
|
|
"monitor_id": 12345,
|
|
"downtime_message": "Message",
|
|
"start": 1111,
|
|
"end": 2222,
|
|
"timezone": "UTC",
|
|
"rrule": "rrule",
|
|
"api_key": "an_api_key",
|
|
"app_key": "an_app_key",
|
|
})
|
|
|
|
downtime = Downtime()
|
|
downtime.monitor_tags = ["foo:bar"]
|
|
downtime.scope = ["*"]
|
|
downtime.monitor_id = 12345
|
|
downtime.message = "Message"
|
|
downtime.start = 1111
|
|
downtime.end = 2222
|
|
downtime.timezone = "UTC"
|
|
downtime.recurrence = DowntimeRecurrence(
|
|
rrule="rrule",
|
|
type="rrule"
|
|
)
|
|
|
|
enabled_downtime = Downtime()
|
|
enabled_downtime.disabled = False
|
|
enabled_downtime.id = 1212
|
|
|
|
update_downtime_mock = MagicMock(return_value=self.__downtime_with_id(1212))
|
|
get_downtime_mock = MagicMock(return_value=enabled_downtime)
|
|
downtimes_api_mock.return_value = MagicMock(
|
|
update_downtime=update_downtime_mock, get_downtime=get_downtime_mock
|
|
)
|
|
with self.assertRaises(AnsibleExitJson) as result:
|
|
self.module.main()
|
|
self.assertTrue(result.exception.args[0]['changed'])
|
|
self.assertEqual(result.exception.args[0]['downtime']['id'], 1212)
|
|
update_downtime_mock.assert_called_once_with(1212, downtime)
|
|
get_downtime_mock.assert_called_once_with(1212)
|
|
|
|
@patch("ansible_collections.community.general.plugins.modules.datadog_downtime.DowntimesApi")
|
|
def test_update_downtime_no_change(self, downtimes_api_mock):
|
|
set_module_args({
|
|
"id": 1212,
|
|
"monitor_tags": ["foo:bar"],
|
|
"scope": ["*"],
|
|
"monitor_id": 12345,
|
|
"downtime_message": "Message",
|
|
"start": 1111,
|
|
"end": 2222,
|
|
"timezone": "UTC",
|
|
"rrule": "rrule",
|
|
"api_key": "an_api_key",
|
|
"app_key": "an_app_key",
|
|
})
|
|
|
|
downtime = Downtime()
|
|
downtime.monitor_tags = ["foo:bar"]
|
|
downtime.scope = ["*"]
|
|
downtime.monitor_id = 12345
|
|
downtime.message = "Message"
|
|
downtime.start = 1111
|
|
downtime.end = 2222
|
|
downtime.timezone = "UTC"
|
|
downtime.recurrence = DowntimeRecurrence(
|
|
rrule="rrule",
|
|
type="rrule"
|
|
)
|
|
|
|
downtime_get = Downtime()
|
|
downtime_get.id = 1212
|
|
downtime_get.disabled = False
|
|
downtime_get.monitor_tags = ["foo:bar"]
|
|
downtime_get.scope = ["*"]
|
|
downtime_get.monitor_id = 12345
|
|
downtime_get.message = "Message"
|
|
downtime_get.start = 1111
|
|
downtime_get.end = 2222
|
|
downtime_get.timezone = "UTC"
|
|
downtime_get.recurrence = DowntimeRecurrence(
|
|
rrule="rrule"
|
|
)
|
|
|
|
update_downtime_mock = MagicMock(return_value=downtime_get)
|
|
get_downtime_mock = MagicMock(return_value=downtime_get)
|
|
downtimes_api_mock.return_value = MagicMock(
|
|
update_downtime=update_downtime_mock, get_downtime=get_downtime_mock
|
|
)
|
|
with self.assertRaises(AnsibleExitJson) as result:
|
|
self.module.main()
|
|
self.assertFalse(result.exception.args[0]['changed'])
|
|
self.assertEqual(result.exception.args[0]['downtime']['id'], 1212)
|
|
update_downtime_mock.assert_called_once_with(1212, downtime)
|
|
get_downtime_mock.assert_called_once_with(1212)
|
|
|
|
@patch("ansible_collections.community.general.plugins.modules.datadog_downtime.DowntimesApi")
|
|
def test_delete_downtime(self, downtimes_api_mock):
|
|
set_module_args({
|
|
"id": 1212,
|
|
"state": "absent",
|
|
"api_key": "an_api_key",
|
|
"app_key": "an_app_key",
|
|
})
|
|
|
|
cancel_downtime_mock = MagicMock()
|
|
downtimes_api_mock.return_value = MagicMock(
|
|
get_downtime=self.__downtime_with_id,
|
|
cancel_downtime=cancel_downtime_mock
|
|
)
|
|
with self.assertRaises(AnsibleExitJson) as result:
|
|
self.module.main()
|
|
self.assertTrue(result.exception.args[0]['changed'])
|
|
cancel_downtime_mock.assert_called_once_with(1212)
|
|
|
|
def __downtime_with_id(self, id):
|
|
downtime = Downtime()
|
|
downtime.id = id
|
|
return downtime
|