def test_create_success(self, mock_login, mock_scheduled_query, mock_post): """ Test .create() passes """ # simulate login mock_login.return_value = self.account_id mock_scheduled_query.return_value = { 'scheduled_query': { 'id': '00000000-0000-03a2-0000-000000000000' } } # Create the response mock_response = Mock(spec=requests.Response) mock_response.status_code = 201 mock_response.text = "Created" mock_response.ok = True mock_post.return_value = mock_response session = requests.session() alert = AnomalyAlert(self.username, self.password, session) name = 'Too few 404s' query = 'where(status=404) calculate(COUNT)' logs = [ '5d481b23-9c4d-4250-bfe8-be389a227f0b', ] trigger_config = AlertTriggerConfig( timeframe_value=7, timeframe_period='day', ) slack_url = 'https://hooks.slack.com/services' alert_config = SlackAlertConfig(slack_url) alert_reports = [ AlertReportConfig( report_count=4, report_period='day', alert_config=alert_config, ) ] # Call .create alert.create( name=name, query=query, scope_count=1, scope_unit='day', increase_positive=False, percentage_change=15, trigger_config=trigger_config, logs=logs, alert_reports=alert_reports ) headers = alert.default_headers.copy() headers.update({ 'Content-Type': 'application/json;charset=utf-8', 'Accept': 'application/json, text/plain, */*', 'Referer': 'https://logentries.com/app/{account_id}'.format(account_id=alert.account_id), 'X-CSRFToken': alert._get_csrf_token(), }) data = { 'tag': { 'actions': [ { 'enabled': True, 'min_report_count': 4, 'min_report_period': 'Day', 'targets': [{ 'type': 'slack', 'params_set': { 'url': slack_url } }], 'type': 'Alert', }, ], 'name': name[:30], 'scheduled_query_id': '00000000-0000-03a2-0000-000000000000', 'sources': [ {'id': '5d481b23-9c4d-4250-bfe8-be389a227f0b'} ], 'sub_type': 'AnomalyAlert', 'type': 'AlertNotify', 'timeframe_period': 'Day', 'timeframe_value': 7 } } mock_post.assert_called_once_with( alert.session, url='https://logentries.com/rest/{account_id}/api/tags'.format( account_id=alert.account_id ), headers=headers, data=json.dumps(data, sort_keys=True) ) mock_scheduled_query.assert_called_once_with( query=query, change='-15', scope_unit='day', scope_count=1, )