# Acts\_as\_authenticated plugin test help

**URL:** <https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261>\
**Category:** Rails\
**Created:** [December 13, 2006, 6:14pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261 "2006-12-13T18:14:56Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [December 13, 2006, 6:14pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261/1 "2006-12-13T18:14:56Z")

</div>

Hi,  
We are using acts\_as\_authenticated plugin latest version as of a couple  
of days back.

The before\_filter :login\_required was added to the application  
controller. So far so good.

However the functional tests are all failing as one would expect  
(perhaps not me though) witha 302 … exactly - no one is logged in.  
This is correct behaviour but a pain when function testing.

Is there a suggested/recommended course of action to handle this ? I  
have looked around but have been unsuccessful.

PS. I am using the AuthenticatedTestHelper and its _login\_as_ method.  
However this requires that every test method must login. I was just  
looking  
for a differnet way … if there is one. = )

Thank you for all and any help.  
sinclair

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [December 13, 2006, 10:41pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261/2 "2006-12-13T22:41:49Z")

</div>

For testing controllers which require login, there was a thread earlier  
on  
this list, search for the thread “Testing Actions Requiring A Login”.  
The Rails Recipes book has a recipe that shows another way to deal with  
this  
problem. It shows how to stub out the login functionality so that you  
can  
focus on the core application functionality.

I am using RESTful authentication plugin and I am still figuring out how  
to  
use the suggestions from the above thread. Last night I was getting  
error  
message when I passed in the user\_id, I have to look at the source for  
the  
generated code so that I can replicate the login in the functional test.  
I  
will post an update when I make progress.

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [December 14, 2006, 5:38am UTC](https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261/3 "2006-12-14T05:38:51Z")

</div>

I resolved my problem. For RESTful authentication, there is a  
login\_as(user) method in AuthenticatedTestHelper module that sets the  
current user  
in the session from the user fixtures. This is under the lib directory.

In my functional test, I have:

def test\_should\_show\_billing\_profile\_for\_valid\_login  
login\_as (:aaron)  
get :show, :id =\> :aaron.id  
assert\_response :success  
assert\_select “html:root\>head\>title”, “BillingProfiles: show”  
end

users.yml looks like this:

quentin:  
id: 1  
login: quentin  
email: removed\_email\_address@domain.invalid  
salt: 7e3041ebc2fc05a40c60028e2c4901a81035d3cd  
crypted\_password: 00742970dc9e6319f8019fd54864d3ea740f04b1 # test  
created\_at: \<%= 5.days.ago.to\_s :db %\>  
aaron:  
id: 2  
login: aaron  
email: removed\_email\_address@domain.invalid  
salt: 7e3041ebc2fc05a40c60028e2c4901a81035d3cd  
crypted\_password: 00742970dc9e6319f8019fd54864d3ea740f04b1 # test  
created\_at: \<%= 1.days.ago.to\_s :db %\>

class BillingProfilesController \< ApplicationController

before\_filter :login\_required

def show  
@user = User.find(session[:user], :include =\> [:billing\_profile])  
@billing\_profile = @user.billing\_profile

```
respond_to do |format|
  format.html # show.rhtml
  format.xml { render :xml => @billing_profile.to_xml }
end

```

end

The problem was that I was using session[:user\_id] in my controller  
whereas the RESTful authentication  
module is using session[:user] as shown below:

module AuthenticatedTestHelper

# Sets the current user in the session from the user fixtures.

def login\_as(user)  
@request.session[:user] = user ? users(user).id : nil  
end  
…

So I changed my controller code to use session[:user] and my tests now  
pass! The plugin itself has the API to help you do the functional  
testing. Very nice indeed.

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [December 14, 2006, 4:50pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261/4 "2006-12-14T16:50:03Z")

</div>

Thanks Bala!  
This is the approach I have taken.

sinclair

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [December 14, 2006, 10:59pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated-plugin-test-help/79261/5 "2006-12-14T22:59:13Z")

</div>

RESTful authentication is derived from AAA, so it looks like they are  
very  
similar. Keep the bar green! I am addicted to autotest now…
