Add authentication and User model

* Add User model
* Add SessionsController
* Add password authentication on User
* Request authentication for all actions except sign in
* Add some helpers for ApplicationController
* Update features to work with mandatory authentication
This commit is contained in:
Thibault Jouan
2011-08-04 09:50:17 +00:00
parent 18b254e3d1
commit 7bf4d4c5f9
22 changed files with 276 additions and 3 deletions

View File

@@ -0,0 +1,21 @@
require 'spec_helper'
describe ApplicationController do
let(:user) { Factory.create(:user) }
describe '#current_user=' do
it 'stores the user id in the session as :user_id' do
controller.current_user = user
session[:user_id].should == user.id
end
end
describe '#current_user' do
context 'when session[:user_id] is set' do
it 'returns the User instance from the session' do
session[:user_id] = user.id
controller.current_user.should == user
end
end
end
end

View File

@@ -1,6 +1,10 @@
require 'spec_helper'
describe HomeController do
before do
controller.current_user = Factory.create(:user)
end
describe 'GET index' do
it 'assigns all playlists as @playlists' do
playlist = Factory.create(:playlist)

View File

@@ -1,6 +1,10 @@
require 'spec_helper'
describe PlaylistsController do
before do
controller.current_user = Factory.create(:user)
end
describe 'GET index' do
it 'assigns all playlists as @playlists' do
playlist = Factory.create(:playlist)

View File

@@ -0,0 +1,40 @@
require 'spec_helper'
describe SessionsController do
describe 'GET new' do
it 'responds successfully' do
response.should be_success
end
end
describe 'POST create' do
context 'when the user submit invalid credentials' do
it 'renders the new template' do
User.stub(:authenticate).and_return(false)
post :create,
:session => Factory.attributes_for(:user, :password => 'WRONG')
response.should render_template('new')
end
end
context 'when the user submit valid credentials' do
let(:user) { Factory.create(:user) }
before do
User.stub(:authenticate).and_return(user)
end
it 'signs the user in' do
post :create, :session => Factory.attributes_for(:user)
controller.current_user.should == user
end
it 'redirects to the home page' do
post :create, :session => Factory.attributes_for(:user)
response.should redirect_to(:root)
end
end
end
describe 'DELETE destroy' do
end
end

View File

@@ -1,6 +1,10 @@
require 'spec_helper'
describe TracksController do
before do
controller.current_user = Factory.create(:user)
end
describe 'GET show' do
it 'assigns the requested track as @track' do
track = Factory.create(:track)