Project

General

Profile

Download (8.68 KB) Statistics
| Branch: | Tag: | Revision:
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