I have been working with restful_authentication. I have made some
changes to it and now I'm trying to get all the default tests that
came with the plugin to pass.
Here's one of the tests that error out:
def test_should_require_login_on_signup
assert_no_difference 'User.count' do
create_user(:login => nil)
assert assigns(:user).errors.on(:login)
assert_response :success
end
end
This is the error:
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.errors
When using running debugger and checking in on assigns(:user) it
returns nil, so I assume this is the trouble.
Finally here's my question, what is "create_user" doing? Is it
creating a new User based upon the users.yml fixture that the test
suit is loading, or is it something else? I couldn't find reference
for this "dynamic??" method anywhere.
Basically, I just need to know what "create_user" is doing? Is it
creating a new User based upon the users.yml fixture that the test
suit is loading, or is it something else? I couldn't find reference
for this "dynamic??" method anywhere.
def test_should_require_login_on_signup
assert_no_difference 'User.count' do
create_user(:login => nil)
assert assigns(:user).errors.on(:login)
assert_response :success
end
end
If you look down the end of the file with that code in you will find the definition of create_user. At least in my version anyway. I found it by a global search, but I realised when it found it that I should have looked in that file first.
I am assuming that somehow @user is being returned or something?
Because, assigns(:user) is being called on the next line??
Is that the case, and further any ideas why its coming up Nil? Testing
in script/console test shows that creating a new User works fine and I
know the fixture data is in the users table as it should be?
I can’t help with this as I have tweaked the create code so it is non-standard. Is there a before_filter in UsersController, if so then it may be failing in there.
A before_filter redirect in role_reqirement_system#access_denied is
halting things before the create action of the user controller could
be called. Not really sure how test around this as the redirect is a
key part of how r_r works. Any thoughts on getting around situations
like this?
I don’t know about role_requirement_system I am afraid, so only guesswork follows. If I understand correctly the problem is that the restful authentication tests are failing because the role requirement conditions are not satisfied by the test conditions. Possibly you have to adjust the test fixtures and possibly test code so that the users in the fixtures have appropriate roles to satisfy the tests.