diff tests/test_wsgi.txt @ 59:26139fb1de98

move to a more appropriate name
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 01 Mar 2012 15:39:26 -0800
parents tests/doctest.txt@6bfe6c59b64a
children 83327bc715be
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_wsgi.txt	Thu Mar 01 15:39:26 2012 -0800
@@ -0,0 +1,114 @@
+Test simpypi
+============
+
+Test the WSGI app with mock requests from ``paste.fixture.TestApp``.
+
+The obligatory imports::
+
+    >>> import os
+    >>> import pkginfo
+    >>> import shutil
+    >>> import simpypi
+    >>> import subprocess
+    >>> import tarfile
+    >>> import tempfile
+    >>> from paste.fixture import TestApp
+
+The directory is initially empty::
+
+    >>> os.listdir(directory)
+    []
+
+Make a test application::
+
+    >>> app = simpypi.SimPyPI(directory)
+    >>> testapp = TestApp(app)
+
+Upload a package::
+
+    >>> field = 'package'
+    >>> filename = 'HelloWorld-0.0.tar.gz'
+    >>> contents = file(os.path.join(here, filename)).read()
+    >>> response = testapp.post('/', upload_files=[(field, filename, contents)])
+
+Ensure that package is in the right place::
+
+    >>> os.listdir(directory)
+    ['HelloWorld']
+    >>> os.listdir(os.path.join(directory, 'HelloWorld'))
+    ['HelloWorld-0.0.tar.gz']
+
+Ensure the package is what you expect it to be::
+
+    >>> path = os.path.join(directory, 'HelloWorld', 'HelloWorld-0.0.tar.gz')
+    >>> sdist = pkginfo.sdist.SDist(path)
+    >>> sdist.name
+    'HelloWorld'
+    >>> sdist.version
+    '0.0'
+    >>> sdist.home_page
+    'http://helloworld.example.com/'
+    >>> sdist.author
+    'Jeff Hammel'
+
+Unpack the archive and ensure the files are there::
+
+    >>> tmpdir = tempfile.mkdtemp()
+    >>> archive = tarfile.TarFile.open(path)
+    >>> for member in archive.getmembers():
+    ...     archive.extract(member, path=tmpdir)
+    >>> os.listdir(tmpdir)
+    ['HelloWorld-0.0']
+    >>> srcdir = os.path.join(tmpdir, 'HelloWorld-0.0')
+    >>> os.path.exists(os.path.join(srcdir, 'setup.py'))
+    True
+    >>> 'helloworld' in os.listdir(srcdir)
+    True
+    >>> os.listdir(os.path.join(srcdir, 'helloworld'))
+    ['__init__.py']
+
+Install the package and inspect the installation::
+
+    >>> python = create_virtualenv(tmpdir)
+
+You should not be able to import ``helloworld`` yet::
+
+    >>> code = subprocess.call([python, '-c', 'import helloworld'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    >>> code
+    1
+
+But after installation you should::
+
+    >>> subprocess.call([python, 'setup.py', 'install'], cwd=srcdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    0
+    >>> code = subprocess.call([python, '-c', 'import helloworld'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    >>> code
+    0
+    >>> process = subprocess.Popen([python, '-c', 'import helloworld; print helloworld.hello'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    >>> stdout, stderr = process.communicate()
+    >>> process.returncode
+    0
+    >>> stdout
+    'Hello, world!\n'
+    >>> shutil.rmtree(tmpdir)
+
+Upload the same package but with the wrong name::
+
+    >>> shutil.rmtree(os.path.join(directory, 'HelloWorld'))
+    >>> os.listdir(directory)
+    []
+    >>> response = testapp.post('/', upload_files=[(field, 'MisleadingName.tar.gz', contents)])
+    >>> os.listdir(directory)
+    ['HelloWorld']
+    >>> os.listdir(os.path.join(directory, 'HelloWorld'))
+    ['HelloWorld-0.0.tar.gz']
+    >>> shutil.rmtree(os.path.join(directory, 'HelloWorld'))
+    >>> os.listdir(directory)
+    []
+    >>> filename = 'MisleadingFilename.tar.gz'
+    >>> contents = file(os.path.join(here, filename)).read()
+    >>> response = testapp.post('/', upload_files=[(field, filename, contents)])
+    >>> os.listdir(directory)
+    ['HelloWorld']
+    >>> os.listdir(os.path.join(directory, 'HelloWorld'))
+    ['HelloWorld-0.0.tar.gz']