PreciousBodilyFluids
PreciousBodilyFluids

Reputation: 12001

How should I test request-related logic in Rails development?

I have several before_filters defined in my application controller to handle requests I don't like. One representative example is:

before_filter :reject_www

private

def reject_www
  if request.subdomains.include? 'www'
    redirect_to 'http://example.com' + request.path, :status => 301
    false
  end
end

(Returning false skips any following before_filters and simply returns the redirection immediately)

So, two questions:

One, how should I test this functionality? The only testing framework I've used so far is Cucumber + Webrat, which isn't really set up to handle this kind of thing. Is there another framework I should also use to fake requests like this?

Two, is there any way I can try out this functionality myself in my development environment? Since I'm simply browsing the site at localhost:3000, I can't ensure that the above code works in my browser - I'd have to push it to production, hope it works and hope it doesn't mess up anything for anyone in the meantime, which makes me nervous. Is there an alternative?

Upvotes: 0

Views: 155

Answers (2)

NM.
NM.

Reputation: 1929

To address #2
You can add entries in your hosts file so that www.mydomain.com points to your local host and then test the logic in your development environment . You can try hosting it using passenger so that it works on apache . Hope that helps .

Upvotes: 0

Lytol
Lytol

Reputation: 990

In a functional test, you can explicitly set the request host. I'm not sure what testing framework you prefer, so here is an example in good ole' Test::Unit.

def test_should_redirect_to_non_www
  @request.host = 'www.mydomain.com'
  get :index
  assert_redirected_to 'http://mydomain.com/'
end

Upvotes: 1

Related Questions