foreman_datacenter 1.22.1 → 1.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/foreman_datacenter/application_controller.rb +2 -0
  3. data/app/controllers/foreman_datacenter/racks_controller.rb +8 -1
  4. data/app/models/foreman_datacenter/rack.rb +36 -0
  5. data/app/views/foreman_datacenter/device_roles/show.html.erb +1 -2
  6. data/app/views/foreman_datacenter/device_types/show.html.erb +1 -2
  7. data/app/views/foreman_datacenter/manufacturers/show.html.erb +1 -2
  8. data/app/views/foreman_datacenter/platforms/show.html.erb +1 -2
  9. data/app/views/foreman_datacenter/rack_groups/show.html.erb +1 -2
  10. data/app/views/foreman_datacenter/racks/_device_position.html.erb +10 -1
  11. data/app/views/foreman_datacenter/racks/show.html.erb +1 -2
  12. data/app/views/foreman_datacenter/sites/show.html.erb +1 -2
  13. data/config/routes.rb +21 -1
  14. data/lib/foreman_datacenter/version.rb +1 -1
  15. data/test/controllers/foreman_datacenter/device_roles_controller_test.rb +133 -0
  16. data/test/controllers/foreman_datacenter/device_types_contoller_test.rb +108 -47
  17. data/test/controllers/foreman_datacenter/devices_controller_test.rb +132 -0
  18. data/test/controllers/foreman_datacenter/manufacturers_controller_test.rb +133 -0
  19. data/test/controllers/foreman_datacenter/platforms_contoller_test.rb +91 -48
  20. data/test/controllers/foreman_datacenter/rack_groups_contoller_test.rb +90 -43
  21. data/test/controllers/foreman_datacenter/racks_contoller_test.rb +111 -42
  22. data/test/controllers/foreman_datacenter/sites_contoller_test.rb +108 -81
  23. data/test/datacenter_helper.rb +8 -1
  24. data/test/factories/device.rb +5 -0
  25. data/test/factories/device_role.rb +6 -0
  26. data/test/factories/device_type.rb +30 -0
  27. data/test/factories/rack_group.rb +13 -14
  28. data/test/fixtures/foreman_datacenter/device_roles.yml +0 -1
  29. data/test/integration/foreman_datacenter/device_role_test.rb +35 -0
  30. data/test/integration/foreman_datacenter/device_type_test.rb +33 -0
  31. data/test/integration/foreman_datacenter/manufacturer_test.rb +33 -0
  32. data/test/integration/foreman_datacenter/platform_test.rb +35 -0
  33. data/test/integration/foreman_datacenter/rack_group_test.rb +35 -25
  34. data/test/integration/foreman_datacenter/rack_test.rb +37 -25
  35. data/test/integration/foreman_datacenter/site_test.rb +39 -29
  36. data/test/unit/foreman_datacenter_test.rb +1 -1
  37. metadata +56 -37
