# from __future__ import unicode_literals
# Path hack.
-import sys, os
+import sys
+import os
sys.path.insert(0, os.path.abspath('..'))
-import io
import json
-import time
import os
import sys
import unittest
import pickle
import requests
-from requests.compat import str, bytes, StringIO
+from requests.compat import str, StringIO
# import envoy
from requests import HTTPError
from requests import get, post, head, put
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
-
-
if (sys.platform == 'win32') and ('HTTPBIN_URL' not in os.environ):
os.environ['HTTPBIN_URL'] = 'http://httpbin.org/'
_httpbin = False
+
class TestSetup(object):
"""Requests test cases."""
def test_invalid_url(self):
self.assertRaises(ValueError, get, 'hiwpefhipowhefopw')
-
def test_path_is_not_double_encoded(self):
request = requests.Request("http://0.0.0.0/get/test case")
r = get(httpbin('redirect', '1'), allow_redirects=False)
self.assertEqual(r.status_code, 302)
-
def test_HTTP_200_OK_GET_WITH_PARAMS(self):
heads = {'User-agent': 'Mozilla/5.0'}
assert heads['User-agent'] in r.text
self.assertEqual(r.status_code, 200)
-
def test_HTTP_200_OK_GET_WITH_MIXED_PARAMS(self):
heads = {'User-agent': 'Mozilla/5.0'}
# response = get(url)
# self.assertEqual(response.url, httpbin('get/?' + query_unreserved))
-
def test_user_agent_transfers(self):
"""Issue XX"""
'Mozilla/5.0 (github.com/kennethreitz/requests)'
}
- r = get(httpbin('user-agent'), headers=heads);
+ r = get(httpbin('user-agent'), headers=heads)
self.assertTrue(heads['User-agent'] in r.text)
heads = {
'Mozilla/5.0 (github.com/kennethreitz/requests)'
}
- r = get(httpbin('user-agent'), headers=heads);
+ r = get(httpbin('user-agent'), headers=heads)
self.assertTrue(heads['user-agent'] in r.text)
-
def test_HTTP_200_OK_HEAD(self):
r = head(httpbin('/get'))
self.assertEqual(r.status_code, 200)
-
def test_HTTP_200_OK_PUT(self):
r = put(httpbin('put'))
self.assertEqual(r.status_code, 200)
-
def test_BASICAUTH_TUPLE_HTTP_200_OK_GET(self):
for service in SERVICES:
r = get(url)
self.assertEqual(r.status_code, 401)
-
s = requests.session(auth=auth)
r = get(url, session=s)
self.assertEqual(r.status_code, 200)
-
def test_BASICAUTH_HTTP_200_OK_GET(self):
for service in SERVICES:
r = get(url)
self.assertEqual(r.status_code, 401)
-
s = requests.session(auth=auth)
r = get(url, session=s)
self.assertEqual(r.status_code, 200)
-
def test_DIGESTAUTH_HTTP_200_OK_GET(self):
for service in SERVICES:
r = get(url)
self.assertEqual(r.status_code, 401)
-
s = requests.session(auth=auth)
r = get(url, session=s)
self.assertEqual(r.status_code, 200)
post3 = post(url, data='[{"some": "json"}]')
self.assertEqual(post3.status_code, 200)
-
def test_POSTBIN_GET_POST_FILES_WITH_PARAMS(self):
for service in SERVICES:
self.assertEqual(post1.status_code, 200)
-
def test_POSTBIN_GET_POST_FILES_WITH_HEADERS(self):
for service in SERVICES:
self.assertEqual(post2.status_code, 200)
-
def test_nonzero_evaluation(self):
for service in SERVICES:
r = get(service('/get'))
self.assertEqual(bool(r), True)
-
def test_request_ok_set(self):
for service in SERVICES:
# r.raise_for_status()
self.assertEqual(r.ok, False)
-
def test_status_raising(self):
r = get(httpbin('status', '404'))
self.assertRaises(HTTPError, r.raise_for_status)
self.assertFalse(r.error)
r.raise_for_status()
-
def test_default_status_raising(self):
config = {'danger_mode': True}
args = [httpbin('status', '404')]
r = get(httpbin('status', '200'))
self.assertEqual(r.status_code, 200)
-
def test_decompress_gzip(self):
r = get(httpbin('gzip'))
assert isinstance(response.url, str)
-
def test_unicode_get(self):
for service in SERVICES:
get(url, params={'foo': 'foo'})
get(service('ø'), params={'foo': 'foo'})
-
def test_httpauth_recursion(self):
http_auth = HTTPBasicAuth('user', 'BADpass')
r = get(service('basic-auth', 'user', 'pass'), auth=http_auth)
self.assertEqual(r.status_code, 401)
-
def test_urlencoded_post_data(self):
for service in SERVICES:
self.assertEqual(rbody.get('form'), dict(test='fooaowpeuf'))
self.assertEqual(rbody.get('data'), '')
-
def test_nonurlencoded_post_data(self):
for service in SERVICES:
assert rbody.get('form') in (None, {})
self.assertEqual(rbody.get('data'), 'fooaowpeuf')
-
def test_urlencoded_post_querystring(self):
for service in SERVICES:
self.assertEqual(r.url, service('post?test=fooaowpeuf'))
rbody = json.loads(r.text)
- self.assertEqual(rbody.get('form'), {}) # No form supplied
+ self.assertEqual(rbody.get('form'), {}) # No form supplied
self.assertEqual(rbody.get('data'), '')
-
def test_urlencoded_post_query_and_data(self):
for service in SERVICES:
self.assertEqual(rbody.get('form'), dict(test2='foobar'))
self.assertEqual(rbody.get('data'), '')
-
def test_nonurlencoded_postdata(self):
for service in SERVICES:
assert rbody.get('form') in (None, {})
self.assertEqual(rbody.get('data'), 'foobar')
-
- # def test_idna(self):
- # r = get(u'http://➡.ws/httpbin')
- # assert 'httpbin' in r.url
-
-
def test_urlencoded_get_query_multivalued_param(self):
for service in SERVICES:
- r = get(service('get'), params=dict(test=['foo','baz']))
+ r = get(service('get'), params=dict(test=['foo', 'baz']))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.url, service('get?test=foo&test=baz'))
-
def test_urlencoded_post_querystring_multivalued(self):
for service in SERVICES:
- r = post(service('post'), params=dict(test=['foo','baz']))
+ r = post(service('post'), params=dict(test=['foo', 'baz']))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
self.assertEqual(r.url, service('post?test=foo&test=baz'))
rbody = json.loads(r.text)
- self.assertEqual(rbody.get('form'), {}) # No form supplied
+ self.assertEqual(rbody.get('form'), {}) # No form supplied
self.assertEqual(rbody.get('data'), '')
-
def test_urlencoded_post_query_multivalued_and_data(self):
for service in SERVICES:
r = post(
service('post'),
- params=dict(test=['foo','baz']),
- data=dict(test2="foobar",test3=['foo','baz']))
+ params=dict(test=['foo', 'baz']),
+ data=dict(test2="foobar", test3=['foo', 'baz']))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
# print('-----------------------')
rbody = json.loads(r.text)
- self.assertEqual(rbody.get('form'), dict(test2='foobar',test3=['foo','baz']))
+ self.assertEqual(rbody.get('form'), dict(test2='foobar', test3=['foo', 'baz']))
self.assertEqual(rbody.get('data'), '')
-
def test_GET_no_redirect(self):
for service in SERVICES:
self.assertEqual(r.status_code, 302)
self.assertEqual(len(r.history), 0)
-
def test_HEAD_no_redirect(self):
for service in SERVICES:
self.assertEqual(r.status_code, 302)
self.assertEqual(len(r.history), 0)
-
def test_redirect_history(self):
for service in SERVICES:
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.history), 3)
-
def test_relative_redirect_history(self):
for service in SERVICES:
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.history), 3)
-
def test_session_HTTP_200_OK_GET(self):
s = requests.session()
r = get(httpbin('/get'), session=s)
self.assertEqual(r.status_code, 200)
-
def test_session_persistent_headers(self):
heads = {'User-agent': 'Mozilla/5.0'}
for service in SERVICES:
url = service('headers')
-
- response = get(
- url = url,
- hooks = {
- 'args': add_foo_header
- }
- )
+ response = get(url=url, hooks={'args': add_foo_header})
assert 'foo' in response.text
for service in SERVICES:
url = service('headers')
- response = get(
- url = url,
- hooks = {
+ response = get(url=url,
+ hooks={
'args': [add_foo_header, add_bar_header]
}
)
assert 'k' in c
-
-
def test_session_persistent_params(self):
params = {'a': 'a_test'}
r1 = get(httpbin('get'), session=s)
assert params['a'] in r1.text
-
params2 = {'b': 'b_test'}
r2 = get(httpbin('get'), params=params2, session=s)
assert params['a'] in r2.text
assert params2['b'] in r2.text
-
params3 = {'b': 'b_test', 'a': None, 'c': 'c_test'}
r3 = get(httpbin('get'), params=params3, session=s)
else:
assert False
-
config = {'safe_mode': True}
r = get(hah, allow_redirects=False, config=config)
assert r.content == None
def test_upload_binary_data(self):
- r = requests.get(httpbin('post'), auth=('a', 'b'), data='\xff')
+ requests.get(httpbin('post'), auth=('a', 'b'), data='\xff')
def test_useful_exception_for_invalid_scheme(self):
-
- # If we pass a legitimate URL with a scheme not supported
+
+ # If we pass a legitimate URL with a scheme not supported
# by requests, we should fail.
self.assertRaises(
ValueError,
get,
'ftp://ftp.kernel.org/pub/')
-
-
if __name__ == '__main__':
unittest.main()