예제 #1
0
def test_retries(monkeypatch):
    session = MagicMock()
    session.return_value.get.return_value.text = 'OK'
    monkeypatch.setattr('requests.Session', session)
    http = HttpWrapper('http://example.org', max_retries=10)
    assert 'OK' == http.text()
    assert session.return_value.get.called
예제 #2
0
def test_retries(monkeypatch):
    session = MagicMock()
    session.return_value.get.return_value.text = 'OK'
    monkeypatch.setattr('requests.Session', session)
    http = HttpWrapper('http://example.org', max_retries=10)
    assert 'OK' == http.text()
    assert session.return_value.get.called
예제 #3
0
def test_retries(monkeypatch):
    session = MagicMock()
    session.return_value.get.return_value.text = "OK"
    monkeypatch.setattr("requests.Session", session)
    http = HttpWrapper("http://example.org", max_retries=10)
    assert "OK" == http.text()
    assert session.return_value.get.called
예제 #4
0
def test_http_redirects(monkeypatch, fx_redirects):
    kwargs, code = fx_redirects
    exp_allow_redirects = False if 'allow_redirects' not in kwargs else kwargs[
        'allow_redirects']

    resp = MagicMock()
    resp.status_code = code
    resp.text = ''
    redirect_url = 'http://example.org/some-file'
    resp.headers = {'Location': redirect_url}

    method = MagicMock()
    method.return_value = resp

    patch = 'requests.{}'.format(kwargs['method'].lower())
    monkeypatch.setattr(patch, method)

    http = HttpWrapper('http://example.org', **kwargs)

    assert code == http.code()
    assert '' == http.text()
    assert redirect_url == http.headers()['Location']

    method.assert_called_once_with('http://example.org',
                                   auth=None,
                                   headers={'User-Agent': get_user_agent()},
                                   params=None,
                                   timeout=10,
                                   verify=True,
                                   allow_redirects=exp_allow_redirects)
예제 #5
0
def test_http(monkeypatch):
    resp = MagicMock()
    resp.status_code = 200
    resp.text = '"foo"'
    resp.content = resp.text
    resp.json.return_value = 'foo'
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr('requests.get', get)
    http = HttpWrapper('http://example.org')
    assert 200 == http.code()
    assert '"foo"' == http.text()
    assert 'foo' == http.json()
    assert 5 == http.content_size()

    get.assert_called_once_with('http://example.org',
                                auth=None,
                                headers={'User-Agent': get_user_agent()},
                                params=None,
                                timeout=10,
                                verify=True,
                                allow_redirects=True)

    resp.json.side_effect = Exception('JSON fail')
    with pytest.raises(HttpError) as ex:
        http.json()
    assert 'JSON fail' == ex.value.message
예제 #6
0
def test_basicauth(monkeypatch):
    resp = MagicMock()
    resp.text = 'OK'
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr('requests.get', get)

    http = HttpWrapper('http://*****:*****@example.org', timeout=2)
    assert 'OK' == http.text()
    get.assert_called_with('http://example.org', auth=('user', 'pass'),
                           headers={'User-Agent': get_user_agent()},
                           params=None, timeout=2, verify=True, allow_redirects=True)

    get.side_effect = requests.Timeout('timed out')
    http = HttpWrapper('http://*****:*****@example.org')
    with pytest.raises(HttpError) as ex:
        http.text()
    # verify that our basic auth credentials are not exposed in the exception message
    assert 'HTTP request failed for http://example.org: timeout' == str(ex.value)
예제 #7
0
def test_basicauth(monkeypatch):
    resp = MagicMock()
    resp.text = 'OK'
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr('requests.get', get)

    http = HttpWrapper('http://*****:*****@example.org', timeout=2)
    assert 'OK' == http.text()
    get.assert_called_with('http://example.org', auth=('user', 'pass'),
                           headers={'User-Agent': get_user_agent()},
                           params=None, timeout=2, verify=True, allow_redirects=True)

    get.side_effect = requests.Timeout('timed out')
    http = HttpWrapper('http://*****:*****@example.org')
    with pytest.raises(HttpError) as ex:
        http.text()
    # verify that our basic auth credentials are not exposed in the exception message
    assert 'HTTP request failed for http://example.org: timeout' == str(ex.value)
예제 #8
0
def test_oauth2(monkeypatch):
    resp = MagicMock()
    resp.status_code = 218
    resp.text = 'OK'
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('tokens.get', lambda x: 'mytok' if x is 'uid' else 'myothertok')
    http = HttpWrapper('http://example.org', oauth2=True, timeout=2)
    assert 218 == http.code()
    assert 'OK' == http.text()
    get.assert_called_with('http://example.org', auth=None,
                           headers={'Authorization': 'Bearer mytok', 'User-Agent': get_user_agent()},
                           params=None, timeout=2, verify=True, allow_redirects=True)

    http = HttpWrapper('http://example.org', oauth2=True, oauth2_token_name='foo', timeout=2)
    assert 218 == http.code()
    assert 'OK' == http.text()
    get.assert_called_with('http://example.org', auth=None,
                           headers={'Authorization': 'Bearer myothertok', 'User-Agent': get_user_agent()},
                           params=None, timeout=2, verify=True, allow_redirects=True)