@@ -0,0 +1,132 @@
1
+ require_relative '../../test_plugin_helper'
2
+
3
+ module ForemanDatacenter
4
+ class DevicesControllerTest < ActionController::TestCase
5
+ describe ForemanDatacenter::DevicesController do
6
+ setup do
7
+ @model = ForemanDatacenter::Device.first
8
+ end
9
+
10
+ basic_index_test 'devices'
11
+ basic_new_test
12
+ basic_edit_test 'device'
13
+ basic_pagination_per_page_test
14
+ basic_pagination_rendered_test
15
+
16
+ # def test_create_invalid
17
+ # ForemanDatacenter::Device.any_instance.stubs(:valid?).returns(false)
18
+ # post :create, params: { device: { name: nil } }, session: set_session_user
19
+ # assert_template 'new'
20
+ # end
21
+
22
+ # def test_create_valid(name = "test rg")
23
+ # ForemanDatacenter::Device.any_instance.stubs(:valid?).returns(true)
24
+ # post :create, params: { device: { name: name } }, session: set_session_user
25
+ # assert_redirected_to devices_url
26
+ # end
27
+
28
+ # def test_update_invalid
29
+ # ForemanDatacenter::Device.any_instance.stubs(:valid?).returns(false)
30
+ # put :update, params: { id: @model.to_param, device: { name: '3243' } }, session: set_session_user
31
+ # assert_template 'edit'
32
+ # end
33
+
34
+ # def test_update_valid
35
+ # ForemanDatacenter::Device.any_instance.stubs(:valid?).returns(true)
36
+ # put :update, params: { id: @model.to_param, device: { name: @model.name } }, session: set_session_user
37
+ # assert_redirected_to devices_url
38
+ # end
39
+
40
+ # def test_destroy
41
+ # test_create_valid "tobedeleted_test"
42
+ # @new_rg = ForemanDatacenter::Device.find_by_name("tobedeleted_test")
43
+ # delete :destroy, params: { id: @new_rg.id }, session: set_session_user
44
+ # assert_redirected_to devices_url
45
+ # assert !ForemanDatacenter::Device.exists?(@new_rg.id)
46
+ # end
47
+
48
+ # test "should not get index when not permitted" do
49
+ # setup_user
50
+ # get :index, session: { :user => users(:one).id, :expires_at => 5.minutes.from_now }
51
+ # assert_response :forbidden
52
+ # assert_includes @response.body, 'view_devices'
53
+ # end
54
+
55
+ # test 'should not get show when not permitted' do
56
+ # setup_user
57
+ # get :show, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
58
+ # assert_response :forbidden
59
+ # assert_includes @response.body, 'view_devices'
60
+ # end
61
+
62
+ # test 'should not get edit when not permitted' do
63
+ # setup_user
64
+ # get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
65
+ # assert_response :forbidden
66
+ # assert_includes @response.body, 'edit_devices'
67
+ # end
68
+
69
+ # test "should get index" do
70
+ # setup_user("Viewer")
71
+ # get :index, session: set_session_user
72
+ # assert_response :success
73
+ # assert_template 'index'
74
+ # end
75
+
76
+ # test 'should get show' do
77
+ # setup_user("Viewer")
78
+ # get :show, params: { :id => @model.id }, session: set_session_user
79
+ # assert_response :success
80
+ # assert_template 'show'
81
+ # end
82
+
83
+ # test 'should not get edit with viewer permissions' do
84
+ # setup_user("Viewer")
85
+ # get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
86
+ # assert_response :forbidden
87
+ # assert_includes @response.body, 'edit_devices'
88
+ # end
89
+
90
+ # test 'should get edit' do
91
+ # get :edit, params: { :id => @model.id }, session: set_session_user
92
+ # assert_response :success
93
+ # assert_template 'edit'
94
+ # end
95
+
96
+ # def setup_user(role = "")
97
+ # @request.session[:user] = users(:one).id
98
+ # users(:one).roles = [Role.default]
99
+ # users(:one).roles << Role.find_by_name(role) if role != ""
100
+ # # users(:one).roles = [Role.default, Role.find_by_name("Viewer")]
101
+ # end
102
+
103
+ # test "should_render_404_when_rack_is_not_found" do
104
+ # get :show, params: { id: 'no.such.rack.group' }, session: set_session_user
105
+ # assert_response :not_found
106
+ # assert_template 'common/404'
107
+ # end
108
+
109
+ # test "should_not_destroy_device_when_not_permitted" do
110
+ # setup_user
111
+ # assert_difference('ForemanDatacenter::Device.count', 0) do
112
+ # delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
113
+ # end
114
+ # assert_response :forbidden
115
+ # end
116
+
117
+ # test "should search by name" do
118
+ # get :index, params: {:search => "name=\"device_1\""}, session: set_session_user
119
+ # assert_response :success
120
+ # refute_empty assigns(:devices)
121
+ # assert assigns(:devices).include?(devices(:one))
122
+ # end
123
+
124
+ # test "should search by site" do
125
+ # get :index, params: {:search => "site=\"site_1\""}, session: set_session_user
126
+ # assert_response :success
127
+ # refute_empty assigns(:devices)
128
+ # assert assigns(:devices).include?(devices(:one))
129
+ # end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,133 @@
1
+ require_relative '../../test_plugin_helper'
2
+
3
+ module ForemanDatacenter
4
+ class ManufacturersControllerTest < ActionController::TestCase
5
+ describe ForemanDatacenter::ManufacturersController do
6
+ setup do
7
+ @model = ForemanDatacenter::Manufacturer.first
8
+ end
9
+
10
+ basic_index_test 'manufacturers'
11
+ basic_new_test
12
+ basic_edit_test 'manufacturer'
13
+ basic_pagination_per_page_test
14
+ basic_pagination_rendered_test
15
+
16
+ def test_create_invalid
17
+ ForemanDatacenter::Manufacturer.any_instance.stubs(:valid?).returns(false)
18
+ post :create, params: { :manufacturer => {:name => nil} }, session: set_session_user
19
+ assert_template 'new'
20
+ end
21
+
22
+ def test_create_valid(name = "test manufacturer")
23
+ ForemanDatacenter::Manufacturer.any_instance.stubs(:valid?).returns(true)
24
+ post :create, params: { :manufacturer => {:name => name} }, session: set_session_user
25
+ assert_redirected_to manufacturers_url
26
+ end
27
+
28
+ def test_update_invalid
29
+ ForemanDatacenter::Manufacturer.any_instance.stubs(:valid?).returns(false)
30
+ put :update, params: { :id => @model.to_param, :manufacturer => {:name => "3243"} }, session: set_session_user
31
+ assert_template 'edit'
32
+ end
33
+
34
+ def test_update_valid
35
+ ForemanDatacenter::Manufacturer.any_instance.stubs(:valid?).returns(true)
36
+ put :update, params: { :id => @model.to_param, :manufacturer => {:name => @model.name} }, session: set_session_user
37
+ assert_redirected_to manufacturers_url
38
+ end
39
+
40
+ def test_destroy
41
+ test_create_valid "tobedeleted_test"
42
+ @new_manufacturer = ForemanDatacenter::Manufacturer.find_by_name("tobedeleted_test")
43
+ delete :destroy, params: { :id => @new_manufacturer.id }, session: set_session_user
44
+ assert_redirected_to manufacturers_url
45
+ assert !ForemanDatacenter::Manufacturer.exists?(@new_manufacturer.id)
46
+ end
47
+
48
+ def test_destroy
49
+ test_create_valid "tobedeleted_test"
50
+ @new_manufacturer = ForemanDatacenter::Manufacturer.find_by_name("tobedeleted_test")
51
+ delete :destroy, params: { :id => @new_manufacturer.id }, session: set_session_user
52
+ assert_redirected_to manufacturers_url
53
+ assert !ForemanDatacenter::Manufacturer.exists?(@new_manufacturer.id)
54
+ end
55
+
56
+ test "should not get index when not permitted" do
57
+ setup_user
58
+ get :index, session: { :user => users(:one).id, :expires_at => 5.minutes.from_now }
59
+ assert_response :forbidden
60
+ assert_includes @response.body, 'view_manufacturers'
61
+ end
62
+
63
+ test 'should not get show when not permitted' do
64
+ setup_user
65
+ get :show, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
66
+ assert_response :forbidden
67
+ assert_includes @response.body, 'view_manufacturers'
68
+ end
69
+
70
+ test 'should not get edit when not permitted' do
71
+ setup_user
72
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
73
+ assert_response :forbidden
74
+ assert_includes @response.body, 'edit_manufacturers'
75
+ end
76
+
77
+ test "should get index" do
78
+ setup_user("Viewer")
79
+ get :index, session: set_session_user
80
+ assert_response :success
81
+ assert_template 'index'
82
+ end
83
+
84
+ test 'should get show' do
85
+ setup_user("Viewer")
86
+ get :show, params: { :id => @model.id }, session: set_session_user
87
+ assert_response :success
88
+ assert_template 'show'
89
+ end
90
+
91
+ test 'should not get edit with viewer permissions' do
92
+ setup_user("Viewer")
93
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
94
+ assert_response :forbidden
95
+ assert_includes @response.body, 'edit_manufacturers'
96
+ end
97
+
98
+ test 'should get edit' do
99
+ get :edit, params: { :id => @model.id }, session: set_session_user
100
+ assert_response :success
101
+ assert_template 'edit'
102
+ end
103
+
104
+ def setup_user(role = "")
105
+ @request.session[:user] = users(:one).id
106
+ users(:one).roles = [Role.default]
107
+ users(:one).roles << Role.find_by_name(role) if role != ""
108
+ # users(:one).roles = [Role.default, Role.find_by_name("Viewer")]
109
+ end
110
+
111
+ test "should_render_404_when_manufacturer_is_not_found" do
112
+ get :show, params: { id: 'no.such.manufacturer' }, session: set_session_user
113
+ assert_response :not_found
114
+ assert_template 'common/404'
115
+ end
116
+
117
+ test "should_not_destroy_manufacturer_when_not_permitted" do
118
+ setup_user
119
+ assert_difference('ForemanDatacenter::Manufacturer.count', 0) do
120
+ delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
121
+ end
122
+ assert_response :forbidden
123
+ end
124
+
125
+ test "should search by name" do
126
+ get :index, params: {:search => "name=\"manufacturer_1\""}, session: set_session_user
127
+ assert_response :success
128
+ refute_empty assigns(:manufacturers)
129
+ assert assigns(:manufacturers).include?(manufacturers(:one))
130
+ end
131
+ end
132
+ end
133
+ end
@@ -13,84 +13,127 @@ module ForemanDatacenter
13
13
  basic_pagination_per_page_test
14
14
  basic_pagination_rendered_test
15
15
 
16
- def test_new_submit_button_id
17
- get :new, session: set_session_user
18
- assert_select "[data-id='aid_datacenter_platforms']"
19
- end
20
-
21
- def test_new_cancel_button_id
22
- get :new, session: set_session_user
23
- assert_select "[data-id='aid_datacenter_platforms']"
24
- end
25
-
26
- def test_show_edit_button_id
27
- get :show, params: { :id => ForemanDatacenter::Platform.first.to_param }, session: set_session_user
28
- assert_select "[data-id='aid_platforms_#{ForemanDatacenter::Platform.first.id}_edit']"
29
- end
30
-
31
- def test_show_delete_button_id
32
- get :show, params: { :id => ForemanDatacenter::Platform.first.to_param }, session: set_session_user
33
- assert_select "[data-id='aid_datacenter_platforms_#{ForemanDatacenter::Platform.first.id}']"
34
- end
35
-
36
- test "should_show_platform" do
37
- setup_user
38
- get :show, params: { :id => ForemanDatacenter::Platform.first.to_param }, session: set_session_user
39
- assert_response :success
40
- end
41
-
42
16
  def test_create_invalid
43
17
  ForemanDatacenter::Platform.any_instance.stubs(:valid?).returns(false)
44
18
  post :create, params: { :platform => {:name => nil} }, session: set_session_user
45
19
  assert_template 'new'
46
20
  end
47
21
 
48
- def test_create_valid
22
+ def test_create_valid(name = "test platform")
49
23
  ForemanDatacenter::Platform.any_instance.stubs(:valid?).returns(true)
50
- post :create, params: { :platform => {:name => 'test site'} }, session: set_session_user
24
+ post :create, params: { :platform => {:name => name} }, session: set_session_user
51
25
  assert_redirected_to platforms_url
52
26
  end
53
27
 
54
- def test_edit_submit_button_id
55
- get :edit, params: { :id => ForemanDatacenter::Platform.first }, session: set_session_user
56
- assert_select "[data-id='aid_update_foreman_datacenter_platform']"
57
- end
58
-
59
28
  def test_update_invalid
60
29
  ForemanDatacenter::Platform.any_instance.stubs(:valid?).returns(false)
61
- put :update, params: { :id => ForemanDatacenter::Platform.first.to_param, :platform => {:name => "3243", :asn => "string"} }, session: set_session_user
30
+ put :update, params: { :id => @model.to_param, :platform => {:name => "3243"} }, session: set_session_user
62
31
  assert_template 'edit'
63
32
  end
64
33
 
65
34
  def test_update_valid
66
35
  ForemanDatacenter::Platform.any_instance.stubs(:valid?).returns(true)
67
- put :update, params: { :id => ForemanDatacenter::Platform.first.to_param, :platform => {:name => ForemanDatacenter::Site.first.name} }, session: set_session_user
36
+ put :update, params: { :id => @model.to_param, :platform => {:name => @model.name} }, session: set_session_user
68
37
  assert_redirected_to platforms_url
69
38
  end
70
39
 
71
- # def test_destroy
72
- # platform = ForemanDatacenter::Platform.first
73
- # # architecture.hosts.delete_all
74
- # # architecture.hostgroups.delete_all
75
- # delete :destroy, params: { :id => platform }, session: set_session_user
76
- # assert_redirected_to platforms_url
77
- # assert !ForemanDatacenter::Platform.exists?(platform.id)
78
- # end
40
+ def test_destroy
41
+ test_create_valid "tobedeleted_test"
42
+ @new_platform = ForemanDatacenter::Platform.find_by_name("tobedeleted_test")
43
+ delete :destroy, params: { :id => @new_platform.id }, session: set_session_user
44
+ assert_redirected_to platforms_url
45
+ assert !ForemanDatacenter::Platform.exists?(@new_platform.id)
46
+ end
79
47
 
80
48
  test '403 response contains missing permissions' do
81
49
  setup_user
