doctest added.

svn path=/plone.formwidget.captcha/trunk/; revision=28707
This commit is contained in:
Timo Stollenwerk 2009-08-11 21:21:35 +00:00
parent d64166e45e
commit 56c7d377ec
2 changed files with 69 additions and 3 deletions

View File

@ -0,0 +1,66 @@
Captcha widget
==============
plone.formwidget.captcha provides a captcha widget based on the
collective.captcha widget.
>>> from plone.formwidget.captcha import CaptchaFieldWidget
First, set up a simple test form and context.
>>> from zope.interface import alsoProvides
>>> from zope.publisher.browser import TestRequest
>>> from zope.annotation.interfaces import IAttributeAnnotatable
>>> from z3c.form.interfaces import IFormLayer
>>> def make_request(path, form={}):
... request = TestRequest()
... request.form.update(form)
... alsoProvides(request, IFormLayer)
... alsoProvides(request, IAttributeAnnotatable)
... request._traversed_names = path.split('/')
... return request
>>> from zope.interface import Interface
>>> from zope import schema
>>> from z3c.form import form, field, button
>>> from plone.z3cform.layout import wrap_form
>>> class ICaptchaForm(Interface):
... subject = schema.TextLine(title=u"Subject",
... description=u"",
... required=True)
...
... captcha = schema.TextLine(title=u"Captcha",
... description=u"",
... required=False)
>>> from z3c.form.interfaces import IFieldsForm
>>> from zope.interface import implements
>>> class CaptchaForm(form.Form):
... implements(ICaptchaForm)
... fields = field.Fields(ICaptchaForm)
... fields['captcha'].widgetFactory = CaptchaFieldWidget
...
... @button.buttonAndHandler(u'Apply')
... def handleApply(self, action):
... data, errors = self.extractData()
... if data.has_key('captcha'):
... # Verify the user input against the captcha
... captcha = CaptchaValidator(self.context, self.request, None, ICaptchaForm['captcha'], None)
... if data.has_key('subject') and captcha.validate(data['captcha']):
... # if captcha validation passes, print the subject
... print data['subject']
... return
>>> form_view = wrap_form(CaptchaForm)
>>> from zope.component import provideAdapter
>>> from zope.publisher.interfaces.browser import IBrowserRequest
>>> from zope.interface import Interface
>>> provideAdapter(adapts=(ICaptchaForm, IBrowserRequest),
... provides=Interface,
... factory=form_view,
... name=u"captcha-form")

View File

@ -30,9 +30,9 @@ def test_suite():
return unittest.TestSuite([
# Unit tests
#doctestunit.DocFileSuite(
# 'README.txt', package='plone.formwidget.captcha',
# setUp=testing.setUp, tearDown=testing.tearDown),
doctestunit.DocFileSuite(
'README.txt', package='plone.formwidget.captcha',
setUp=testing.setUp, tearDown=testing.tearDown),
#doctestunit.DocTestSuite(
# module='plone.formwidget.captcha.mymodule',