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.
- checksums.yaml +4 -4
- data/lib/foreman_datacenter/version.rb +1 -1
- data/test/controllers/foreman_datacenter/device_roles_controller_test.rb +133 -0
- data/test/controllers/foreman_datacenter/device_types_contoller_test.rb +108 -47
- data/test/controllers/foreman_datacenter/devices_controller_test.rb +132 -0
- data/test/controllers/foreman_datacenter/manufacturers_controller_test.rb +133 -0
- data/test/controllers/foreman_datacenter/platforms_contoller_test.rb +91 -48
- data/test/controllers/foreman_datacenter/rack_groups_contoller_test.rb +90 -43
- data/test/controllers/foreman_datacenter/racks_contoller_test.rb +111 -42
- data/test/controllers/foreman_datacenter/sites_contoller_test.rb +108 -81
- data/test/datacenter_helper.rb +8 -1
- data/test/factories/device.rb +5 -0
- data/test/factories/device_role.rb +6 -0
- data/test/factories/device_type.rb +30 -0
- data/test/factories/rack_group.rb +13 -14
- data/test/fixtures/foreman_datacenter/device_roles.yml +0 -1
- data/test/integration/foreman_datacenter/device_role_test.rb +35 -0
- data/test/integration/foreman_datacenter/device_type_test.rb +33 -0
- data/test/integration/foreman_datacenter/manufacturer_test.rb +33 -0
- data/test/integration/foreman_datacenter/platform_test.rb +35 -0
- data/test/integration/foreman_datacenter/rack_group_test.rb +35 -25
- data/test/integration/foreman_datacenter/rack_test.rb +37 -25
- data/test/integration/foreman_datacenter/site_test.rb +39 -29
- data/test/unit/foreman_datacenter_test.rb +1 -1
- 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: { :
|
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: { :
|
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: { :
|
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: { :
|
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
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
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
|
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
|
-
|
80
|
-
:
|
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 =>
|
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 =>
|
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 =>
|
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
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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 '
|
62
|
+
test 'should not get edit when not permitted' do
|
81
63
|
setup_user
|
82
|
-
get :edit, params: { :id =>
|
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
|
-
|
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
|
90
|
-
|
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
|
data/test/datacenter_helper.rb
CHANGED
@@ -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
|
@@ -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 }
|