Hi all;
Being one of those RonR/Hoboists learning a lot of testing *after* having
written the application (>cough<), I'm experiencing a little
head-scratching about testing a controller other than the UsersController.
Could anyone enlighten me as to how to properly test a controller in Hobo
that requires a user to be logged in?
For example, with a TitlesController, the #index action in my application
is only available to an authenticated user. So, I want to test as follows:
describe "TitlesController" do
it "Authenticated user must see Titles index" do
# User needs to be logged in. How?
get :index
it { must render_template(:index) }
it { must respond_with(:success) }
end
end
But, anything I do inside the it..do..end block works with the context of
the TitlesController.
So, even if I do this:
it "Authenticated user must see Titles index" do
post :login, :controller => :users, :login => "m
<[email protected]>[email protected]",
:password => "Test123"
get :index
or
it "Authenticated user must see Titles index" do
post "http://localhost:3000/login", :login => "n
<[email protected]>[email protected]",
:password => "Test123"
get :index
the post directives pretty much get garbled thinking that the login post is
for the TitlesController:
0001 Authenticated user must see Titles index
ERROR
No route matches {:login=>"[email protected]", :password=>"Test123",
:controller=>"titles", :action=>"http://localhost:3000/login"}
So, what's the best way to get the user authenticated within a specific
controller test?
I know I can do this:
it "Authenticated user must see Titles index" do
session = ActionDispatch::Integration::Session.new(Rails.application)
session.post ('http://localhost:3000/login'), :login =>
"[email protected]", :password => "Test123"
session.get('http://localhost:3000/titles')
titles_html = session.response.body
assert(titles_html ... )
end
But, is building my own session in each test the only way to circumvent the
assumed context of the TitlesController for a login?
Many thanks,
Tim
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/hobousers?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.