summaryrefslogtreecommitdiff
path: root/docs/quick_tutorial/request_response
diff options
context:
space:
mode:
Diffstat (limited to 'docs/quick_tutorial/request_response')
-rw-r--r--docs/quick_tutorial/request_response/development.ini10
-rw-r--r--docs/quick_tutorial/request_response/setup.py13
-rw-r--r--docs/quick_tutorial/request_response/tutorial/__init__.py9
-rw-r--r--docs/quick_tutorial/request_response/tutorial/tests.py54
-rw-r--r--docs/quick_tutorial/request_response/tutorial/views.py22
5 files changed, 108 insertions, 0 deletions
diff --git a/docs/quick_tutorial/request_response/development.ini b/docs/quick_tutorial/request_response/development.ini
new file mode 100644
index 000000000..4d47e54a5
--- /dev/null
+++ b/docs/quick_tutorial/request_response/development.ini
@@ -0,0 +1,10 @@
+[app:main]
+use = egg:tutorial
+pyramid.reload_templates = true
+pyramid.includes =
+ pyramid_debugtoolbar
+
+[server:main]
+use = egg:pyramid#wsgiref
+host = 0.0.0.0
+port = 6543
diff --git a/docs/quick_tutorial/request_response/setup.py b/docs/quick_tutorial/request_response/setup.py
new file mode 100644
index 000000000..9997984d3
--- /dev/null
+++ b/docs/quick_tutorial/request_response/setup.py
@@ -0,0 +1,13 @@
+from setuptools import setup
+
+requires = [
+ 'pyramid',
+]
+
+setup(name='tutorial',
+ install_requires=requires,
+ entry_points="""\
+ [paste.app_factory]
+ main = tutorial:main
+ """,
+) \ No newline at end of file
diff --git a/docs/quick_tutorial/request_response/tutorial/__init__.py b/docs/quick_tutorial/request_response/tutorial/__init__.py
new file mode 100644
index 000000000..77a172888
--- /dev/null
+++ b/docs/quick_tutorial/request_response/tutorial/__init__.py
@@ -0,0 +1,9 @@
+from pyramid.config import Configurator
+
+
+def main(global_config, **settings):
+ config = Configurator(settings=settings)
+ config.add_route('home', '/')
+ config.add_route('plain', '/plain')
+ config.scan('.views')
+ return config.make_wsgi_app() \ No newline at end of file
diff --git a/docs/quick_tutorial/request_response/tutorial/tests.py b/docs/quick_tutorial/request_response/tutorial/tests.py
new file mode 100644
index 000000000..7486c2b2d
--- /dev/null
+++ b/docs/quick_tutorial/request_response/tutorial/tests.py
@@ -0,0 +1,54 @@
+import unittest
+
+from pyramid import testing
+
+
+class TutorialViewTests(unittest.TestCase):
+ def setUp(self):
+ self.config = testing.setUp()
+
+ def tearDown(self):
+ testing.tearDown()
+
+ def test_home(self):
+ from .views import TutorialViews
+
+ request = testing.DummyRequest()
+ inst = TutorialViews(request)
+ response = inst.home()
+ self.assertEqual(response.status, '302 Found')
+
+ def test_plain_without_name(self):
+ from .views import TutorialViews
+
+ request = testing.DummyRequest()
+ inst = TutorialViews(request)
+ response = inst.plain()
+ self.assertIn(b'No Name Provided', response.body)
+
+ def test_plain_with_name(self):
+ from .views import TutorialViews
+
+ request = testing.DummyRequest()
+ request.GET['name'] = 'Jane Doe'
+ inst = TutorialViews(request)
+ response = inst.plain()
+ self.assertIn(b'Jane Doe', response.body)
+
+
+class TutorialFunctionalTests(unittest.TestCase):
+ def setUp(self):
+ from tutorial import main
+
+ app = main({})
+ from webtest import TestApp
+
+ self.testapp = TestApp(app)
+
+ def test_plain_without_name(self):
+ res = self.testapp.get('/plain', status=200)
+ self.assertIn(b'No Name Provided', res.body)
+
+ def test_plain_with_name(self):
+ res = self.testapp.get('/plain?name=Jane%20Doe', status=200)
+ self.assertIn(b'Jane Doe', res.body)
diff --git a/docs/quick_tutorial/request_response/tutorial/views.py b/docs/quick_tutorial/request_response/tutorial/views.py
new file mode 100644
index 000000000..8c7ff5f37
--- /dev/null
+++ b/docs/quick_tutorial/request_response/tutorial/views.py
@@ -0,0 +1,22 @@
+from pyramid.httpexceptions import HTTPFound
+from pyramid.response import Response
+from pyramid.view import view_config
+
+
+class TutorialViews:
+ def __init__(self, request):
+ self.request = request
+
+ @view_config(route_name='home')
+ def home(self):
+ return HTTPFound(location='/plain')
+
+ @view_config(route_name='plain')
+ def plain(self):
+ name = self.request.params.get('name', 'No Name Provided')
+
+ body = 'URL %s with name: %s' % (self.request.url, name)
+ return Response(
+ content_type='text/plain',
+ body=body
+ )