Files
cachet-url-monitor/tests/test_scheduler.py
mtakaki 5be0217c00 #10 - Creating auxiliary client class to generate configuration class (#78)
* #10 - Creating auxiliary client class to generate configuration class based on cachet's component list.

* Updating the python version in codacy to reduce false positives

* Moving some of the cachet operations to the client class to clean up the configuration class and making better constants

* Refactoring status to have proper classes and adding more tests. Refactoring the requests tests to use requests-mock.

* Removing unused imports from test_scheduler

* Adding more tests and the ability to run the client from command line

* Updating README and client arg parsing

* Fixing broken unit tests
2020-01-18 13:55:07 -08:00

88 lines
2.6 KiB
Python

#!/usr/bin/env python
import sys
import unittest
import mock
sys.modules['schedule'] = mock.Mock()
from cachet_url_monitor.scheduler import Agent, Scheduler
class AgentTest(unittest.TestCase):
def setUp(self):
self.configuration = mock.Mock()
self.agent = Agent(self.configuration)
def test_init(self):
assert self.agent.configuration == self.configuration
def test_execute(self):
evaluate = self.configuration.evaluate
push_status = self.configuration.push_status
self.agent.execute()
evaluate.assert_called_once()
push_status.assert_not_called()
def test_start(self):
every = sys.modules['schedule'].every
self.configuration.endpoint = {'frequency': 5}
self.agent.start()
every.assert_called_with(5)
class SchedulerTest(unittest.TestCase):
@mock.patch('requests.get')
def setUp(self, mock_requests):
def get(url, headers):
get_return = mock.Mock()
get_return.ok = True
get_return.json = mock.Mock()
get_return.json.return_value = {'data': {'status': 1}}
return get_return
mock_requests.get = get
self.agent = mock.MagicMock()
self.scheduler = Scheduler(
{
'endpoints': [
{
'name': 'foo',
'url': 'http://localhost:8080/swagger',
'method': 'GET',
'expectation': [
{
'type': 'HTTP_STATUS',
'status_range': '200 - 300',
'incident': 'MAJOR',
}
],
'allowed_fails': 0,
'component_id': 1,
'action': ['CREATE_INCIDENT', 'UPDATE_STATUS'],
'public_incidents': True,
'latency_unit': 'ms',
'frequency': 30
}
],
'cachet': {
'api_url': 'https: // demo.cachethq.io / api / v1',
'token': 'my_token'
}
}, self.agent)
def test_init(self):
self.assertFalse(self.scheduler.stop)
def test_start(self):
# TODO(mtakaki|2016-05-01): We need a better way of testing this method.
# Leaving it as a placeholder.
self.scheduler.stop = True
self.scheduler.start()
self.agent.start.assert_called()