Sometimes, we want to upload binary files. Particulary in Selenium tests, it is nearly impossible to correctly input binary data - so we allow the user to specify base64 encoded data to be uploaded. This is accomplished by using a hidden input field that holds the value of the encoding desired.
>>> import zope.schema
>>> from z3c.form import widget
>>> from z3c.form import testing
As in converter.txt, we want to test a file upload widget.
>>> filedata = zope.schema.Text(
... __name__='data',
... title=u'Some data to upload',)
Lets try passing a simple string, and not specify any encoding.
>>> dataWidget = widget.Widget(testing.TestRequest( ... form={'data.testing': 'haha'})) >>> dataWidget.name = 'data'>>> conv = testing.TestingFileUploadDataConverter(filedata, dataWidget) >>> conv.toFieldValue('') 'haha'
And now, specify a encoded string
>>> encStr = 'hoohoo'.encode('base64') >>> dataWidget = widget.Widget(testing.TestRequest( ... form={'data.testing': encStr, 'data.encoding': 'base64'})) >>> dataWidget.name = 'data'>>> conv = testing.TestingFileUploadDataConverter(filedata, dataWidget) >>> conv.toFieldValue('') 'hoohoo'