Adding HTTP helpers and tests.
This commit is contained in:
parent
d0e639182f
commit
2b9472f309
6 changed files with 18 additions and 8 deletions
|
@ -10,12 +10,11 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import urllib
|
|
||||||
import urllib2
|
|
||||||
|
|
||||||
from pyvows import Vows
|
from pyvows import Vows
|
||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
|
|
||||||
|
from django_pyvows import http_helpers
|
||||||
from django_pyvows.assertions import Url, Model, Template
|
from django_pyvows.assertions import Url, Model, Template
|
||||||
from django_pyvows.server import DjangoServer
|
from django_pyvows.server import DjangoServer
|
||||||
|
|
||||||
|
@ -58,10 +57,10 @@ class DjangoContext(Vows.Context):
|
||||||
return Model(self, model_class)
|
return Model(self, model_class)
|
||||||
|
|
||||||
def get(self, path):
|
def get(self, path):
|
||||||
return urllib2.urlopen(self.get_url(path))
|
return http_helpers.get(self.get_url(path))
|
||||||
|
|
||||||
def post(self, path, params):
|
def post(self, path, params):
|
||||||
return urllib2.urlopen(self.get_url(path), data=urllib.urlencode(params))
|
return http_helpers.post(self.get_url(path), params)
|
||||||
|
|
||||||
def get_url(self, path):
|
def get_url(self, path):
|
||||||
ctx = self.parent
|
ctx = self.parent
|
||||||
|
|
|
@ -77,10 +77,10 @@ def post(url, data):
|
||||||
form = MultiPartForm()
|
form = MultiPartForm()
|
||||||
|
|
||||||
for field, value in data.iteritems():
|
for field, value in data.iteritems():
|
||||||
if isinstance(value, basestring):
|
if hasattr(value, "read"):
|
||||||
form.add_field(field, value)
|
|
||||||
else:
|
|
||||||
form.add_file(field, value.name, value)
|
form.add_file(field, value.name, value)
|
||||||
|
else:
|
||||||
|
form.add_field(field, str(value))
|
||||||
|
|
||||||
request = urllib2.Request(url)
|
request = urllib2.Request(url)
|
||||||
body = str(form)
|
body = str(form)
|
||||||
|
|
|
@ -25,6 +25,9 @@ def say_hello(request):
|
||||||
name = 'guess'
|
name = 'guess'
|
||||||
return HttpResponse("Hello, %s!" % name)
|
return HttpResponse("Hello, %s!" % name)
|
||||||
|
|
||||||
|
def post_it(request):
|
||||||
|
return HttpResponse(request.POST['value'])
|
||||||
|
|
||||||
def get_setting(request, attr):
|
def get_setting(request, attr):
|
||||||
return HttpResponse(str(getattr(settings, attr)))
|
return HttpResponse(str(getattr(settings, attr)))
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,6 @@ TEMPLATE_LOADERS = (
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE_CLASSES = (
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.csrf.CsrfViewMiddleware',
|
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ from django.conf.urls.defaults import patterns, include, url
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^$', 'sandbox.main.views.home', name='home'),
|
url(r'^$', 'sandbox.main.views.home', name='home'),
|
||||||
url(r'^say/$', 'sandbox.main.views.say_hello', name='say_hello'),
|
url(r'^say/$', 'sandbox.main.views.say_hello', name='say_hello'),
|
||||||
|
url(r'^post_it/$', 'sandbox.main.views.post_it', name='post_it'),
|
||||||
url(r'^settings/(?P<attr>[\w_]+)/?$', 'sandbox.main.views.get_setting', name='get_setting'),
|
url(r'^settings/(?P<attr>[\w_]+)/?$', 'sandbox.main.views.get_setting', name='get_setting'),
|
||||||
|
|
||||||
# url(r'^sandbox/', include('sandbox.foo.urls')),
|
# url(r'^sandbox/', include('sandbox.foo.urls')),
|
||||||
|
|
|
@ -48,3 +48,11 @@ class HttpContextVows(DjangoHTTPContext):
|
||||||
def should_say_hello_to_me(self, topic):
|
def should_say_hello_to_me(self, topic):
|
||||||
expect(topic.read()).to_equal('Hello, Rafael!')
|
expect(topic.read()).to_equal('Hello, Rafael!')
|
||||||
|
|
||||||
|
class PostIt(DjangoContext):
|
||||||
|
|
||||||
|
def topic(self):
|
||||||
|
return self.post('/post_it/', {'value': 'posted!'})
|
||||||
|
|
||||||
|
def should_be_posted(self, topic):
|
||||||
|
expect(topic.read()).to_equal('posted!')
|
||||||
|
|
||||||
|
|
Reference in a new issue