Search code examples
ruby-on-railsruby-on-rails-3rspec2capybaracloudmailin

rspec/capybara: how to simulate incoming POST requests? (rack-test won't work)


I need to receive incoming emails as multipart-formdata via a POST request from Cloudmailin. The POST resembles the following:

Parameters: {"to"=>"<[email protected]>", "from"=>"whomever@example", "subject"=>"my awesome subject line....

Actually, receiving and parsing emails is super easy because the email is just posted as params: params[:to], params[:from], etc. However, how do I simulate this POST request in rails?

I built a dummy rails app to test out Cloudmailin, so I have an actual request. However, it's a 6k character file, so I'd like to load this file as the parameters of the POST request. I've tried using the built rails post and post_via_redirect methods to load a file, but it escapes all of the parameters( \"to\"), which is no good. Any ideas?


Solution

  • So, I ended up doing:

    @parameters = { "x_to_header"=>"<#{ @detail.info }>",
                    "to"=>"<#{ @account.slug }@cloudmailin.net>",
                    "from"=>"#{ @member.email }",
                    "subject"=>"meeting on Monday",
                    "plain"=>"here is my message\nand this is a new line\n\n\nand two new lines\n\n\n\nand a third new line"
                  }
    

    then just:

    post "/where_ever", @parameters
    

    seems to get the job done for now