| |   |
| 1 | class ProjectsController < ApplicationController |
| 2 | before_filter :login_required, :only => [:create, :update, :destroy, :new] |
| 3 | |
| 4 | def index |
| 5 | @projects = Project.find(:all) |
| 6 | end |
| 7 | |
| 8 | def show |
| 9 | @project = Project.find(params[:id]) |
| 10 | end |
| 11 | |
| 12 | def new |
| 13 | end |
| 14 | |
| 15 | def create |
| 16 | @project = Project.new(params[:project]) |
| 17 | @project.user = current_user |
| 18 | if @project.save |
| 19 | redirect_to projects_path |
| 20 | else |
| 21 | render :action => 'new' |
| 22 | end |
| 23 | end |
| 24 | |
| 25 | def update |
| 26 | @project = Project.find(params[:id]) |
| 27 | @project.attributes = params[:project] |
| 28 | if @project.save |
| 29 | redirect_to project_path(@project) |
| 30 | else |
| 31 | render :action => 'new' |
| 32 | end |
| 33 | end |
| 34 | |
| 35 | def destroy |
| 36 | @project = Project.find(params[:id]) |
| 37 | if @project.destroy |
| 38 | redirect_to projects_path |
| 39 | else |
| 40 | flash[:error] |
| 41 | end |
| 42 | end |
| 43 | end |
| toggle raw diff |
--- /dev/null
+++ b/app/controllers/projects_controller.rb
@@ -0,0 +1,43 @@
+class ProjectsController < ApplicationController
+ before_filter :login_required, :only => [:create, :update, :destroy, :new]
+
+ def index
+ @projects = Project.find(:all)
+ end
+
+ def show
+ @project = Project.find(params[:id])
+ end
+
+ def new
+ end
+
+ def create
+ @project = Project.new(params[:project])
+ @project.user = current_user
+ if @project.save
+ redirect_to projects_path
+ else
+ render :action => 'new'
+ end
+ end
+
+ def update
+ @project = Project.find(params[:id])
+ @project.attributes = params[:project]
+ if @project.save
+ redirect_to project_path(@project)
+ else
+ render :action => 'new'
+ end
+ end
+
+ def destroy
+ @project = Project.find(params[:id])
+ if @project.destroy
+ redirect_to projects_path
+ else
+ flash[:error]
+ end
+ end
+end
\ No newline at end of file |
| |   |
| 17 | 17 | # instead of a file named 'wsdl' |
| 18 | 18 | #map.connect ':controller/service.wsdl', :action => 'wsdl' |
| 19 | 19 | |
| 20 | | map.home "", :controller => "sessions", :action => "new" # TODO change eventually |
| 20 | map.home "", :controller => "projects", :action => "new" # TODO change eventually |
| 21 | 21 | |
| 22 | 22 | map.resources :users |
| 23 | 23 | map.resource :sessions |
| 24 | map.resources :projects #, :has_many => [:tasks, :repositories, :milestones, :pages] do |project| |
| 25 | # project.resources :tasks |
| 26 | # project.resources :repositories |
| 27 | #end |
| 24 | 28 | |
| 25 | 29 | map.with_options :controller => 'sessions' do |session| |
| 26 | | session.login 'login', :action => 'new' |
| 27 | | session.logout 'logout', :action => 'destroy' |
| 30 | session.login '/login', :action => 'new' |
| 31 | session.logout '/logout', :action => 'destroy' |
| 28 | 32 | end |
| 29 | 33 | |
| 30 | 34 | # Install the default route as the lowest priority. |
| toggle raw diff |
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -17,14 +17,18 @@ ActionController::Routing::Routes.draw do |map|
# instead of a file named 'wsdl'
#map.connect ':controller/service.wsdl', :action => 'wsdl'
- map.home "", :controller => "sessions", :action => "new" # TODO change eventually
+ map.home "", :controller => "projects", :action => "new" # TODO change eventually
map.resources :users
map.resource :sessions
+ map.resources :projects #, :has_many => [:tasks, :repositories, :milestones, :pages] do |project|
+ # project.resources :tasks
+ # project.resources :repositories
+ #end
map.with_options :controller => 'sessions' do |session|
- session.login 'login', :action => 'new'
- session.logout 'logout', :action => 'destroy'
+ session.login '/login', :action => 'new'
+ session.logout '/logout', :action => 'destroy'
end
# Install the default route as the lowest priority. |
| |   |
| 1 | require File.dirname(__FILE__) + '/../spec_helper' |
| 2 | |
| 3 | describe ProjectsController do |
| 4 | before(:each) do |
| 5 | @projects = [mock_model(Project), mock_model(Project)] |
| 6 | end |
| 7 | |
| 8 | def url_path(path, host="http://test.host") |
| 9 | "#{host}#{path}" |
| 10 | end |
| 11 | |
| 12 | it "GET projects/ should be succesful" do |
| 13 | Project.should_receive(:find).and_return(@projects) |
| 14 | get :index |
| 15 | response.should be_success |
| 16 | assigns(:projects).should == @projects |
| 17 | response.should render_template("index") |
| 18 | end |
| 19 | |
| 20 | it "GET projects/new should be succesful" do |
| 21 | login_as :johan |
| 22 | get :new |
| 23 | response.should be_success |
| 24 | response.should render_template("new") |
| 25 | end |
| 26 | |
| 27 | it "GET projects/new should require login" do |
| 28 | get :new |
| 29 | response.should be_redirect |
| 30 | response.should redirect_to(url_path(new_sessions_path)) |
| 31 | end |
| 32 | |
| 33 | it "POST projects/create with valid data should create project" do |
| 34 | login_as :johan |
| 35 | post :create, :project => {:name => "project x"} |
| 36 | response.should be_redirect |
| 37 | response.should redirect_to(url_path(projects_path)) |
| 38 | |
| 39 | Project.find_by_name("project x").user.should == users(:johan) |
| 40 | end |
| 41 | |
| 42 | it "projects/create should require login" do |
| 43 | post :create |
| 44 | response.should redirect_to(url_path(new_sessions_path)) |
| 45 | end |
| 46 | |
| 47 | it "projects/update should require login" do |
| 48 | post :update |
| 49 | response.should redirect_to(url_path(new_sessions_path)) |
| 50 | end |
| 51 | |
| 52 | it "PUT projects/update with valid data should update record" do |
| 53 | login_as :johan |
| 54 | project = projects(:johans_project) |
| 55 | put :update, :id => project.id, :project => {:name => "new name"} |
| 56 | assigns(:project).should == project |
| 57 | response.should be_redirect |
| 58 | response.should redirect_to(project_path(project)) |
| 59 | project.reload.name.should == "new name" |
| 60 | end |
| 61 | |
| 62 | it "projects/destroy should require login" do |
| 63 | put :destroy |
| 64 | response.should be_redirect |
| 65 | response.should redirect_to(url_path(new_sessions_path)) |
| 66 | end |
| 67 | |
| 68 | it "PUT projects/destroy should destroy the project" do |
| 69 | login_as :johan |
| 70 | delete :destroy, :id => projects(:johans_project) |
| 71 | response.should redirect_to(url_path(projects_path)) |
| 72 | Project.find_by_id(1).should == nil |
| 73 | end |
| 74 | |
| 75 | end |
| toggle raw diff |
--- /dev/null
+++ b/spec/controllers/projects_controller_spec.rb
@@ -0,0 +1,75 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe ProjectsController do
+ before(:each) do
+ @projects = [mock_model(Project), mock_model(Project)]
+ end
+
+ def url_path(path, host="http://test.host")
+ "#{host}#{path}"
+ end
+
+ it "GET projects/ should be succesful" do
+ Project.should_receive(:find).and_return(@projects)
+ get :index
+ response.should be_success
+ assigns(:projects).should == @projects
+ response.should render_template("index")
+ end
+
+ it "GET projects/new should be succesful" do
+ login_as :johan
+ get :new
+ response.should be_success
+ response.should render_template("new")
+ end
+
+ it "GET projects/new should require login" do
+ get :new
+ response.should be_redirect
+ response.should redirect_to(url_path(new_sessions_path))
+ end
+
+ it "POST projects/create with valid data should create project" do
+ login_as :johan
+ post :create, :project => {:name => "project x"}
+ response.should be_redirect
+ response.should redirect_to(url_path(projects_path))
+
+ Project.find_by_name("project x").user.should == users(:johan)
+ end
+
+ it "projects/create should require login" do
+ post :create
+ response.should redirect_to(url_path(new_sessions_path))
+ end
+
+ it "projects/update should require login" do
+ post :update
+ response.should redirect_to(url_path(new_sessions_path))
+ end
+
+ it "PUT projects/update with valid data should update record" do
+ login_as :johan
+ project = projects(:johans_project)
+ put :update, :id => project.id, :project => {:name => "new name"}
+ assigns(:project).should == project
+ response.should be_redirect
+ response.should redirect_to(project_path(project))
+ project.reload.name.should == "new name"
+ end
+
+ it "projects/destroy should require login" do
+ put :destroy
+ response.should be_redirect
+ response.should redirect_to(url_path(new_sessions_path))
+ end
+
+ it "PUT projects/destroy should destroy the project" do
+ login_as :johan
+ delete :destroy, :id => projects(:johans_project)
+ response.should redirect_to(url_path(projects_path))
+ Project.find_by_id(1).should == nil
+ end
+
+end |
| |   |
| 11 | 11 | end |
| 12 | 12 | |
| 13 | 13 | it "should login and redirect" do |
| 14 | | post :create, :login => "quentin", :password => "test" |
| 14 | post :create, :login => "johan", :password => "test" |
| 15 | 15 | session[:user].should_not be(nil) |
| 16 | 16 | response.should be_redirect |
| 17 | 17 | end |
| 18 | 18 | |
| 19 | 19 | it "should fail login and not redirect" do |
| 20 | | post :create, :login => 'quentin', :password => 'bad password' |
| 20 | post :create, :login => 'johan', :password => 'bad password' |
| 21 | 21 | session[:user].should be(nil) |
| 22 | 22 | response.should be_success |
| 23 | 23 | end |
| 24 | 24 | |
| 25 | 25 | it "should logout" do |
| 26 | | login_as :quentin |
| 26 | login_as :johan |
| 27 | 27 | get :destroy |
| 28 | 28 | session[:user].should be(nil) |
| 29 | 29 | response.should be_redirect |
| 30 | 30 | end |
| 31 | 31 | |
| 32 | 32 | it "should remember me" do |
| 33 | | post :create, :login => 'quentin', :password => 'test', :remember_me => "1" |
| 33 | post :create, :login => 'johan', :password => 'test', :remember_me => "1" |
| 34 | 34 | response.cookies["auth_token"].should_not be(nil) |
| 35 | 35 | end |
| 36 | 36 | |
| 37 | 37 | it "should should not remember me" do |
| 38 | | post :create, :login => 'quentin', :password => 'test', :remember_me => "0" |
| 38 | post :create, :login => 'johan', :password => 'test', :remember_me => "0" |
| 39 | 39 | response.cookies["auth_token"].should be(nil) |
| 40 | 40 | end |
| 41 | 41 | |
| 42 | 42 | it "should delete token on logout" do |
| 43 | | login_as :quentin |
| 43 | login_as :johan |
| 44 | 44 | get :destroy |
| 45 | 45 | response.cookies["auth_token"].should == [] |
| 46 | 46 | end |
| 47 | 47 | |
| 48 | 48 | it "should login with cookie" do |
| 49 | | users(:quentin).remember_me |
| 50 | | request.cookies["auth_token"] = cookie_for(:quentin) |
| 49 | users(:johan).remember_me |
| 50 | request.cookies["auth_token"] = cookie_for(:johan) |
| 51 | 51 | get :new |
| 52 | 52 | controller.send(:logged_in?).should be(true) |
| 53 | 53 | end |
| 54 | 54 | |
| 55 | 55 | it "should fail when trying to login with with expired cookie" do |
| 56 | | users(:quentin).remember_me |
| 57 | | users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago.utc |
| 58 | | request.cookies["auth_token"] = cookie_for(:quentin) |
| 56 | users(:johan).remember_me |
| 57 | users(:johan).update_attribute :remember_token_expires_at, 5.minutes.ago.utc |
| 58 | request.cookies["auth_token"] = cookie_for(:johan) |
| 59 | 59 | get :new |
| 60 | 60 | controller.send(:logged_in?).should be(false) |
| 61 | 61 | end |
| 62 | 62 | |
| 63 | 63 | it "should fail cookie login" do |
| 64 | | users(:quentin).remember_me |
| 64 | users(:johan).remember_me |
| 65 | 65 | @request.cookies["auth_token"] = auth_token('invalid_auth_token') |
| 66 | 66 | get :new |
| 67 | 67 | @controller.send(:logged_in?).should be(false) |
| toggle raw diff |
--- a/spec/controllers/sessions_controller_spec.rb
+++ b/spec/controllers/sessions_controller_spec.rb
@@ -11,57 +11,57 @@ describe SessionsController do
end
it "should login and redirect" do
- post :create, :login => "quentin", :password => "test"
+ post :create, :login => "johan", :password => "test"
session[:user].should_not be(nil)
response.should be_redirect
end
it "should fail login and not redirect" do
- post :create, :login => 'quentin', :password => 'bad password'
+ post :create, :login => 'johan', :password => 'bad password'
session[:user].should be(nil)
response.should be_success
end
it "should logout" do
- login_as :quentin
+ login_as :johan
get :destroy
session[:user].should be(nil)
response.should be_redirect
end
it "should remember me" do
- post :create, :login => 'quentin', :password => 'test', :remember_me => "1"
+ post :create, :login => 'johan', :password => 'test', :remember_me => "1"
response.cookies["auth_token"].should_not be(nil)
end
it "should should not remember me" do
- post :create, :login => 'quentin', :password => 'test', :remember_me => "0"
+ post :create, :login => 'johan', :password => 'test', :remember_me => "0"
response.cookies["auth_token"].should be(nil)
end
it "should delete token on logout" do
- login_as :quentin
+ login_as :johan
get :destroy
response.cookies["auth_token"].should == []
end
it "should login with cookie" do
- users(:quentin).remember_me
- request.cookies["auth_token"] = cookie_for(:quentin)
+ users(:johan).remember_me
+ request.cookies["auth_token"] = cookie_for(:johan)
get :new
controller.send(:logged_in?).should be(true)
end
it "should fail when trying to login with with expired cookie" do
- users(:quentin).remember_me
- users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago.utc
- request.cookies["auth_token"] = cookie_for(:quentin)
+ users(:johan).remember_me
+ users(:johan).update_attribute :remember_token_expires_at, 5.minutes.ago.utc
+ request.cookies["auth_token"] = cookie_for(:johan)
get :new
controller.send(:logged_in?).should be(false)
end
it "should fail cookie login" do
- users(:quentin).remember_me
+ users(:johan).remember_me
@request.cookies["auth_token"] = auth_token('invalid_auth_token')
get :new
@controller.send(:logged_in?).should be(false) |
| |   |
| 47 | 47 | end |
| 48 | 48 | |
| 49 | 49 | it "should activate user" do |
| 50 | | User.authenticate('aaron', 'test').should be(nil) |
| 51 | | get :activate, :activation_code => users(:aaron).activation_code |
| 50 | User.authenticate('moe', 'test').should be(nil) |
| 51 | get :activate, :activation_code => users(:moe).activation_code |
| 52 | 52 | response.should redirect_to '/' |
| 53 | 53 | flash[:notice].should_not be(nil) |
| 54 | | User.authenticate('aaron', 'test').should == users(:aaron) |
| 54 | User.authenticate('moe', 'test').should == users(:moe) |
| 55 | 55 | end |
| 56 | 56 | |
| 57 | 57 | end |
| toggle raw diff |
--- a/spec/controllers/users_controller_spec.rb
+++ b/spec/controllers/users_controller_spec.rb
@@ -47,11 +47,11 @@ describe UsersController do
end
it "should activate user" do
- User.authenticate('aaron', 'test').should be(nil)
- get :activate, :activation_code => users(:aaron).activation_code
+ User.authenticate('moe', 'test').should be(nil)
+ get :activate, :activation_code => users(:moe).activation_code
response.should redirect_to '/'
flash[:notice].should_not be(nil)
- User.authenticate('aaron', 'test').should == users(:aaron)
+ User.authenticate('moe', 'test').should == users(:moe)
end
end |
| |   |
| 45 | 45 | end |
| 46 | 46 | |
| 47 | 47 | it "should reset password" do |
| 48 | | users(:quentin).update_attributes(:password => "newpass", :password_confirmation => "newpass") |
| 49 | | User.authenticate("quentin", "newpass").should == users(:quentin) |
| 48 | users(:johan).update_attributes(:password => "newpass", :password_confirmation => "newpass") |
| 49 | User.authenticate("johan", "newpass").should == users(:johan) |
| 50 | 50 | end |
| 51 | 51 | |
| 52 | 52 | it "should not rehash the password" do |
| 53 | | users(:quentin).update_attributes(:login => 'quentin2') |
| 54 | | User.authenticate("quentin2", "test").should == users(:quentin) |
| 53 | users(:johan).update_attributes(:login => 'johan2') |
| 54 | User.authenticate("johan2", "test").should == users(:johan) |
| 55 | 55 | end |
| 56 | 56 | |
| 57 | 57 | it "should authenticate user" do |
| 58 | | User.authenticate("quentin", "test").should == users(:quentin) |
| 58 | User.authenticate("johan", "test").should == users(:johan) |
| 59 | 59 | end |
| 60 | 60 | |
| 61 | 61 | it "should set remember token" do |
| 62 | | users(:quentin).remember_me |
| 63 | | users(:quentin).remember_token.should_not be(nil) |
| 64 | | users(:quentin).remember_token_expires_at.should_not be(nil) |
| 62 | users(:johan).remember_me |
| 63 | users(:johan).remember_token.should_not be(nil) |
| 64 | users(:johan).remember_token_expires_at.should_not be(nil) |
| 65 | 65 | end |
| 66 | 66 | |
| 67 | 67 | it "should unset remember token" do |
| 68 | | users(:quentin).remember_me |
| 69 | | users(:quentin).remember_token.should_not be(nil) |
| 70 | | users(:quentin).forget_me |
| 71 | | users(:quentin).remember_token.should be(nil) |
| 68 | users(:johan).remember_me |
| 69 | users(:johan).remember_token.should_not be(nil) |
| 70 | users(:johan).forget_me |
| 71 | users(:johan).remember_token.should be(nil) |
| 72 | 72 | end |
| 73 | 73 | |
| 74 | 74 | it "should remember user for one week" do |
| 75 | 75 | before = 1.week.from_now.utc |
| 76 | | users(:quentin).remember_me_for 1.week |
| 76 | users(:johan).remember_me_for 1.week |
| 77 | 77 | after = 1.week.from_now.utc |
| 78 | | users(:quentin).remember_token.should_not be(nil) |
| 79 | | users(:quentin).remember_token_expires_at.should_not be(nil) |
| 80 | | users(:quentin).remember_token_expires_at.between?(before, after).should be(true) |
| 78 | users(:johan).remember_token.should_not be(nil) |
| 79 | users(:johan).remember_token_expires_at.should_not be(nil) |
| 80 | users(:johan).remember_token_expires_at.between?(before, after).should be(true) |
| 81 | 81 | end |
| 82 | 82 | |
| 83 | 83 | it "should remember me until one week later" do |
| 84 | 84 | time = 1.week.from_now.utc |
| 85 | | users(:quentin).remember_me_until time |
| 86 | | users(:quentin).remember_token.should_not be(nil) |
| 87 | | users(:quentin).remember_token_expires_at.should_not be(nil) |
| 88 | | users(:quentin).remember_token_expires_at.should == time |
| 85 | users(:johan).remember_me_until time |
| 86 | users(:johan).remember_token.should_not be(nil) |
| 87 | users(:johan).remember_token_expires_at.should_not be(nil) |
| 88 | users(:johan).remember_token_expires_at.should == time |
| 89 | 89 | end |
| 90 | 90 | |
| 91 | 91 | it "should remember me default two weeks" do |
| 92 | 92 | before = 2.weeks.from_now.utc |
| 93 | | users(:quentin).remember_me |
| 93 | users(:johan).remember_me |
| 94 | 94 | after = 2.weeks.from_now.utc |
| 95 | | users(:quentin).remember_token.should_not be(nil) |
| 96 | | users(:quentin).remember_token_expires_at.should_not be(nil) |
| 97 | | users(:quentin).remember_token_expires_at.between?(before, after).should be(true) |
| 95 | users(:johan).remember_token.should_not be(nil) |
| 96 | users(:johan).remember_token_expires_at.should_not be(nil) |
| 97 | users(:johan).remember_token_expires_at.between?(before, after).should be(true) |
| 98 | 98 | end |
| 99 | 99 | |
| 100 | 100 | protected |
| toggle raw diff |
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -45,56 +45,56 @@ describe User do
end
it "should reset password" do
- users(:quentin).update_attributes(:password => "newpass", :password_confirmation => "newpass")
- User.authenticate("quentin", "newpass").should == users(:quentin)
+ users(:johan).update_attributes(:password => "newpass", :password_confirmation => "newpass")
+ User.authenticate("johan", "newpass").should == users(:johan)
end
it "should not rehash the password" do
- users(:quentin).update_attributes(:login => 'quentin2')
- User.authenticate("quentin2", "test").should == users(:quentin)
+ users(:johan).update_attributes(:login => 'johan2')
+ User.authenticate("johan2", "test").should == users(:johan)
end
it "should authenticate user" do
- User.authenticate("quentin", "test").should == users(:quentin)
+ User.authenticate("johan", "test").should == users(:johan)
end
it "should set remember token" do
- users(:quentin).remember_me
- users(:quentin).remember_token.should_not be(nil)
- users(:quentin).remember_token_expires_at.should_not be(nil)
+ users(:johan).remember_me
+ users(:johan).remember_token.should_not be(nil)
+ users(:johan).remember_token_expires_at.should_not be(nil)
end
it "should unset remember token" do
- users(:quentin).remember_me
- users(:quentin).remember_token.should_not be(nil)
- users(:quentin).forget_me
- users(:quentin).remember_token.should be(nil)
+ users(:johan).remember_me
+ users(:johan).remember_token.should_not be(nil)
+ users(:johan).forget_me
+ users(:johan).remember_token.should be(nil)
end
it "should remember user for one week" do
before = 1.week.from_now.utc
- users(:quentin).remember_me_for 1.week
+ users(:johan).remember_me_for 1.week
after = 1.week.from_now.utc
- users(:quentin).remember_token.should_not be(nil)
- users(:quentin).remember_token_expires_at.should_not be(nil)
- users(:quentin).remember_token_expires_at.between?(before, after).should be(true)
+ users(:johan).remember_token.should_not be(nil)
+ users(:johan).remember_token_expires_at.should_not be(nil)
+ users(:johan).remember_token_expires_at.between?(before, after).should be(true)
end
it "should remember me until one week later" do
time = 1.week.from_now.utc
- users(:quentin).remember_me_until time
- users(:quentin).remember_token.should_not be(nil)
- users(:quentin).remember_token_expires_at.should_not be(nil)
- users(:quentin).remember_token_expires_at.should == time
+ users(:johan).remember_me_until time
+ users(:johan).remember_token.should_not be(nil)
+ users(:johan).remember_token_expires_at.should_not be(nil)
+ users(:johan).remember_token_expires_at.should == time
end
it "should remember me default two weeks" do
before = 2.weeks.from_now.utc
- users(:quentin).remember_me
+ users(:johan).remember_me
after = 2.weeks.from_now.utc
- users(:quentin).remember_token.should_not be(nil)
- users(:quentin).remember_token_expires_at.should_not be(nil)
- users(:quentin).remember_token_expires_at.between?(before, after).should be(true)
+ users(:johan).remember_token.should_not be(nil)
+ users(:johan).remember_token_expires_at.should_not be(nil)
+ users(:johan).remember_token_expires_at.between?(before, after).should be(true)
end
protected |