Beispiel #1
0
    def test_update_limits_from_api_invalid_region_503(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 503,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Service Unavailable',
                'Code': '503'
            }
        }
        ce = ClientError(resp, 'GetSendQuota')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == [call.warning('Skipping SES: %s', ce)]
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #2
0
    def test_update_limits_from_api_other_client_error(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 400,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Not Unknown',
                'Code': 'NotAccessDenied',
                'Type': 'Sender'
            }
        }
        ce = ClientError(resp, 'GetSendQuota')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                with pytest.raises(ClientError):
                    cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == []
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #3
0
    def test_find_usage_invalid_region_503(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 503,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Service Unavailable',
                'Code': '503'
            }
        }
        ce = ClientError(resp, 'GetSendQuota')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43)
                cls.conn = mock_conn
                assert cls._have_usage is False
                cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES'),
            call.warning(
                'Skipping SES: %s', ce
            )
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #4
0
    def test_update_limits_from_api_invalid_region_503(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 503,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Service Unavailable',
                'Code': '503'
            }
        }
        ce = ClientError(resp, 'GetSendQuota')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43)
                cls.conn = mock_conn
                cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == [
            call.warning('Skipping SES: %s', ce)
        ]
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #5
0
    def test_update_limits_from_api_other_client_error(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 400,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Not Unknown',
                'Code': 'NotAccessDenied',
                'Type': 'Sender'
            }
        }
        ce = ClientError(resp, 'GetSendQuota')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43)
                cls.conn = mock_conn
                with pytest.raises(ClientError):
                    cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == []
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #6
0
 def test_get_limits_again(self):
     """test that existing limits dict is returned on subsequent calls"""
     mock_limits = Mock()
     cls = _SesService(21, 43, {}, None)
     cls.limits = mock_limits
     res = cls.get_limits()
     assert res == mock_limits
Beispiel #7
0
    def test_find_usage_invalid_region_503(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 503,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Service Unavailable',
                'Code': '503'
            }
        }
        ce = ClientError(resp, 'GetSendQuota')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                assert cls._have_usage is False
                cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES'),
            call.warning('Skipping SES: %s', ce)
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #8
0
    def test_find_usage_other_client_error(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 400,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Not Unknown',
                'Code': 'NotAccessDenied',
                'Type': 'Sender'
            }
        }
        ce = ClientError(resp, 'operation')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43)
                cls.conn = mock_conn
                assert cls._have_usage is False
                with pytest.raises(ClientError):
                    cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES')
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #9
0
 def test_get_limits_again(self):
     """test that existing limits dict is returned on subsequent calls"""
     mock_limits = Mock()
     cls = _SesService(21, 43)
     cls.limits = mock_limits
     res = cls.get_limits()
     assert res == mock_limits
Beispiel #10
0
    def test_find_usage_other_client_error(self):
        resp = {
            'ResponseMetadata': {
                'HTTPStatusCode': 400,
                'RequestId': '7d74c6f0-c789-11e5-82fe-a96cdaa6d564'
            },
            'Error': {
                'Message': 'Not Unknown',
                'Code': 'NotAccessDenied',
                'Type': 'Sender'
            }
        }
        ce = ClientError(resp, 'operation')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                assert cls._have_usage is False
                with pytest.raises(ClientError):
                    cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES')
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #11
0
 def test_init(self):
     """test __init__()"""
     cls = _SesService(21, 43)
     assert cls.service_name == 'SES'
     assert cls.api_name == 'ses'
     assert cls.conn is None
     assert cls.warning_threshold == 21
     assert cls.critical_threshold == 43
Beispiel #12
0
 def test_init(self):
     """test __init__()"""
     cls = _SesService(21, 43, {}, None)
     assert cls.service_name == 'SES'
     assert cls.api_name == 'ses'
     assert cls.conn is None
     assert cls.warning_threshold == 21
     assert cls.critical_threshold == 43
Beispiel #13
0
 def test_get_limits(self):
     cls = _SesService(21, 43)
     cls.limits = {}
     res = cls.get_limits()
     assert sorted(res.keys()) == sorted([
         'Daily sending quota',
     ])
     limit = cls.limits['Daily sending quota']
     assert limit.service == cls
     assert limit.def_warning_threshold == 21
     assert limit.def_critical_threshold == 43
     assert limit.default_limit == 200
Beispiel #14
0
 def test_get_limits(self):
     cls = _SesService(21, 43, {}, None)
     cls.limits = {}
     res = cls.get_limits()
     assert sorted(res.keys()) == sorted([
         'Daily sending quota',
     ])
     limit = cls.limits['Daily sending quota']
     assert limit.service == cls
     assert limit.def_warning_threshold == 21
     assert limit.def_critical_threshold == 43
     assert limit.default_limit == 200
