foreman/test/controllers/compute_resources_controller_test.rb @ b5eca9b3
334d0359 | Amos Benari | require 'test_helper'
|
|
cc6a1382 | Timo Goebel | require 'pagelets_test_helper'
|
|
334d0359 | Amos Benari | ||
class ComputeResourcesControllerTest < ActionController::TestCase
|
|||
cc6a1382 | Timo Goebel | include PageletsIsolation
|
|
334d0359 | Amos Benari | setup do
|
|
e170c321 | Olivier Favre | @compute_resource = compute_resources(:mycompute)
|
|
@your_compute_resource = compute_resources(:yourcompute)
|
|||
a154c816 | lizagilman | @factory_options = :ec2
|
|
e170c321 | Olivier Favre | end
|
|
a154c816 | lizagilman | basic_pagination_per_page_test
|
|
basic_pagination_rendered_test
|
|||
e170c321 | Olivier Favre | test "should not get index when not permitted" do
|
|
setup_user "none"
|
|||
d041d4bb | Dominic Cleal | get :index, session: set_session_user
|
|
e170c321 | Olivier Favre | assert_response 403
|
|
334d0359 | Amos Benari | end
|
|
test "should get index" do
|
|||
e170c321 | Olivier Favre | setup_user "view"
|
|
d041d4bb | Dominic Cleal | get :index, session: set_session_user
|
|
334d0359 | Amos Benari | assert_response :success
|
|
76e5dd41 | Joseph Mitchell Magen | assert_template 'index'
|
|
e170c321 | Olivier Favre | end
|
|
test "should not get new when not permitted" do
|
|||
setup_user "view"
|
|||
d041d4bb | Dominic Cleal | get :new, session: set_session_user
|
|
e170c321 | Olivier Favre | assert_response 403
|
|
334d0359 | Amos Benari | end
|
|
test "should get new" do
|
|||
e170c321 | Olivier Favre | setup_user "create"
|
|
d041d4bb | Dominic Cleal | get :new, session: set_session_user
|
|
334d0359 | Amos Benari | assert_response :success
|
|
end
|
|||
e170c321 | Olivier Favre | test "should not create compute resource when not permitted" do
|
|
setup_user "view"
|
|||
5f606e11 | Daniel Lobato Garcia | assert_difference('ComputeResource.unscoped.count', 0) do
|
|
e170c321 | Olivier Favre | attrs = {:name => "test", :provider => "Libvirt", :url => "qemu://host/system"}
|
|
d041d4bb | Dominic Cleal | post :create, params: { :compute_resource => attrs }, session: set_session_user
|
|
e170c321 | Olivier Favre | end
|
|
assert_response 403
|
|||
end
|
|||
test "should create compute resource" do
|
|||
3576f8fb | Marek Hulán | role = FactoryBot.build(:role)
|
|
role.add_permissions!([:view_locations, :assign_locations, :edit_locations, :view_organizations, :assign_organizations, :edit_organizations])
|
|||
8dcc90be | Marek Hulán | setup_user "create", 'compute_resources', ''
|
|
3576f8fb | Marek Hulán | User.current.roles << role
|
|
5f606e11 | Daniel Lobato Garcia | assert_difference('ComputeResource.unscoped.count', +1) do
|
|
334d0359 | Amos Benari | attrs = {:name => "test", :provider => "Libvirt", :url => "qemu://host/system"}
|
|
d041d4bb | Dominic Cleal | post :create, params: { :compute_resource => attrs }, session: set_session_user
|
|
334d0359 | Amos Benari | end
|
|
dd42df0a | Ohad Levy | assert_redirected_to compute_resource_url(assigns('compute_resource'))
|
|
334d0359 | Amos Benari | end
|
|
e170c321 | Olivier Favre | test "should not show compute resource when not permitted" do
|
|
setup_user "none"
|
|||
d041d4bb | Dominic Cleal | get :show, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
e170c321 | Olivier Favre | assert_response 403
|
|
end
|
|||
test "should not show compute resource when restricted" do
|
|||
setup_user "view"
|
|||
d041d4bb | Dominic Cleal | get :show, params: { :id => @your_compute_resource.to_param }, session: set_session_user
|
|
acfbc458 | Marek Hulan | assert_response 404
|
|
e170c321 | Olivier Favre | end
|
|
test "should show compute resource" do
|
|||
setup_user "view"
|
|||
d041d4bb | Dominic Cleal | get :show, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
334d0359 | Amos Benari | assert_response :success
|
|
end
|
|||
e170c321 | Olivier Favre | test "should not get edit when not permitted" do
|
|
setup_user "view"
|
|||
d041d4bb | Dominic Cleal | get :edit, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
e170c321 | Olivier Favre | assert_response 403
|
|
end
|
|||
2348fc8e | amirfefer | test "host update without password in the params does not erase existing password" do
|
|
old_password = @compute_resource.password
|
|||
setup_user "edit"
|
|||
d041d4bb | Dominic Cleal | put :update, params: { :id => @compute_resource.to_param, :compute_resource => {:name => "editing_self"} }, session: set_session_user
|
|
5f606e11 | Daniel Lobato Garcia | @compute_resource = ComputeResource.unscoped.find(@compute_resource.id)
|
|
2348fc8e | amirfefer | assert_equal old_password, @compute_resource.password
|
|
end
|
|||
test 'blank password submitted in compute resource edit form unsets password' do
|
|||
setup_user "edit"
|
|||
d041d4bb | Dominic Cleal | put :update, params: { :id => @compute_resource.to_param, :compute_resource => {:name => "editing_self", :password => ''} }, session: set_session_user
|
|
5f606e11 | Daniel Lobato Garcia | @compute_resource = ComputeResource.unscoped.find(@compute_resource.id)
|
|
2348fc8e | amirfefer | assert @compute_resource.password.empty?
|
|
end
|
|||
e170c321 | Olivier Favre | test "should not get edit when restricted" do
|
|
setup_user "edit"
|
|||
d041d4bb | Dominic Cleal | get :edit, params: { :id => @your_compute_resource.to_param }, session: set_session_user
|
|
acfbc458 | Marek Hulan | assert_response 404
|
|
e170c321 | Olivier Favre | end
|
|
334d0359 | Amos Benari | test "should get edit" do
|
|
e170c321 | Olivier Favre | setup_user "edit"
|
|
d041d4bb | Dominic Cleal | get :edit, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
334d0359 | Amos Benari | assert_response :success
|
|
end
|
|||
e170c321 | Olivier Favre | test "should not update compute resource when not permitted" do
|
|
setup_user "view"
|
|||
d041d4bb | Dominic Cleal | put :update, params: { :id => @compute_resource.to_param, :compute_resource => {:name => "editing_self"} }, session: set_session_user
|
|
e170c321 | Olivier Favre | assert_response 403
|
|
end
|
|||
test "should not update compute resource when restricted" do
|
|||
setup_user "edit"
|
|||
d041d4bb | Dominic Cleal | put :update, params: { :id => @your_compute_resource.to_param, :compute_resource => {:name => "editing_self"} }, session: set_session_user
|
|
acfbc458 | Marek Hulan | assert_response 404
|
|
e170c321 | Olivier Favre | end
|
|
test "should update compute resource" do
|
|||
setup_user "edit"
|
|||
d041d4bb | Dominic Cleal | put :update, params: { :id => @compute_resource.to_param, :compute_resource => {:name => "editing_self"} }, session: set_session_user
|
|
334d0359 | Amos Benari | assert_redirected_to compute_resources_path
|
|
end
|
|||
e170c321 | Olivier Favre | test "should not destroy compute resource when not permitted" do
|
|
setup_user "view"
|
|||
5f606e11 | Daniel Lobato Garcia | assert_difference('ComputeResource.unscoped.count', 0) do
|
|
d041d4bb | Dominic Cleal | delete :destroy, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
e170c321 | Olivier Favre | end
|
|
assert_response 403
|
|||
end
|
|||
test "should not destroy compute resource when restricted" do
|
|||
setup_user "destroy"
|
|||
5f606e11 | Daniel Lobato Garcia | assert_difference('ComputeResource.unscoped.count', 0) do
|
|
d041d4bb | Dominic Cleal | delete :destroy, params: { :id => @your_compute_resource.to_param }, session: set_session_user
|
|
e170c321 | Olivier Favre | end
|
|
acfbc458 | Marek Hulan | assert_response 404
|
|
e170c321 | Olivier Favre | end
|
|
test "should destroy compute resource" do
|
|||
setup_user "destroy"
|
|||
5f606e11 | Daniel Lobato Garcia | assert_difference('ComputeResource.unscoped.count', -1) do
|
|
d041d4bb | Dominic Cleal | delete :destroy, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
334d0359 | Amos Benari | end
|
|
assert_redirected_to compute_resources_path
|
|||
end
|
|||
e170c321 | Olivier Favre | ||
f9bc5a8e | Daniel Lobato | context 'search' do
|
|
setup { setup_user 'view' }
|
|||
test 'valid fields' do
|
|||
d041d4bb | Dominic Cleal | get :index, params: { :search => 'name = openstack' }, session: set_session_user
|
|
f9bc5a8e | Daniel Lobato | assert_response :success
|
|
assert flash.empty?
|
|||
end
|
|||
test 'invalid fields' do
|
|||
@request.env['HTTP_REFERER'] = "http://test.host#{compute_resources_path}"
|
|||
d041d4bb | Dominic Cleal | get :index, params: { :search => 'wrongwrong = centos' }, session: set_session_user
|
|
f9bc5a8e | Daniel Lobato | assert_response :redirect
|
|
a0969d71 | Dominic Cleal | assert_redirected_to compute_resources_path
|
|
f9bc5a8e | Daniel Lobato | assert_match /not recognized for searching/, flash[:error]
|
|
end
|
|||
end
|
|||
af80ee8b | Shlomi Zadok | context 'vmware' do
|
|
setup do
|
|||
@compute_resource = compute_resources(:vmware)
|
|||
Fog.mock!
|
|||
end
|
|||
teardown do
|
|||
Fog.unmock!
|
|||
end
|
|||
test 'resource_pools' do
|
|||
resource_pools = ['swimming-pool', 'fishing-pool']
|
|||
Foreman::Model::Vmware.any_instance.stubs(:resource_pools).returns(resource_pools)
|
|||
8decba41 | Dominic Cleal | get :resource_pools, params: {:id => @compute_resource, :cluster_id => 'my_cluster'}, session: set_session_user, xhr: true
|
|
af80ee8b | Shlomi Zadok | assert_response :success
|
|
assert_equal(resource_pools, JSON.parse(response.body))
|
|||
end
|
|||
test 'resource_pools for non-vmware compute resource should return not allowed' do
|
|||
compute_resource = compute_resources(:mycompute)
|
|||
8decba41 | Dominic Cleal | get :resource_pools, params: {:id => compute_resource, :cluster_id => 'my_cluster'}, session: set_session_user, xhr: true
|
|
af80ee8b | Shlomi Zadok | assert_response :method_not_allowed
|
|
end
|
|||
test 'resource_pools should respond only to ajax call' do
|
|||
d041d4bb | Dominic Cleal | get :resource_pools, params: { :id => @compute_resource, :cluster_id => 'my_cluster' }, session: set_session_user
|
|
af80ee8b | Shlomi Zadok | assert_response :method_not_allowed
|
|
end
|
|||
end
|
|||
9caab04b | Timo Goebel | context 'compute resource cache' do
|
|
test 'should refresh the cache' do
|
|||
@compute_resource = compute_resources(:vmware)
|
|||
d041d4bb | Dominic Cleal | put :refresh_cache, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
9caab04b | Timo Goebel | assert_redirected_to compute_resource_url(@compute_resource)
|
|
cf94f62e | Avi Sharvit | assert_match /Successfully refreshed the cache/, flash[:success]
|
|
9caab04b | Timo Goebel | end
|
|
test 'should not refresh the cache if unsupported' do
|
|||
d041d4bb | Dominic Cleal | put :refresh_cache, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|
9caab04b | Timo Goebel | assert_redirected_to compute_resource_url(@compute_resource)
|
|
assert_match /Failed to refresh the cache/, flash[:error]
|
|||
end
|
|||
end
|
|||
cc6a1382 | Timo Goebel | context 'with pagelets' do
|
|
setup do
|
|||
b5eca9b3 | Michael Moll | @controller.prepend_view_path File.expand_path('../static_fixtures', __dir__)
|
|
cc6a1382 | Timo Goebel | Pagelets::Manager.add_pagelet('compute_resources/show', :main_tabs,
|
|
:name => 'TestTab',
|
|||
:id => 'my-special-id',
|
|||
:partial => 'views/test')
|
|||
end
|
|||
test '#new renders a pagelet tab' do
|
|||
get :show, params: { :id => @compute_resource.to_param }, session: set_session_user
|
|||
assert @response.body.match /id='my-special-id'/
|
|||
end
|
|||
end
|
|||
e170c321 | Olivier Favre | def set_session_user
|
|
User.current = users(:admin) unless User.current
|
|||
SETTINGS[:login] ? {:user => User.current.id, :expires_at => 5.minutes.from_now} : {}
|
|||
end
|
|||
8dcc90be | Marek Hulán | def setup_user(operation, type = 'compute_resources', condition = nil)
|
|
super(operation, type, condition || "id = #{@compute_resource.id}")
|
|||
e170c321 | Olivier Favre | end
|
|
334d0359 | Amos Benari | end
|