Testing Sub-domains with Cucumber


#1

My site uses sub-domains to create a context for the user. In my tests,
I need to stipulate what domain is being used, to test whether the
context is correct for the given user.

But I cannot find if and where i can change the request.host value, if
indeed, that is what I need to change.

When I say ‘visits “/login”’ in a step, I want it to have know to go to
harvey.localhost:3000 for this feature/scenario. In another
feature/scenario, I will want it to go to humbel.localhost:3000 etc.

What would you suggest.

All the best,
Tom


#2

On 14 Jan 2009, at 01:46, Tom H. wrote:

harvey.localhost:3000 for this feature/scenario. In another
feature/scenario, I will want it to go to humbel.localhost:3000 etc.

What would you suggest.

Are we on rails here, or something else? You might be better asking on
the webrat list (google group - check the webrat readme for details)
or IRC, to be honest.

Matt W.
http://blog.mattwynne.net
http://www.songkick.com


#3

Matt W. wrote:

Are we on rails here, or something else? You might be better asking on
the webrat list (google group - check the webrat readme for details)
or IRC, to be honest.

Thanks Matt, I will send a message to the webrat group. It is rails, so
I have the same issue with view specs, but I am trying to solve the
Cucumber issue first, figuring it will help me with the specs.


#4

On Jan 13, 2009, at 8:46 PM, Tom H. wrote:

harvey.localhost:3000 for this feature/scenario. In another
removed_email_address@domain.invalid
http://rubyforge.org/mailman/listinfo/rspec-users

I do:

host! “#{account.to_param}.example.com”

–linoj


#5

On Tue, Jan 13, 2009 at 8:46 PM, Tom H. removed_email_address@domain.invalid wrote:

When I say ‘visits “/login”’ in a step, I want it to have know to go to
harvey.localhost:3000 for this feature/scenario. In another
feature/scenario, I will want it to go to humbel.localhost:3000 etc.

Have you tried telling it “visits http://harvey.localhost:3000/login
instead of just /login?

If that doesn’t work: I remember having to spec some subdomain stuff
for a prior project. Digging into the Rails code, I found the
TestRequest class, and saw in its initializer that by default it sets
the host to ‘test.host’. But it also sets up host as an accessor, so
you can set it to something else after the request gets created.

I’d leave off the :3000 port, though, unless you intend that to be
used in production as well. If you’re in the test environment and
making TestRequests you don’t need it.

(And if you’re in development mode and need to hit against a real
server, I’ve found my life got a whole lot simpler after I set up
Passenger. No need to worry about starting up script/server or
hitting different ports, ever.)


Have Fun,
Steve E. (removed_email_address@domain.invalid)
ESCAPE POD - The Science Fiction Podcast Magazine
http://www.escapepod.org


#6

Jonathan L. wrote:

I do:

host! “#{account.to_param}.example.com”

–linoj

linoj - thanks for the info. Where do you put this?


#7

On Jan 14, 2009, at 11:39 AM, Tom H. wrote:

Posted via http://www.ruby-forum.com/.


rspec-users mailing list
removed_email_address@domain.invalid
http://rubyforge.org/mailman/listinfo/rspec-users

for example,

Given /^a “(.+)” account$/ do |name|
account = Account.create( :name => name )
host! “#{account.to_param}.example.com”
end


#8

Jonathan L. wrote:

On Jan 14, 2009, at 11:39 AM, Tom H. wrote:

Posted via http://www.ruby-forum.com/.


rspec-users mailing list
removed_email_address@domain.invalid
http://rubyforge.org/mailman/listinfo/rspec-users

for example,

Given /^a “(.+)” account$/ do |name|
account = Account.create( :name => name )
host! “#{account.to_param}.example.com”
end

Can somebody point me to the documentation of host!, or explain what is
it.


#9

On 28 Jan 2009, at 14:32, Juanma C. wrote:

is
it.

http://apidock.com/rails/ActionController/Integration/Session/host!

Matt W.
http://blog.mattwynne.net
http://www.songkick.com