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.
- checksums.yaml +4 -4
- data/app/controllers/foreman_datacenter/application_controller.rb +2 -0
- data/app/controllers/foreman_datacenter/racks_controller.rb +8 -1
- data/app/models/foreman_datacenter/rack.rb +36 -0
- data/app/views/foreman_datacenter/device_roles/show.html.erb +1 -2
- data/app/views/foreman_datacenter/device_types/show.html.erb +1 -2
- data/app/views/foreman_datacenter/manufacturers/show.html.erb +1 -2
- data/app/views/foreman_datacenter/platforms/show.html.erb +1 -2
- data/app/views/foreman_datacenter/rack_groups/show.html.erb +1 -2
- data/app/views/foreman_datacenter/racks/_device_position.html.erb +10 -1
- data/app/views/foreman_datacenter/racks/show.html.erb +1 -2
- data/app/views/foreman_datacenter/sites/show.html.erb +1 -2
- data/config/routes.rb +21 -1
- 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 +56 -37
@@ -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 }
|