def test_api_get_fail(self, mock_login, mock_get, mock_headers):
        """
        Test ._api_get() raises an exception
        """
        mock_login.return_value = self.account_id
        mock_headers.return_value = {}

        mock_response = Mock(spec=requests.Response)
        mock_response.status_code = 500
        mock_response.text = "Server error"
        mock_response.ok = False

        mock_get.return_value = mock_response

        url = 'https://logentries.com/app/{account_id}/rest/tag'.format(account_id=self.account_id)

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

        with self.assertRaises(ServerException):
            alert._api_get(
                url=url,
                data={'k': 'v'}
            )

        mock_get.assert_called_once_with(
            alert.session,
            url=url,
            headers={},
            data={'k': 'v'}
        )
    def test_get_api_headers(self, mock_login, mock_get_token):
        """
        Test .get_api_headers()
        """
        mock_login.return_value = self.account_id
        mock_get_token.return_value = self.csrf_token

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

        self.assertDictEqual(
            alert._get_api_headers(**{'xxx': 'yyy'}),
            {
                'Accept': 'application/json, text/plain, */*',
                'Accept-Language': 'en-US,en;q=0.5',
                'Cache-Control': 'no-cache',
                'Connection': 'keep-alive',
                'Content-Type': 'application/json;charset=utf-8',
                'Host': 'logentries.com',
                'Pragma': 'no-cache',
                'Referer': 'https://logentries.com/app/{account_id}'.format(account_id=self.account_id),
                'X-CSRFToken': self.csrf_token,
                'xxx': 'yyy'
            }
        )
        mock_get_token.assert_called_once_with()
    def test_api_get(self, mock_login, mock_get, mock_headers):
        """
        Test ._api_get()
        """
        mock_login.return_value = self.account_id
        mock_headers.return_value = {}

        url = 'https://logentries.com/app/{account_id}/rest/tag'.format(account_id=self.account_id)

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

        alert._api_get(
            url=url,
            data={'k': 'v'}
        )

        mock_get.assert_called_once_with(
            alert.session,
            url=url,
            headers={},
            data={'k': 'v'}
        )