{ "info": { "author": "Javier Santacruz", "author_email": "javier.santacruz.lc@gmail.com", "bugtrack_url": null, "classifiers": [ "Topic :: Software Development :: Testing" ], "description": "HttpTestServer\n**************\n\n.. image:: https://badge.fury.io/py/httptestserver.svg\n :target: http://badge.fury.io/py/httptestserver\n :alt: Latest Pypi version\n\n.. image:: https://readthedocs.org/projects/httptestserver/badge/?version=latest\n :target: https://readthedocs.org/projects/httptestserver/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://travis-ci.org/grupotaric/httptestserver.svg?branch=master\n :target: https://travis-ci.org/grupotaric/httptestserver\n :alt: Last build status\n\nHTTP(s) and SMTP servers which can be run within a Python process. Serving\nfrom different thread along with application and tests, exposing a simple\nthread-safe API, so the calling code can control how the server behaves.\n\nSometimes integration tests cannot do with mocking the ``socket.socket``\nfunction avoiding real networking, this partially solves the problem by\nproviding a real server which is easy to use and can perform real network\ncommunication in a controlled and reliable way.\n\nFeatures:\n\n* Runs in a different thread along with your tests.\n* Control server responses and behaviour.\n* Access to server internal state and data after or during the request.\n* HTTPs support, it bundles a self-signed certificate useful for testing.\n* SMTP support which will collect and parse all your outgoing email.\n* History of all performed requests/responses.\n\nSupports ``python`` *2.7* *3.2*, *3.3* and *3.4*\n\n\nFunctions\n---------\n\nFunctions that return a running server instance:\n\n.. code:: python\n\n >>> server = start_server()\n >>> server.host\n '127.0.0.1'\n\n\nOr context managers for limited use:\n\n.. code:: python\n\n >>> with http_server() as server:\n ... server.host\n '127.0.0.1'\n\n.. code:: python\n\n >>> with smtp_server() as server:\n ... server.inbox\n []\n\n\nMixin classes\n-------------\n\nMixins that include an working server as ``self.server``.\n\n\n.. code:: python\n\n import requests\n from httptestserver import HttpsTestServer\n\n class TestApplication(HttpsTestServer):\n\n # Test what was actually get by the server\n def test_it_should_send_headers(self):\n headers = {'key': 'value'}\n\n requests.get(self.default_url, headers=headers)\n\n assert self.server.data['headers']['key'] == 'value'\n\n # Control server responses\n def test_it_should_parse_json_response(self):\n self.server.data['headers'] = {'Content-Type': 'application/json'}\n self.server.data['response_content'] = \"{'key': 'value'}\"\n\n response = requests.get(self.default_url)\n\n assert response.json() == {'key': 'value'}\n\n # Make the server behave as you want\n def test_it_should_raise_timeout_at_2s_wait(self):\n self.server.data['response_timeout'] = 2\n\n try:\n requests.get(self.default_url, timeout=1)\n except requests.exceptions.Timeout:\n pass\n else:\n assert False\n\n # Access to server's requests/responses history\n def test_it_should_make_two_requests(self):\n requests.get(self.default_url)\n requests.get(self.default_url + '2')\n\n assert len(self.server.history) == 2\n assert self.server.history[-1]['path'] == self.default_url + '2'\n\n\nDevelopment\n===========\n\nIn order get a development environment, create a virtualenv and install the\ndesired requirements.\n\n.. code:: bash\n\n virtualenv env\n env/bin/activate\n pip install -r dev-requirements.txt\n\n\nThe included certificate was generated using SSL:\n\n.. code:: bash\n\n openssl req -new -x509 -keyout server.pem -out server.pem -days 40000 -nodes\n\n\nTests\n-----\n\nTo run the tests just use **tox** or **nose**:\n\n.. code:: bash\n\n tox\n\n\n.. code:: bash\n\n nosetests\n\n\nDocumentation\n-------------\n\nTo generate the documentation change to the ``docs`` directory and run make.\nYou need to install the ``sphinx`` and ``changelog`` packages in order to be\nable to run the makefile.\n\n\n.. code:: bash\n\n cd docs\n make html\n open build/html/index.html", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "httptestserver", "package_url": "https://pypi.org/project/httptestserver/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/httptestserver/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/httptestserver/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "HTTP(s) and SMTP testing server", "version": "0.3.1" }, "last_serial": 1757132, "releases": { "0.1.0": [ { "comment_text": "built for Linux-3.16.3-1-ARCH-x86_64-with-glibc2.3.4", "digests": { "md5": "d1a0e0cf01c334df963f00dbb7f28f6f", "sha256": "d7249d2339ec7ace292f2a6e10b69aeccee9440a31f41b7b2661e75e1eca0f41" }, "downloads": -1, "filename": "httptestserver-0.1.0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "d1a0e0cf01c334df963f00dbb7f28f6f", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 12041, "upload_time": "2014-11-12T14:29:00", "url": "https://files.pythonhosted.org/packages/66/e6/4a4c8482116f3eedc4cf36c513203b9ff70733479afc1097aca70b9a61ea/httptestserver-0.1.0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "498fc69ce3967149b51715d4818539f5", "sha256": "43c88dfcf74259a718606e5b685b64a1e34b5a848eab95e906f08eddd22efb9c" }, "downloads": -1, "filename": "httptestserver-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "498fc69ce3967149b51715d4818539f5", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 11012, "upload_time": "2014-11-12T14:29:03", "url": "https://files.pythonhosted.org/packages/fa/c9/b65c19ba695edfd689926da9c7d7b1d8fb4a806c76b2f786ac25d2fbe2ad/httptestserver-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02217a72485b7fb82e9d1650674778e9", "sha256": "3fe28da8872adb373acbcdd31a498212012e226c050f65c63c6ff1d9fcf5aff3" }, "downloads": -1, "filename": "httptestserver-0.1.0.tar.gz", "has_sig": false, "md5_digest": "02217a72485b7fb82e9d1650674778e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8490, "upload_time": "2014-11-12T14:28:57", "url": "https://files.pythonhosted.org/packages/b0/60/5e181dd838800eba3c57a10b435cbf4d4fd40d54a7a9a9d7ac6dd9ded039/httptestserver-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "de605e6be6d857387f5280dc12707c71", "sha256": "3f6de2c320ecc40933c13e126ca30207cefc618e22fa2cf9f501c5bd35ea5546" }, "downloads": -1, "filename": "httptestserver-0.1.1-py3.4.egg", "has_sig": false, "md5_digest": "de605e6be6d857387f5280dc12707c71", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 15671, "upload_time": "2014-11-13T11:00:47", "url": "https://files.pythonhosted.org/packages/0e/4c/0ace38d15355223d825a15daca40a9e352595b621cf3deca08b2e1f1bcda/httptestserver-0.1.1-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "575468d45597307f3fdd75a6357b0a17", "sha256": "00fe6797dc00eae09debe1789eb0482401d4bf87d20d005f323645431999656f" }, "downloads": -1, "filename": "httptestserver-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "575468d45597307f3fdd75a6357b0a17", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 11179, "upload_time": "2014-11-13T11:00:50", "url": "https://files.pythonhosted.org/packages/0a/a0/14541b896594a9d1de09b27e21b8baf3e236533a2e33799faad87cbb1111/httptestserver-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e75d1ff5c1307ad5467d90aac18d2ddd", "sha256": "3bde4a0b28c9e76a6196a85b670fa348ba3e30fc4ec2aa9dff0ea8cef4c5d6b0" }, "downloads": -1, "filename": "httptestserver-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e75d1ff5c1307ad5467d90aac18d2ddd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8669, "upload_time": "2014-11-13T11:00:44", "url": "https://files.pythonhosted.org/packages/cf/26/7665fc15459790f0bd8306dcc969acfcd0b4e3e601a0db1e44f670a6430c/httptestserver-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "21925159469689ffd781fe4e11f68cd0", "sha256": "630f8a24386d9b66a53e3fbc3c5d7511a5a6d39bd5e300b862d7e5083f3aa127" }, "downloads": -1, "filename": "httptestserver-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "21925159469689ffd781fe4e11f68cd0", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13212, "upload_time": "2015-02-10T23:19:46", "url": "https://files.pythonhosted.org/packages/1f/ad/8c405e04b5df0fdcc89d196b001280b7d43a74cf9e5600bdaef3b67d6b32/httptestserver-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9baa271b0ddc55690ebd69cf35397b4e", "sha256": "7d386099a3735b225c0f16ec35ed19cabf9271b2ae8c1f1b64eb07cc9e694dd0" }, "downloads": -1, "filename": "httptestserver-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9baa271b0ddc55690ebd69cf35397b4e", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 13213, "upload_time": "2015-02-10T23:19:35", "url": "https://files.pythonhosted.org/packages/09/94/d50e0fbea2277f1d6a84921cff0928883695b3d7c6b56fc98223d22726a8/httptestserver-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d916dc0bdfb070727b3c64872a090978", "sha256": "94cdc1eb9ce05df27ca8725ba8d454a26bd05169cdde2b12d9cba5b4f6558ab0" }, "downloads": -1, "filename": "httptestserver-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d916dc0bdfb070727b3c64872a090978", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9970, "upload_time": "2015-02-10T23:19:32", "url": "https://files.pythonhosted.org/packages/e7/49/346c4017fa7114973b47b108eca0213513b0567da811d5a6a7d6d8c8348e/httptestserver-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "796b7d8c1f5cf295f0742f67089741ec", "sha256": "d42ec923926d6f65b4b98c123add075746b8a4a729220b5c2dc2ada513d6930c" }, "downloads": -1, "filename": "httptestserver-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "796b7d8c1f5cf295f0742f67089741ec", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13346, "upload_time": "2015-02-14T00:11:30", "url": "https://files.pythonhosted.org/packages/14/5a/9af232b3dbbee607834b609c3537743c226b2d777a035f7d7e7e8fd9cf20/httptestserver-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2a5d2a40f0fa740702e767b754ba15b", "sha256": "dc8544fc3cb147855e8b5446de9527b47891d4e55002289c9710f9afa596b798" }, "downloads": -1, "filename": "httptestserver-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c2a5d2a40f0fa740702e767b754ba15b", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 13347, "upload_time": "2015-02-14T00:11:22", "url": "https://files.pythonhosted.org/packages/e2/46/7fbd97b750cf4e2994bc3f93d84692927c3908bee88bcc9dcf7bd3a02bae/httptestserver-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2af716d2d3eb9487a51ab1629f75bfd0", "sha256": "a3a71456068a70878ec75054879c0211a5803f692a0ac4174df83c760903e359" }, "downloads": -1, "filename": "httptestserver-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2af716d2d3eb9487a51ab1629f75bfd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10248, "upload_time": "2015-02-14T00:11:19", "url": "https://files.pythonhosted.org/packages/bb/08/5f87a76899c5e54a844cc0142eaecf37f4a7bfa52dc8944fd90c1903563f/httptestserver-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "beb1af4a7072ada49444fb807ed59058", "sha256": "614b59aa99ab3040f7a382633ddbe3ff249b3b22ccf3195ce681cc48aca438b6" }, "downloads": -1, "filename": "httptestserver-0.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "beb1af4a7072ada49444fb807ed59058", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14027, "upload_time": "2015-02-20T20:26:44", "url": "https://files.pythonhosted.org/packages/82/97/75e977454d48c10248b577614cf1fa953cc187b59af0f75cc6e91e114378/httptestserver-0.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bcdaa283e4db90fe3a965cef9af3b8b", "sha256": "8b4b4d4a6d40cd0f298eb6568cfe2947fa1de89faa7d7922b538a88e36607db7" }, "downloads": -1, "filename": "httptestserver-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8bcdaa283e4db90fe3a965cef9af3b8b", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 14032, "upload_time": "2015-02-20T20:26:29", "url": "https://files.pythonhosted.org/packages/41/bb/4224902eca5effb76f8b3ca55f638e2cc61b8dc270499105d75baf86a7cf/httptestserver-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3047cd076282184dc8177fabd452d70a", "sha256": "d552b5dc72d8a9b8647bbcd7918de21bb2939930bb80218110df7227981d72fa" }, "downloads": -1, "filename": "httptestserver-0.3.0.tar.gz", "has_sig": false, "md5_digest": "3047cd076282184dc8177fabd452d70a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11149, "upload_time": "2015-02-20T20:26:27", "url": "https://files.pythonhosted.org/packages/67/94/ac3f0411694c7fc5f62a6ce1a4757f3370cdcb7cfde45357ed371b414fde/httptestserver-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a7d696207c1525890cd3e9b06fdbf116", "sha256": "6800ed6bc95ff136062c3053d6696d6f3334cddd33510f708b88d2069384f881" }, "downloads": -1, "filename": "httptestserver-0.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "a7d696207c1525890cd3e9b06fdbf116", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14036, "upload_time": "2015-10-07T19:54:33", "url": "https://files.pythonhosted.org/packages/b1/38/17745987a46733728263c42fd01bfc813994eae056b6b8083085990c186c/httptestserver-0.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e15ece2eb0481ef5c069466df42cf73", "sha256": "5e26dbc53a0c43408d77a0bf4d031c9bc6a3a7dd6b4a40361ba9bcadff18850c" }, "downloads": -1, "filename": "httptestserver-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4e15ece2eb0481ef5c069466df42cf73", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 14034, "upload_time": "2015-10-07T19:54:22", "url": "https://files.pythonhosted.org/packages/bc/37/06b986313cf02a786e617d22520f502e197b36328bc368fb42ab3a88b96f/httptestserver-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7501102f820486793ba18e1a9b7d28a7", "sha256": "80c2bde499afe275ea2327b0c5151efca8080368c22b8bd8ff4aae9d81b65a80" }, "downloads": -1, "filename": "httptestserver-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7501102f820486793ba18e1a9b7d28a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11153, "upload_time": "2015-10-07T19:54:18", "url": "https://files.pythonhosted.org/packages/2b/5a/1f9f20104a59083e36ca017ffc793d7fdc02342cb05034e40e8c3f0c0392/httptestserver-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a7d696207c1525890cd3e9b06fdbf116", "sha256": "6800ed6bc95ff136062c3053d6696d6f3334cddd33510f708b88d2069384f881" }, "downloads": -1, "filename": "httptestserver-0.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "a7d696207c1525890cd3e9b06fdbf116", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14036, "upload_time": "2015-10-07T19:54:33", "url": "https://files.pythonhosted.org/packages/b1/38/17745987a46733728263c42fd01bfc813994eae056b6b8083085990c186c/httptestserver-0.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e15ece2eb0481ef5c069466df42cf73", "sha256": "5e26dbc53a0c43408d77a0bf4d031c9bc6a3a7dd6b4a40361ba9bcadff18850c" }, "downloads": -1, "filename": "httptestserver-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4e15ece2eb0481ef5c069466df42cf73", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 14034, "upload_time": "2015-10-07T19:54:22", "url": "https://files.pythonhosted.org/packages/bc/37/06b986313cf02a786e617d22520f502e197b36328bc368fb42ab3a88b96f/httptestserver-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7501102f820486793ba18e1a9b7d28a7", "sha256": "80c2bde499afe275ea2327b0c5151efca8080368c22b8bd8ff4aae9d81b65a80" }, "downloads": -1, "filename": "httptestserver-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7501102f820486793ba18e1a9b7d28a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11153, "upload_time": "2015-10-07T19:54:18", "url": "https://files.pythonhosted.org/packages/2b/5a/1f9f20104a59083e36ca017ffc793d7fdc02342cb05034e40e8c3f0c0392/httptestserver-0.3.1.tar.gz" } ] }