Skip to content

test POST request with content type of multipart/form-data and a file in body #8

@signalw

Description

@signalw

I have a route like this:

@app.post('/submit')
def submit():
    img = bottle.request.files['img']
    img.save('/srv/images')

It's for getting and saving an image file from user. To test that, with boddle, I tried this:

imgFile = FileUpload(object(), 'test', 'test')
fd = FormsDict()
fd['img'] = imgFile
with boddle(method='post', path='/submit', files=fd):
  submit()

When I call submit() inside boddle, I've got a KeyError: 'img' exception. Then I realized bottle.request.files is not set because it just can't be overwritten.

BTW, while examining this, I opened #7 with more details about how it can't be overwritten.

So how are we supposed to test that? Should we add a new parameter for boddle and handle that properly? I think we can take in something like files=[(fileobj, fieldname, filename, headers)] and then construct a FormsDict and put it in self.environ. But that would make it look a bit complicated though. I mean right now boddle is very straightforward and I'm not sure if it's a good idea to bring in these things.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions