Changeset 56

Show
Ignore:
Timestamp:
11/27/07 17:47:43 (12 months ago)
Author:
jweiss
Message:

only admins can manage projects

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/CHANGELOG.txt

    r51 r56  
    55* Introduce a 5 second sleep between mongrel stop and start while restarting' 
    66 
    7 * Only admins can manage recipes, hosts, and users. Normal users can only view. 
     7* Only admins can manage projects, recipes, hosts, and users. Normal users can only view. 
    88 
    99* Show also all recent deployments in dashboard 
  • trunk/app/controllers/projects_controller.rb

    r43 r56  
    22   
    33  before_filter :load_templates, :only => [:new, :create, :edit, :update] 
     4  before_filter :ensure_admin, :only => [:new, :edit, :destroy, :create, :update] 
    45   
    56  # GET /projects/dashboard 
  • trunk/test/functional/projects_controller_test.rb

    r1 r56  
    1414     
    1515    @project = create_new_project 
    16     @user = login 
    1716  end 
    1817 
    1918  def test_should_get_index 
     19    @user = login 
     20     
    2021    get :index 
    2122    assert_response :success 
     
    2324  end 
    2425 
    25   def test_should_get_new 
     26  def test_non_admin_should_not_get_new 
     27    @user = login 
     28     
     29    get :new 
     30    assert_response :redirect 
     31  end 
     32   
     33  def test_admin_should_get_new 
     34    @user = admin_login 
     35     
    2636    get :new 
    2737    assert_response :success 
    2838  end 
    2939   
    30   def test_should_create_project 
     40  def test_non_admin_should_not_create_project 
     41    @user = login 
     42     
     43    Project.delete_all 
     44    old_count = Project.count 
     45    post :create, :project => { :name => 'Project Alpha', :template => 'rails'} 
     46    assert_equal old_count, Project.count 
     47     
     48    assert_response :redirect 
     49  end 
     50 
     51  def test_admin_should_create_project 
     52    @user = admin_login 
     53     
    3154    Project.delete_all 
    3255    old_count = Project.count 
     
    3962  end 
    4063 
    41   def test_should_show_project     
     64  def test_should_show_project 
     65    @user = login 
     66         
    4267    get :show, :id => @project.id 
    4368    assert_response :success 
    4469  end 
    4570 
    46   def test_should_get_edit 
     71  def test_non_admin_should_not_get_edit 
     72    @user = login 
     73     
     74    get :edit, :id => @project.id 
     75    assert_response :redirect 
     76  end 
     77   
     78  def test_admin_should_get_edit 
     79    @user = admin_login 
     80     
    4781    get :edit, :id => @project.id 
    4882    assert_response :success 
    4983  end 
    5084   
    51   def test_should_update_project 
     85  def test_non_admin_should_not_update_project 
     86    @user = login 
     87     
     88    put :update, :id => @project.id, :project => { :name => 'Project Jochen', :template => 'mongrel_rails'} 
     89    assert_response :redirect 
     90    @project.reload 
     91    assert_not_equal 'Project Jochen', @project.name 
     92  end 
     93   
     94  def test_admin_should_update_project 
     95    @user = admin_login 
     96     
    5297    put :update, :id => @project.id, :project => { :name => 'Project Jochen', :template => 'mongrel_rails'} 
    5398    assert_redirected_to project_path(assigns(:project)) 
     
    56101  end 
    57102   
    58   def test_should_destroy_project 
     103  def test_non_admin_should_not_destroy_project 
     104    @user = login 
     105     
     106    old_count = Project.count 
     107    delete :destroy, :id => @project.id 
     108    assert_equal old_count, Project.count 
     109     
     110    assert_response :redirect 
     111  end 
     112   
     113  def test_admin_should_destroy_project 
     114    @user = admin_login 
     115     
    59116    old_count = Project.count 
    60117    delete :destroy, :id => @project.id