Beispiel #15
0
    def test_update_limits_from_api(self):
        mock_conn = Mock()
        mock_conn.get_send_quota.return_value = {
            'Max24HourSend': 123.0,
            'MaxSendRate': 12.0,
            'SentLast24Hours': 122.0
        }

        with patch('%s.connect' % pb) as mock_connect:
            cls = _SesService(21, 43)
            cls.conn = mock_conn
            cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert cls.limits['Daily sending quota'].api_limit == 123.0
Beispiel #16
0
    def test_update_limits_from_api(self):
        mock_conn = Mock()
        mock_conn.get_send_quota.return_value = {
            'Max24HourSend': 123.0,
            'MaxSendRate': 12.0,
            'SentLast24Hours': 122.0
        }

        with patch('%s.connect' % pb) as mock_connect:
            cls = _SesService(21, 43, {}, None)
            cls.conn = mock_conn
            cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert cls.limits['Daily sending quota'].api_limit == 123.0
Beispiel #17
0
    def test_find_usage(self):
        mock_conn = Mock()
        mock_conn.get_send_quota.return_value = {
            'Max24HourSend': 123.0,
            'MaxSendRate': 12.0,
            'SentLast24Hours': 122.0
        }

        with patch('%s.connect' % pb) as mock_connect:
            cls = _SesService(21, 43)
            cls.conn = mock_conn
            assert cls._have_usage is False
            cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is True
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 1
        assert cls.limits['Daily sending quota'].get_current_usage()[
                   0].get_value() == 122.0
Beispiel #18
0
    def test_update_limits_from_api_invalid_region(self):
        def se_get():
            raise EndpointConnectionError(endpoint_url='myurl')

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == [
            call.warning('Skipping SES: %s',
                         'Could not connect to the endpoint URL: "myurl"')
        ]
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #19
0
    def test_find_usage(self):
        mock_conn = Mock()
        mock_conn.get_send_quota.return_value = {
            'Max24HourSend': 123.0,
            'MaxSendRate': 12.0,
            'SentLast24Hours': 122.0
        }

        with patch('%s.connect' % pb) as mock_connect:
            cls = _SesService(21, 43, {}, None)
            cls.conn = mock_conn
            assert cls._have_usage is False
            cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is True
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 1
        assert cls.limits['Daily sending quota'].get_current_usage(
        )[0].get_value() == 122.0
Beispiel #20
0
    def test_update_limits_from_api_invalid_region_connect_timeout(self):
        ce = ConnectTimeoutError(endpoint_url='http://example.com')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == [
            call.warning('Skipping SES: %s', str(ce))
        ]
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #21
0
    def test_update_limits_from_api_invalid_region(self):
        def se_get():
            raise EndpointConnectionError(endpoint_url='myurl')

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43)
                cls.conn = mock_conn
                cls._update_limits_from_api()
        assert mock_connect.mock_calls == [call()]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert mock_logger.mock_calls == [
            call.warning(
                'Skipping SES: %s',
                'Could not connect to the endpoint URL: "myurl"'
            )
        ]
        assert cls.limits['Daily sending quota'].api_limit is None
Beispiel #22
0
    def test_find_usage_invalid_region(self):
        def se_get():
            raise EndpointConnectionError(endpoint_url='myurl')

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                assert cls._have_usage is False
                cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES'),
            call.warning('Skipping SES: %s',
                         'Could not connect to the endpoint URL: "myurl"')
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #23
0
    def test_find_usage_invalid_region_connect_timeout(self):
        ce = ConnectTimeoutError(endpoint_url='http://example.com')

        def se_get():
            raise ce

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43, {}, None)
                cls.conn = mock_conn
                assert cls._have_usage is False
                cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES'),
            call.warning('Skipping SES: %s', str(ce))
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #24
0
    def test_find_usage_invalid_region(self):
        def se_get():
            raise EndpointConnectionError(endpoint_url='myurl')

        mock_conn = Mock()
        mock_conn.get_send_quota.side_effect = se_get

        with patch('%s.connect' % pb) as mock_connect:
            with patch('%s.logger' % pbm) as mock_logger:
                cls = _SesService(21, 43)
                cls.conn = mock_conn
                assert cls._have_usage is False
                cls.find_usage()
        assert mock_connect.mock_calls == [call()]
        assert cls._have_usage is False
        assert mock_logger.mock_calls == [
            call.debug('Checking usage for service %s', 'SES'),
            call.warning(
                'Skipping SES: %s',
                'Could not connect to the endpoint URL: "myurl"'
            )
        ]
        assert mock_conn.mock_calls == [call.get_send_quota()]
        assert len(cls.limits['Daily sending quota'].get_current_usage()) == 0
Beispiel #25
0
 def test_required_iam_permissions(self):
     cls = _SesService(21, 43)
     assert cls.required_iam_permissions() == [
         'ses:GetSendQuota'
     ]
Beispiel #26
0
 def test_required_iam_permissions(self):
     cls = _SesService(21, 43, {}, None)
     assert cls.required_iam_permissions() == ['ses:GetSendQuota']