test_http.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import requests
  2. from pytest_localserver import http, plugin
  3. # define test fixture here again in order to run tests without having to
  4. # install the plugin anew every single time
  5. httpserver = plugin.httpserver
  6. def test_httpserver_funcarg(httpserver):
  7. assert isinstance(httpserver, http.ContentServer)
  8. assert httpserver.is_alive()
  9. assert httpserver.server_address
  10. def test_server_does_not_serve_file_at_startup(httpserver):
  11. assert httpserver.code == 204
  12. assert httpserver.content == ''
  13. def test_some_content_retrieval(httpserver):
  14. httpserver.serve_content('TEST!')
  15. resp = requests.get(httpserver.url)
  16. assert resp.text == 'TEST!'
  17. assert resp.status_code == 200
  18. def test_request_is_stored(httpserver):
  19. httpserver.serve_content('TEST!')
  20. assert len(httpserver.requests) == 0
  21. resp = requests.get(httpserver.url)
  22. assert len(httpserver.requests) == 1
  23. def test_GET_request(httpserver):
  24. httpserver.serve_content('TEST!', headers={'Content-type': 'text/plain'})
  25. resp = requests.get(httpserver.url, headers={'User-Agent': 'Test method'})
  26. assert resp.text == 'TEST!'
  27. assert resp.status_code == 200
  28. assert 'text/plain' in resp.headers['Content-type']
  29. # FIXME get compression working!
  30. # def test_gzipped_GET_request(httpserver):
  31. # httpserver.serve_content('TEST!', headers={'Content-type': 'text/plain'})
  32. # httpserver.compress = 'gzip'
  33. # resp = requests.get(httpserver.url, headers={
  34. # 'User-Agent': 'Test method',
  35. # 'Accept-encoding': 'gzip'
  36. # })
  37. # assert resp.text == 'TEST!'
  38. # assert resp.status_code == 200
  39. # assert resp.content_encoding == 'gzip'
  40. # assert resp.headers['Content-type'] == 'text/plain'
  41. # assert resp.headers['content-encoding'] == 'gzip'
  42. def test_HEAD_request(httpserver):
  43. httpserver.serve_content('TEST!', headers={'Content-type': 'text/plain'})
  44. resp = requests.head(httpserver.url)
  45. assert resp.status_code == 200
  46. assert resp.headers['Content-type'] == 'text/plain'
  47. # def test_POST_request(httpserver):
  48. # headers = {'Content-type': 'application/x-www-form-urlencoded',
  49. # 'set-cookie': 'some _cookie_content'}
  50. #
  51. # httpserver.serve_content('TEST!', headers=headers)
  52. # resp = requests.post(httpserver.url, data={'data': 'value'}, headers=headers)
  53. # assert resp.text == 'TEST!'
  54. # assert resp.status_code == 200
  55. #
  56. # httpserver.serve_content('TEST!', headers=headers, show_post_vars=True)
  57. # resp = requests.post(httpserver.url, data={'data': 'value'}, headers=headers)
  58. # assert resp.json() == {'data': 'value'}
  59. # assert resp.status_code == 200