예제 #9
0
def test_oauth2(monkeypatch):
    resp = MagicMock()
    resp.status_code = 218
    resp.text = 'OK'
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr('requests.get', get)
    monkeypatch.setattr('tokens.get', lambda x: 'mytok' if x is 'uid' else 'myothertok')
    http = HttpWrapper('http://example.org', oauth2=True, timeout=2)
    assert 218 == http.code()
    assert 'OK' == http.text()
    get.assert_called_with('http://example.org', auth=None,
                           headers={'Authorization': 'Bearer mytok', 'User-Agent': get_user_agent()},
                           params=None, timeout=2, verify=True, allow_redirects=True)

    http = HttpWrapper('http://example.org', oauth2=True, oauth2_token_name='foo', timeout=2)
    assert 218 == http.code()
    assert 'OK' == http.text()
    get.assert_called_with('http://example.org', auth=None,
                           headers={'Authorization': 'Bearer myothertok', 'User-Agent': get_user_agent()},
                           params=None, timeout=2, verify=True, allow_redirects=True)
예제 #10
0
def test_basicauth(monkeypatch):
    resp = MagicMock()
    resp.text = "OK"
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr("requests.get", get)

    http = HttpWrapper("http://*****:*****@example.org", timeout=2)
    assert "OK" == http.text()
    get.assert_called_with(
        "http://example.org",
        auth=("user", "pass"),
        headers={"User-Agent": "zmon-worker/0.1"},
        params=None,
        timeout=2,
        verify=True,
    )

    get.side_effect = requests.Timeout("timed out")
    http = HttpWrapper("http://*****:*****@example.org")
    with pytest.raises(HttpError) as ex:
        http.text()
    # verify that our basic auth credentials are not exposed in the exception message
    assert "HTTP request failed for http://example.org: timeout" == str(ex.value)
예제 #11
0
def test_http(monkeypatch):
    resp = MagicMock()
    resp.status_code = 200
    resp.text = '"foo"'
    resp.content = resp.text
    resp.json.return_value = "foo"
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr("requests.get", get)
    http = HttpWrapper("http://example.org")
    assert 200 == http.code()
    assert '"foo"' == http.text()
    assert "foo" == http.json()
    assert 5 == http.content_size()
    resp.json.side_effect = Exception("JSON fail")
    with pytest.raises(HttpError) as ex:
        http.json()
    assert "JSON fail" == ex.value.message
예제 #12
0
def test_oauth2(monkeypatch):
    resp = MagicMock()
    resp.status_code = 218
    resp.text = "OK"
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr("requests.get", get)
    monkeypatch.setattr("tokens.get", lambda x: "mytok")
    http = HttpWrapper("http://example.org", oauth2=True, timeout=2)
    assert 218 == http.code()
    assert "OK" == http.text()
    get.assert_called_once_with(
        "http://example.org",
        auth=None,
        headers={"Authorization": "Bearer mytok", "User-Agent": "zmon-worker/0.1"},
        params=None,
        timeout=2,
        verify=True,
    )
예제 #13
0
def test_http(monkeypatch):
    resp = MagicMock()
    resp.status_code = 200
    resp.text = '"foo"'
    resp.content = resp.text
    resp.json.return_value = 'foo'
    get = MagicMock()
    get.return_value = resp
    monkeypatch.setattr('requests.get', get)
    http = HttpWrapper('http://example.org')
    assert 200 == http.code()
    assert '"foo"' == http.text()
    assert 'foo' == http.json()
    assert 5 == http.content_size()

    get.assert_called_once_with('http://example.org', auth=None, headers={'User-Agent': get_user_agent()},
                                params=None, timeout=10, verify=True, allow_redirects=True)

    resp.json.side_effect = Exception('JSON fail')
    with pytest.raises(HttpError) as ex:
        http.json()
    assert 'JSON fail' == ex.value.message
예제 #14
0
def test_http_redirects(monkeypatch, fx_redirects):
    kwargs, code = fx_redirects
    exp_allow_redirects = False if 'allow_redirects' not in kwargs else kwargs['allow_redirects']

    resp = MagicMock()
    resp.status_code = code
    resp.text = ''
    redirect_url = 'http://example.org/some-file'
    resp.headers = {'Location': redirect_url}

    method = MagicMock()
    method.return_value = resp

    patch = 'requests.{}'.format(kwargs['method'].lower())
    monkeypatch.setattr(patch, method)

    http = HttpWrapper('http://example.org', **kwargs)

    assert code == http.code()
    assert '' == http.text()
    assert redirect_url == http.headers()['Location']

    method.assert_called_once_with('http://example.org', auth=None, headers={'User-Agent': get_user_agent()},
                                   params=None, timeout=10, verify=True, allow_redirects=exp_allow_redirects)