Restful controllers with different content types

Simplified example of a controller which takes a POST with a non-xml
and non-form-urlencoded content type:

class PhotosController < ApplicationController
def create
Photo.create :binary_data => request.body.read, :content_type =>
‘image/jpg’
head :ok
end
end

How can I spec this? The way that I’d like to do it would be something
like:

it “creates a new photo from a posted image file” do
Photo.should_receive(:create).with(:binary_data => ‘the data’,
:content_type => ‘image/jpg’)
post :create, :body => ‘the data’
end

Adam

On Apr 25, 2008, at 11:34 PM, “Adam W.” [email protected] wrote:

How can I spec this? The way that I’d like to do it would be
something like:

it “creates a new photo from a posted image file” do
Photo.should_receive(:create).with(:binary_data => ‘the data’,
:content_type => ‘image/jpg’)
post :create, :body => ‘the data’
end

What happens when you try this?

On Sat, Apr 26, 2008 at 1:33 AM, David C. [email protected]
wrote:

On Apr 25, 2008, at 11:34 PM, “Adam W.” [email protected] wrote:

it “creates a new photo from a posted image file” do
Photo.should_receive(:create).with(:binary_data => ‘the data’,
:content_type => ‘image/jpg’)
post :create, :body => ‘the data’
end

What happens when you try this?

It treats :body as a regular urlencoded parameter. i.e., the body of
the POST sent through to the controller is “body=the+data”, when I
want it to be “the data”.

There’s the matter of content-type too; I left that out in hopes if
simplifying the question. The more complete version might be:

post :create, :content_type => ‘image/jpg’, :body => ‘the data’

But :content_type and :body are not treated as special parameters, so
I was wondering if there is some other mechanism for doing this.

Adam

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs