foreman_datacenter 1.24.0 → 1.24.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/lib/foreman_datacenter/version.rb +1 -1
  3. data/test/controllers/foreman_datacenter/device_roles_controller_test.rb +133 -0
  4. data/test/controllers/foreman_datacenter/device_types_contoller_test.rb +108 -47
  5. data/test/controllers/foreman_datacenter/devices_controller_test.rb +132 -0
  6. data/test/controllers/foreman_datacenter/manufacturers_controller_test.rb +133 -0
  7. data/test/controllers/foreman_datacenter/platforms_contoller_test.rb +91 -48
  8. data/test/controllers/foreman_datacenter/rack_groups_contoller_test.rb +90 -43
  9. data/test/controllers/foreman_datacenter/racks_contoller_test.rb +111 -42
  10. data/test/controllers/foreman_datacenter/sites_contoller_test.rb +108 -81
  11. data/test/datacenter_helper.rb +8 -1
  12. data/test/factories/device.rb +5 -0
  13. data/test/factories/device_role.rb +6 -0
  14. data/test/factories/device_type.rb +30 -0
  15. data/test/factories/rack_group.rb +13 -14
  16. data/test/fixtures/foreman_datacenter/device_roles.yml +0 -1
  17. data/test/integration/foreman_datacenter/device_role_test.rb +35 -0
  18. data/test/integration/foreman_datacenter/device_type_test.rb +33 -0
  19. data/test/integration/foreman_datacenter/manufacturer_test.rb +33 -0
  20. data/test/integration/foreman_datacenter/platform_test.rb +35 -0
  21. data/test/integration/foreman_datacenter/rack_group_test.rb +35 -25
  22. data/test/integration/foreman_datacenter/rack_test.rb +37 -25
  23. data/test/integration/foreman_datacenter/site_test.rb +39 -29
  24. data/test/unit/foreman_datacenter_test.rb +1 -1
  25. metadata +53 -34
@@ -13,71 +13,140 @@ 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_racks']"
19
- end
20
-
21
- def test_new_cancel_button_id
22
- get :new, session: set_session_user
23
- assert_select "[data-id='aid_datacenter_racks']"
24
- end
25
-
26
- def test_show_edit_button_id
27
- get :show, params: { :id => ForemanDatacenter::Rack.first.to_param }, session: set_session_user
28
- assert_select "[data-id='aid_racks_#{ForemanDatacenter::Rack.first.id}_edit']"
29
- end
30
-
31
- def test_show_delete_button_id
32
- get :show, params: { :id => ForemanDatacenter::Rack.first.to_param }, session: set_session_user
33
- assert_select "[data-id='aid_datacenter_racks_#{ForemanDatacenter::Rack.first.id}']"
34
- end
35
-
36
16
  def test_create_invalid
37
17
  ForemanDatacenter::Rack.any_instance.stubs(:valid?).returns(false)
38
- post :create, params: { :rack => {:name => nil} }, session: set_session_user
18
+ post :create, params: { rack: { name: nil } }, session: set_session_user
39
19
  assert_template 'new'
40
20
  end
41
21
 
42
- def test_create_valid
22
+ def test_create_valid(name = "test rack")
43
23
  ForemanDatacenter::Rack.any_instance.stubs(:valid?).returns(true)
44
- post :create, params: { :rack => {:name => 'test rg'} }, session: set_session_user
24
+ post :create, params: { rack: { name: name } }, session: set_session_user
45
25
  assert_redirected_to racks_url
46
26
  end
47
27
 
48
- def test_edit_submit_button_id
49
- get :edit, params: { :id => ForemanDatacenter::Rack.first }, session: set_session_user
50
- assert_select "[data-id='aid_update_foreman_datacenter_rack']"
51
- end
52
-
53
28
  def test_update_invalid
54
29
  ForemanDatacenter::Rack.any_instance.stubs(:valid?).returns(false)
55
- put :update, params: { :id => ForemanDatacenter::Rack.first.to_param, :rack => {:name => "3243"} }, session: set_session_user
30
+ put :update, params: { id: @model.to_param, rack: { name: '3243' } }, session: set_session_user
56
31
  assert_template 'edit'
57
32
  end
58
33
 
59
34
  def test_update_valid
60
35
  ForemanDatacenter::Rack.any_instance.stubs(:valid?).returns(true)
61
- put :update, params: { :id => ForemanDatacenter::Rack.first.to_param, :rack => {:name => ForemanDatacenter::Rack.first.name} }, session: set_session_user
36
+ put :update, params: { id: @model.to_param, rack: { name: @model.name } }, session: set_session_user
62
37
  assert_redirected_to racks_url
63
38
  end
64
39
 
65
- # def test_destroy
66
- # rack = ForemanDatacenter::Rack.first
67
- # # architecture.hosts.delete_all
68
- # # architecture.hostgroups.delete_all
69
- # delete :destroy, params: { :id => rack }, session: set_session_user
70
- # assert_redirected_to racks_url
71
- # assert !ForemanDatacenter::Rack.exists?(rack.id)
72
- # end
40
+ def test_destroy
41
+ test_create_valid "tobedeleted_test"
42
+ @new_rack = ForemanDatacenter::Rack.find_by_name("tobedeleted_test")
43
+ delete :destroy, params: { id: @new_rack.id }, session: set_session_user
44
+ assert_redirected_to racks_url
45
+ assert !ForemanDatacenter::Rack.exists?(@new_rack.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_racks'
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_racks'
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_racks'
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
73
75
 
74
- def setup_user
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_racks'
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 = "")
75
97
  @request.session[:user] = users(:one).id
76
- 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' }, session: set_session_user
105
+ assert_response :not_found
106
+ assert_template 'common/404'
107
+ end
108
+
109
+ test "should_not_destroy_rack_when_not_permitted" do
110
+ setup_user
111
+ assert_difference('ForemanDatacenter::Rack.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_1\""}, session: set_session_user
119
+ assert_response :success
120
+ refute_empty assigns(:racks)
121
+ assert assigns(:racks).include?(racks(:one))
122
+ end
123
+
124
+ test "should search by rack group" do
125
+ get :index, params: {:search => "rack_group=\"rack_group_1\""}, session: set_session_user
126
+ assert_response :success
127
+ refute_empty assigns(:racks)
128
+ assert assigns(:racks).include?(racks(:one))
129
+ end
130
+
131
+ test "should search by site" do
132
+ get :index, params: {:search => "site=\"site_1\""}, session: set_session_user
133
+ assert_response :success
134
+ refute_empty assigns(:racks)
135
+ assert assigns(:racks).include?(racks(:one))
136
+ end
137
+
138
+ test "should search by facility_id" do
139
+ get :index, params: {:search => "facility_id=\"1\""}, session: set_session_user
140
+ assert_response :success
141
+ refute_empty assigns(:racks)
142
+ assert assigns(:racks).include?(racks(:one))
77
143
  end
78
144
 
79
- def get_factory_name
80
- :rack
145
+ test "should search by height" do
146
+ get :index, params: {:search => "height=\"10\""}, session: set_session_user
147
+ assert_response :success
148
+ refute_empty assigns(:racks)
149
+ assert assigns(:racks).include?(racks(:one))
81
150
  end
82
151
  end
83
152
  end
@@ -13,115 +13,142 @@ 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_sites']"
19
- end
20
-
21
- def test_new_cancel_button_id
22
- get :new, session: set_session_user
23
- assert_select "[data-id='aid_datacenter_sites']"
24
- end
25
-
26
- def test_show_edit_button_id
27
- get :show, params: { :id => ForemanDatacenter::Site.first.to_param }, session: set_session_user
28
- assert_select "[data-id='aid_sites_#{ForemanDatacenter::Site.first.id}_edit']"
29
- end
30
-
31
- def test_show_delete_button_id
32
- get :show, params: { :id => ForemanDatacenter::Site.first.to_param }, session: set_session_user
33
- assert_select "[data-id='aid_datacenter_sites_#{ForemanDatacenter::Site.first.id}']"
34
- end
35
-
36
- test "should_show_site" do
37
- setup_user
38
- get :show, params: { :id => ForemanDatacenter::Site.first.to_param }, session: set_session_user
39
- assert_response :success
40
- end
41
-
42
16
  def test_create_invalid
43
17
  ForemanDatacenter::Site.any_instance.stubs(:valid?).returns(false)
44
18
  post :create, params: { :site => {: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 site")
49
23
  ForemanDatacenter::Site.any_instance.stubs(:valid?).returns(true)
50
- post :create, params: { :site => {:name => 'test site'} }, session: set_session_user
24
+ post :create, params: { :site => {:name => name} }, session: set_session_user
51
25
  assert_redirected_to sites_url
52
26
  end
53
27
 
54
- def test_edit_submit_button_id
55
- get :edit, params: { :id => ForemanDatacenter::Site.first }, session: set_session_user
56
- assert_select "[data-id='aid_update_foreman_datacenter_site']"
57
- end
58
-
59
28
  def test_update_invalid
60
29
  ForemanDatacenter::Site.any_instance.stubs(:valid?).returns(false)
61
- put :update, params: { :id => ForemanDatacenter::Site.first.to_param, :site => {:name => "3243", :asn => "string"} }, session: set_session_user
30
+ put :update, params: { :id => @model.to_param, :site => {:name => "", :asn => "string"} }, session: set_session_user
62
31
  assert_template 'edit'
63
32
  end
64
33
 
65
34
  def test_update_valid
66
35
  ForemanDatacenter::Site.any_instance.stubs(:valid?).returns(true)
67
- put :update, params: { :id => ForemanDatacenter::Site.first.to_param, :site => {:name => ForemanDatacenter::Site.first.name} }, session: set_session_user
36
+ put :update, params: { :id => @model.to_param, :site => {:name => @model.name} }, session: set_session_user
37
+ assert_redirected_to sites_url
38
+ end
39
+
40
+ def test_destroy
41
+ test_create_valid "tobedeleted_test"
42
+ @new_site = ForemanDatacenter::Site.find_by_name("tobedeleted_test")
43
+ delete :destroy, params: { :id => @new_site.id }, session: set_session_user
68
44
  assert_redirected_to sites_url
45
+ assert !ForemanDatacenter::Site.exists?(@new_site.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_sites'
69
53
  end
70
54
 
71
- # def test_destroy
72
- # site = ForemanDatacenter::Site.first
73
- # # architecture.hosts.delete_all
74
- # # architecture.hostgroups.delete_all
75
- # delete :destroy, params: { :id => site }, session: set_session_user
76
- # assert_redirected_to sites_url
77
- # assert !ForemanDatacenter::Site.exists?(site.id)
78
- # end
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_sites'
60
+ end
79
61
 
80
- test '403 response contains missing permissions' do
62
+ test 'should not get edit when not permitted' do
81
63
  setup_user
82
- get :edit, params: { :id => ForemanDatacenter::Site.first.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
64
+ get :edit, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
83
65
  assert_response :forbidden
84
66
  assert_includes @response.body, 'edit_sites'
85
67
  end
86
68
 
87
- def setup_user
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_sites'
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 = "")
88
97
  @request.session[:user] = users(:one).id
89
- users(:one).roles = [Role.default, Role.find_by_name('Viewer')]
90
- end
91
-
92
- # TODO Not executed
93
- # Expected response to be a <403: forbidden>, but was a <302: Found> redirect to <http://test.host/users/login>
94
- # test "user with viewer rights should fail to edit a site" do
95
- # setup_user
96
- # get :edit, params: {:id => ForemanDatacenter::Site.first.id}
97
- # assert_response :forbidden
98
- # end
99
-
100
- # TODO
101
- # Expected response to be a <403: forbidden>, but was a <302: Found> redirect to <http://test.host/users/login>
102
- # test "user_with_viewer_rights_should_succeed_in_viewing_sites" do
103
- # setup_user
104
- # get :index
105
- # assert_response :success
106
- # end
107
-
108
- # TODO
109
- # test "should not show site when not permitted" do
110
- # setup_user "none"
111
- # get :show, params: { :id => ForemanDatacenter::Site.first.to_param }#, session: set_session_user
112
- # assert_response 403
113
- # end
114
-
115
- # TODO
116
- # test "should not show site when restricted" do
117
- # setup_user "view"
118
- # get :show, params: { :id => @your_site.to_param }, session: set_session_user
119
- # assert_response 404
120
- # end
121
-
122
- def get_factory_name
123
- :site
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")]
124
101
  end
102
+
103
+ test "should search by name" do
104
+ get :index, params: {:search => "name=\"site_1\""}, session: set_session_user
105
+ assert_response :success
106
+ refute_empty assigns(:sites)
107
+ assert assigns(:sites).include?(sites(:one))
108
+ end
109
+
110
+ test "should search by facility" do
111
+ get :index, params: {:search => "facility=\"facility_for_site_1\""}, session: set_session_user
112
+ assert_response :success
113
+ refute_empty assigns(:sites)
114
+ assert assigns(:sites).include?(sites(:one))
115
+ end
116
+
117
+ test "should search by physical_address" do
118
+ get :index, params: {:search => "physical_address=\"phisycal_address_for_site_1\""}, session: set_session_user
119
+ assert_response :success
120
+ refute_empty assigns(:sites)
121
+ assert assigns(:sites).include?(sites(:one))
122
+ end
123
+
124
+ test "should search by shipping_address" do
125
+ get :index, params: {:search => "shipping_address=\"shipping_address_for_site_1\""}, session: set_session_user
126
+ assert_response :success
127
+ refute_empty assigns(:sites)
128
+ assert assigns(:sites).include?(sites(:one))
129
+ end
130
+
131
+ test "should search by asn" do
132
+ get :index, params: {:search => "asn=\"1\""}, session: set_session_user
133
+ assert_response :success
134
+ refute_empty assigns(:sites)
135
+ assert assigns(:sites).include?(sites(:one))
136
+ end
137
+
138
+ test "should_render_404_when_site_is_not_found" do
139
+ get :show, params: { id: 'no.such.site' }, session: set_session_user
140
+ assert_response :not_found
141
+ assert_template 'common/404'
142
+ end
143
+
144
+ test "should_not_destroy_site_when_not_permitted" do
145
+ setup_user
146
+ assert_difference('ForemanDatacenter::Site.count', 0) do
147
+ delete :destroy, params: { :id => @model.id }, session: {:user => users(:one).id, :expires_at => 5.minutes.from_now}
148
+ end
149
+ assert_response :forbidden
150
+ end
151
+
125
152
  end
126
153
  end
127
154
  end
@@ -1,4 +1,11 @@
1
1
  class ActiveSupport::TestCase
2
- fixtures :all
3
2
  set_fixture_class :sites => ForemanDatacenter::Site
3
+ set_fixture_class :racks => ForemanDatacenter::Rack
4
+ set_fixture_class :rack_groups => ForemanDatacenter::RackGroup
5
+ set_fixture_class :platforms => ForemanDatacenter::Platform
6
+ set_fixture_class :manufacturers => ForemanDatacenter::Manufacturer
7
+ set_fixture_class :device_types => ForemanDatacenter::DeviceType
8
+ set_fixture_class :device_roles => ForemanDatacenter::DeviceRole
9
+ set_fixture_class :devices => ForemanDatacenter::Device
10
+ fixtures :all
4
11
  end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :device, :class => ForemanDatacenter::Device do
3
+ sequence(:name) {|n| "device-#{n}"}
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ factory :device_role, :class => ForemanDatacenter::DeviceRole do
3
+ sequence(:name) {|n| "dev_role_#{n}"}
4
+ color { "Red" }
5
+ end
6
+ end
@@ -2,6 +2,36 @@ FactoryBot.define do
2
2
  factory :device_type, :class => ForemanDatacenter::DeviceType do
3
3
  sequence(:model) {|n| "dt-#{n}"}
4
4
  sequence(:manufacturer_id) { 1 }
5
+
6
+ trait :full_depth do
7
+ is_full_depth { true }
8
+ end
9
+
10
+ trait :console_server do
11
+ is_console_server { true }
12
+ end
13
+
14
+ trait :pdu do
15
+ is_pdu { true }
16
+ end
17
+
18
+ trait :network_device do
19
+ is_network_device { true }
20
+ end
21
+
22
+ trait :parent do
23
+ subdevice_role "Parent"
24
+ end
25
+
26
+ trait :child do
27
+ subdevice_role "Child"
28
+ u_height 0
29
+ end
30
+
31
+ trait :none do
32
+ subdevice_role "None"
33
+ end
34
+
5
35
  # sequence(:u_height) { 5 }
6
36
  # sequence(:is_full_depth) { true }
7
37
  # sequence(:is_console_server) { true }