def test_list_tags_passes(self, mock_login, mock_get):
        """
        Test .list_tags() passes
        """
        mock_login.return_value = self.account_id

        mock_get.return_value = {
            'tags': [
                {'id': 'f1472b67-0a32-448a-9593-e7c4e90c261f'}
            ]
        }

        alert = InactivityAlert(self.username, self.password)

        response = alert.list_tags()

        self.assertEqual(
            response,
            [
                {'id': 'f1472b67-0a32-448a-9593-e7c4e90c261f'}
            ]
        )

        mock_get.assert_called_once_with(
            url='https://logentries.com/rest/{account_id}/api/tags/'.format(
                account_id=self.account_id,
            )
        )
    def test_delete_passes(self, mock_login, mock_delete):
        """
        Test .delete() passes
        """
        mock_login.return_value = self.account_id

        mock_response = Mock(spec=requests.Response)
        mock_response.status_code = 200
        mock_response.ok = True

        mock_delete.return_value = mock_response

        alert = InactivityAlert(self.username, self.password)

        alert.delete('19dede15-118b-467f-bfe9-e9c771d7cc2c')

        mock_delete.assert_called_once_with(
            url='https://logentries.com/rest/{account_id}/api/tags/{tag}'.format(
                account_id=self.account_id,
                tag='19dede15-118b-467f-bfe9-e9c771d7cc2c'
            )
        )
    def test_get(self, mock_login, mock_list):
        """
        Test .get() passes
        """
        mock_login.return_value = self.account_id

        mock_list.return_value = [
            {'id': 'f1472b67-0a32-448a-9593-e7c4e90c261f'},
            {'id': '5d8ee40d-5998-438c-ad26-a9346fc1463e'}
        ]

        alert = InactivityAlert(self.username, self.password)

        # call .get()
        response = alert.get('f1472b67-0a32-448a-9593-e7c4e90c261f')

        self.assertEqual(
            response,
            [
                {'id': 'f1472b67-0a32-448a-9593-e7c4e90c261f'}
            ]
        )
        mock_list.assert_called_once_with()
    def test_create_success(self, mock_login, mock_post):
        """
        Test .create() has a failure
        """
        # simulate login
        mock_login.return_value = self.account_id

        # Create the response
        mock_response = Mock(spec=requests.Response)
        mock_response.status_code = 201
        mock_response.json.return_value = {}
        mock_response.ok = True

        mock_post.return_value = mock_response

        session = requests.session()

        alert = InactivityAlert(self.username, self.password, session)

        # Create the call args
        name = 'No Successful Web Activity'
        patterns = ['status=200']
        logs = [
            '5d481b23-9c4d-4250-bfe8-be389a227f0b',
            'e0b6b2c0-a4b8-44c4-b57c-25a7f161faf1'
        ]
        trigger_config = AlertTriggerConfig(
            timeframe_value=6,
            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,
            patterns=patterns,
            logs=logs,
            trigger_config=trigger_config,
            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,
                'patterns': patterns,
                'sources': [
                    {'id': '5d481b23-9c4d-4250-bfe8-be389a227f0b'},
                    {'id': 'e0b6b2c0-a4b8-44c4-b57c-25a7f161faf1'},
                ],
                'sub_type': 'InactivityAlert',
                'type': 'AlertNotify',
                'timeframe_period': 'Day',
                'timeframe_value': 6

            }
        }

        mock_post.assert_called_once_with(
            session,
            url=alert.url_template.format(account_id=alert.account_id),
            headers=headers,
            data=json.dumps(data, sort_keys=True)
        )

        mock_response.json.assert_called_once_with()