Esempio n. 1
0
 def test_fail_silenty_false(self):
     dec = decorator(fail_silenty=False)
     with patch('babis.babis.Request'):
         with patch('babis.babis.urlopen') as urlopen:
             urlopen.side_effect = URLError('Boom!')
             with pytest.raises(URLError):
                 dec.ping_url('foo')
Esempio n. 2
0
 def test_user_agent(self):
     dec = decorator(user_agent='foo')
     with patch('babis.babis.Request') as Request:
         with patch('babis.babis.urlopen'):
             dec.ping_url('foo')
     Request.assert_called_with(ANY,
                                data=ANY,
                                headers={'User-Agent': 'foo'})
Esempio n. 3
0
    def test_ratelimit(self):
        dec = decorator(ping_before='foo', ping_after='bar', rate='2/h')
        dec.ping_urls = Mock()
        wrapped = dec(Mock())
        wrapped()
        wrapped()

        assert (dec.ping_urls.call_count == 2)
Esempio n. 4
0
 def test_ping_url(self):
     dec = decorator()
     with patch('babis.babis.Request') as Request:
         request_init_mock = Mock()
         Request.return_value = request_init_mock
         with patch('babis.babis.urlopen') as urlopen:
             dec.ping_url('foo')
     Request.assert_called_with('foo', data=ANY, headers=ANY)
     urlopen.assert_called_with(request_init_mock)
Esempio n. 5
0
    def test_before_and_after(self):
        first_request = Mock()
        second_request = Mock()
        third_request = Mock()

        with patch('babis.babis.Request') as Request:
            Request.side_effect = [first_request, third_request]
            with patch('babis.babis.urlopen') as urlopen:

                def wrapped():
                    urlopen(second_request)

                decorator(ping_before='foo', ping_after='bar')(wrapped)()

        urlopen.assert_has_calls(
            [call(first_request),
             call(second_request),
             call(third_request)])
Esempio n. 6
0
 def test_is_ratelimited(self):
     dec = decorator(rate='2/5m')
     with patch('babis.babis.datetime') as datetime_mock:
         datetime_mock.utcnow.side_effect = [
             datetime(2016, 11, 30, 13, 10, 0),
             datetime(2016, 11, 30, 13, 12, 0),
             datetime(2016, 11, 30, 13, 13, 0),
             datetime(2016, 11, 30, 13, 14, 59),
             datetime(2016, 11, 30, 13, 15, 0),
             datetime(2016, 11, 30, 13, 15, 2),
             datetime(2016, 11, 30, 13, 16, 59),
             datetime(2016, 11, 30, 13, 17, 0),
             datetime(2016, 11, 30, 13, 17, 1),
         ]
         assert (dec.is_ratelimited() is False)
         assert (dec.is_ratelimited() is False)
         assert (dec.is_ratelimited() is True)
         assert (dec.is_ratelimited() is True)
         assert (dec.is_ratelimited() is False)
         assert (dec.is_ratelimited() is True)
         assert (dec.is_ratelimited() is True)
         assert (dec.is_ratelimited() is False)
         assert (dec.is_ratelimited() is True)
Esempio n. 7
0
    def test_rate_parsing(self):
        dec = decorator(rate='5')
        assert (len(dec.calls) == 0)
        assert (dec.ratelimit_count == 5)
        assert (dec.ratelimit_period == 60)

        dec = decorator(rate='5/s')
        assert (dec.ratelimit_period == 1)

        dec = decorator(rate='5/h')
        assert (dec.ratelimit_period == 3600)

        dec = decorator(rate='5/d')
        assert (dec.ratelimit_period == 86400)

        dec = decorator(rate='1/5m')
        assert (dec.ratelimit_period == 300)

        with pytest.raises(Exception):
            dec = decorator(rate='1/5')
Esempio n. 8
0
 def test_fail_silenty_true(self):
     dec = decorator(fail_silenty=True)
     with patch('babis.babis.Request'):
         with patch('babis.babis.urlopen') as urlopen:
             urlopen.side_effect = URLError('Boom!')
             dec.ping_url('foo')
Esempio n. 9
0
 def test_method(self):
     dec = decorator(method='post')
     with patch('babis.babis.Request') as Request:
         with patch('babis.babis.urlopen'):
             dec.ping_url('foo')
     Request.assert_called_with(ANY, data='', headers=ANY)
Esempio n. 10
0
 def test_ping_urls_iterable(self):
     dec = decorator()
     dec.ping_url = Mock()
     dec.ping_urls(('foo', 'bar'))
     dec.ping_url.assert_has_calls([call('foo'), call('bar')])
Esempio n. 11
0
 def test_ping_urls_string(self):
     dec = decorator()
     dec.ping_url = Mock()
     dec.ping_urls('foo')
     dec.ping_url.assert_called_with('foo')
Esempio n. 12
0
 def test_fn_name(self):
     dec = decorator()
     fn = Mock()
     fn.__name__ = 'foobar'
     wrapped = dec(fn)
     assert (wrapped.__name__ == 'foobar')