82
- get :edit, params: { :id => ForemanDatacenter::Platform.first.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
50
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
83
51
  assert_response :forbidden
84
52
  assert_includes @response.body, 'edit_platforms'
85
53
  end
86
54
 
87
- def setup_user
55
+
56
+ test "should not get index when not permitted" do
57
+ setup_user
58
+ get :index, session: { :user => users(:one).id, :expires_at => 5.minutes.from_now }
59
+ assert_response :forbidden
60
+ assert_includes @response.body, 'view_platforms'
61
+ end
62
+
63
+ test 'should not get show when not permitted' do
64
+ setup_user
65
+ get :show, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
66
+ assert_response :forbidden
67
+ assert_includes @response.body, 'view_platforms'
68
+ end
69
+
70
+ test 'should not get edit when not permitted' do
71
+ setup_user
72
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
73
+ assert_response :forbidden
74
+ assert_includes @response.body, 'edit_platforms'
75
+ end
76
+
77
+ test "should get index" do
78
+ setup_user("Viewer")
79
+ get :index, session: set_session_user
80
+ assert_response :success
81
+ assert_template 'index'
82
+ end
83
+
84
+ test 'should get show' do
85
+ setup_user("Viewer")
86
+ get :show, params: { :id => @model.id }, session: set_session_user
87
+ assert_response :success
88
+ assert_template 'show'
89
+ end
90
+
91
+ test 'should not get edit with viewer permissions' do
92
+ setup_user("Viewer")
93
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
94
+ assert_response :forbidden
95
+ assert_includes @response.body, 'edit_platforms'
96
+ end
97
+
98
+ test 'should get edit' do
99
+ get :edit, params: { :id => @model.id }, session: set_session_user
100
+ assert_response :success
101
+ assert_template 'edit'
102
+ end
103
+
104
+ def setup_user(role = "")
88
105
  @request.session[:user] = users(:one).id
89
- users(:one).roles = [Role.default, Role.find_by_name('Viewer')]
106
+ users(:one).roles = [Role.default]
107
+ users(:one).roles << Role.find_by_name(role) if role != ""
108
+ # users(:one).roles = [Role.default, Role.find_by_name("Viewer")]
90
109
  end
91
110
 
92
- def get_factory_name
93
- :platform
111
+ test "should_render_404_when_platform_is_not_found" do
112
+ get :show, params: { id: 'no.such.platform' }, session: set_session_user
113
+ assert_response :not_found
114
+ assert_template 'common/404'
115
+ end
116
+
117
+ test "should_not_destroy_rack_when_not_permitted" do
118
+ setup_user
119
+ assert_difference('ForemanDatacenter::Platform.count', 0) do
120
+ delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
121
+ end
122
+ assert_response :forbidden
123
+ end
124
+
125
+ test "should search by name" do
126
+ get :index, params: {:search => "name=\"platform_1\""}, session: set_session_user
127
+ assert_response :success
128
+ refute_empty assigns(:platforms)
129
+ assert assigns(:platforms).include?(platforms(:one))
130
+ end
131
+
132
+ test "should search by rpc client" do
133
+ get :index, params: {:search => "rpc_client=\"Juniper Junos (NETCONF)\""}, session: set_session_user
134
+ assert_response :success
135
+ refute_empty assigns(:platforms)
136
+ assert assigns(:platforms).include?(platforms(:one))
94
137
  end
95
138
  end
96
139
  end
@@ -5,7 +5,6 @@ module ForemanDatacenter
5
5
  describe ForemanDatacenter::RackGroupsController do
6
6
  setup do
7
7
  @model = ForemanDatacenter::RackGroup.first
8
- # @factory_options = :with_site
9
8
  end
10
9
 
11
10
  basic_index_test 'rack_groups'
@@ -14,71 +13,119 @@ module ForemanDatacenter
14
13
  basic_pagination_per_page_test
15
14
  basic_pagination_rendered_test
16
15
 
17
- def test_new_submit_button_id
18
- get :new, session: set_session_user
19
- assert_select "[data-id='aid_datacenter_rack_groups']"
20
- end
21
-
22
- def test_new_cancel_button_id
23
- get :new, session: set_session_user
24
- assert_select "[data-id='aid_datacenter_rack_groups']"
25
- end
26
-
27
- def test_show_edit_button_id
28
- get :show, params: { :id => ForemanDatacenter::RackGroup.first.to_param }, session: set_session_user
29
- assert_select "[data-id='aid_rack_groups_#{ForemanDatacenter::RackGroup.first.id}_edit']"
30
- end
31
-
32
- def test_show_delete_button_id
33
- get :show, params: { :id => ForemanDatacenter::RackGroup.first.to_param }, session: set_session_user
34
- assert_select "[data-id='aid_datacenter_rack_groups_#{ForemanDatacenter::RackGroup.first.id}']"
35
- end
36
-
37
16
  def test_create_invalid
38
17
  ForemanDatacenter::RackGroup.any_instance.stubs(:valid?).returns(false)
39
- post :create, params: { :rack_group => {:name => nil} }, session: set_session_user
18
+ post :create, params: { rack_group: { name: nil } }, session: set_session_user
40
19
  assert_template 'new'
41
20
  end
42
21
 
43
- def test_create_valid
22
+ def test_create_valid(name = "test rg")
44
23
  ForemanDatacenter::RackGroup.any_instance.stubs(:valid?).returns(true)
45
- post :create, params: { :rack_group => {:name => 'test rg'} }, session: set_session_user
24
+ post :create, params: { rack_group: { name: name } }, session: set_session_user
46
25
  assert_redirected_to rack_groups_url
47
26
  end
48
27
 
49
- def test_edit_submit_button_id
50
- get :edit, params: { :id => ForemanDatacenter::RackGroup.first }, session: set_session_user
51
- assert_select "[data-id='aid_update_foreman_datacenter_rack_group']"
52
- end
53
-
54
28
  def test_update_invalid
55
29
  ForemanDatacenter::RackGroup.any_instance.stubs(:valid?).returns(false)
56
- put :update, params: { :id => ForemanDatacenter::RackGroup.first.to_param, :rack_group => {:name => "3243"} }, session: set_session_user
30
+ put :update, params: { id: @model.to_param, rack_group: { name: '3243' } }, session: set_session_user
57
31
  assert_template 'edit'
58
32
  end
59
33
 
60
34
  def test_update_valid
61
35
  ForemanDatacenter::RackGroup.any_instance.stubs(:valid?).returns(true)
62
- put :update, params: { :id => ForemanDatacenter::RackGroup.first.to_param, :rack_group => {:name => ForemanDatacenter::RackGroup.first.name} }, session: set_session_user
36
+ put :update, params: { id: @model.to_param, rack_group: { name: @model.name } }, session: set_session_user
37
+ assert_redirected_to rack_groups_url
38
+ end
39
+
40
+ def test_destroy
41
+ test_create_valid "tobedeleted_test"
42
+ @new_rg = ForemanDatacenter::RackGroup.find_by_name("tobedeleted_test")
43
+ delete :destroy, params: { id: @new_rg.id }, session: set_session_user
63
44
  assert_redirected_to rack_groups_url
45
+ assert !ForemanDatacenter::RackGroup.exists?(@new_rg.id)
64
46
  end
65
47
 
66
- # def test_destroy
67
- # rack_group = ForemanDatacenter::RackGroup.first
68
- # # architecture.hosts.delete_all
69
- # # architecture.hostgroups.delete_all
70
- # delete :destroy, params: { :id => rack_group }, session: set_session_user
71
- # assert_redirected_to rack_groups_url
72
- # assert !ForemanDatacenter::RackGroup.exists?(rack_group.id)
73
- # end
48
+ test "should not get index when not permitted" do
49
+ setup_user
50
+ get :index, session: { :user => users(:one).id, :expires_at => 5.minutes.from_now }
51
+ assert_response :forbidden
52
+ assert_includes @response.body, 'view_rack_groups'
53
+ end
54
+
55
+ test 'should not get show when not permitted' do
56
+ setup_user
57
+ get :show, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
58
+ assert_response :forbidden
59
+ assert_includes @response.body, 'view_rack_groups'
60
+ end
74
61
 
75
- def setup_user
62
+ test 'should not get edit when not permitted' do
63
+ setup_user
64
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
65
+ assert_response :forbidden
66
+ assert_includes @response.body, 'edit_rack_groups'
67
+ end
68
+
69
+ test "should get index" do
70
+ setup_user("Viewer")
71
+ get :index, session: set_session_user
72
+ assert_response :success
73
+ assert_template 'index'
74
+ end
75
+
76
+ test 'should get show' do
77
+ setup_user("Viewer")
78
+ get :show, params: { :id => @model.id }, session: set_session_user
79
+ assert_response :success
80
+ assert_template 'show'
81
+ end
82
+
83
+ test 'should not get edit with viewer permissions' do
84
+ setup_user("Viewer")
85
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
86
+ assert_response :forbidden
87
+ assert_includes @response.body, 'edit_rack_groups'
88
+ end
89
+
90
+ test 'should get edit' do
91
+ get :edit, params: { :id => @model.id }, session: set_session_user
92
+ assert_response :success
93
+ assert_template 'edit'
94
+ end
95
+
96
+ def setup_user(role = "")
76
97
  @request.session[:user] = users(:one).id
77
- users(:one).roles = [Role.default, Role.find_by_name('Viewer')]
98
+ users(:one).roles = [Role.default]
99
+ users(:one).roles << Role.find_by_name(role) if role != ""
100
+ # users(:one).roles = [Role.default, Role.find_by_name("Viewer")]
101
+ end
102
+
103
+ test "should_render_404_when_rack_is_not_found" do
104
+ get :show, params: { id: 'no.such.rack.group' }, session: set_session_user
105
+ assert_response :not_found
106
+ assert_template 'common/404'
107
+ end
108
+
109
+ test "should_not_destroy_rack_group_when_not_permitted" do
110
+ setup_user
111
+ assert_difference('ForemanDatacenter::RackGroup.count', 0) do
112
+ delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
113
+ end
114
+ assert_response :forbidden
115
+ end
116
+
117
+ test "should search by name" do
118
+ get :index, params: {:search => "name=\"rack_group_1\""}, session: set_session_user
119
+ assert_response :success
120
+ refute_empty assigns(:rack_groups)
121
+ assert assigns(:rack_groups).include?(rack_groups(:one))
78
122
  end
79
123
 
80
- def get_factory_name
81
- :rack_group
124
+ test "should search by site" do
125
+ get :index, params: {:search => "site=\"site_1\""}, session: set_session_user
126
+ assert_response :success
127
+ refute_empty assigns(:rack_groups)
128
+ assert assigns(:rack_groups).include?(rack_groups(:one))
82
129
  end
83
130
  end
84
131
  end