Project

General

Profile

« Previous | Next » 

Revision b8c2ee91

Added by Dominic Cleal about 10 years ago

fixes #4597 - map host disassociate actions to permission

(cherry picked from commit 084f755456f522caa5a896689fe72b3c502efb03)

View differences:

app/controllers/hosts_controller.rb
'update_multiple_environment', 'multiple_disable', 'submit_multiple_disable',
'multiple_enable', 'submit_multiple_enable',
'update_multiple_organization', 'select_multiple_organization',
'update_multiple_location', 'select_multiple_location'
'update_multiple_location', 'select_multiple_location',
'disassociate', 'update_multiple_disassociate', 'multiple_disassociate'
:edit
when 'multiple_destroy', 'submit_multiple_destroy'
:destroy
test/factories/compute_resources.rb
FactoryGirl.define do
factory :compute_resource do
sequence(:name) { |n| "compute_resource#{n}" }
sequence(:url) { |n| "http://#{n}.example.com/" }
trait :ec2 do
provider 'EC2'
user 'ec2user'
password 'ec2password'
url 'eu-west-1'
end
trait :gce do
provider 'GCE'
key_path Rails.root
project 'gce_project'
sequence(:email) { |n| "user#{n}@example.com" }
end
trait :libvirt do
provider 'Libvirt'
end
trait :openstack do
provider 'Openstack'
user 'osuser'
password 'ospassword'
end
trait :ovirt do
provider 'Ovirt'
user 'ovirtuser'
password 'ovirtpassword'
end
trait :rackspace do
provider 'Rackspace'
user 'rsuser'
password 'rspassword'
region 'IAD'
end
trait :vmware do
provider 'Vmware'
user 'vuser'
password 'vpassword'
sequence(:server) { |n| "#{n}.example.com" }
datacenter 'vdatacenter'
end
factory :ec2_cr, :traits => [:ec2]
factory :gce_cr, :traits => [:gce]
factory :libvirt_cr, :traits => [:libvirt]
factory :openstack_cr, :traits => [:openstack]
factory :ovirt_cr, :traits => [:ovirt]
factory :rackspace_cr, :traits => [:rackspace]
factory :vmware_cr, :traits => [:vmware]
end
end
test/factories/host_related.rb
FactoryGirl.create(:host_parameter, :host => host)
end
end
trait :on_compute_resource do
uuid Foreman.uuid
association :compute_resource, :factory => :ec2_cr
after_build { |host| host.class.skip_callback(:validation, :after, :queue_compute) }
end
end
factory :hostgroup do
test/functional/hosts_controller_test.rb
assert_equal host.os.name, yaml[host.name]["osName"] # rundeck-specific field
end
test "#disassociate shows error when used on non-CR host" do
host = FactoryGirl.create(:host)
@request.env["HTTP_REFERER"] = hosts_path
put :disassociate, {:id => host.to_param}, set_session_user
assert_response :redirect, hosts_path
assert_not_nil flash[:error]
end
test "#disassociate removes UUID and CR association from host" do
host = FactoryGirl.create(:host, :on_compute_resource)
@request.env["HTTP_REFERER"] = hosts_path
put :disassociate, {:id => host.to_param}, set_session_user
assert_response :redirect, hosts_path
host.reload
refute host.uuid
refute host.compute_resource_id
end
test '#update_multiple_disassociate' do
host = FactoryGirl.create(:host, :on_compute_resource)
post :update_multiple_disassociate, {:host_ids => [host.id], :host_names => [host.name]}, set_session_user
assert_response :redirect, hosts_path
assert_not_nil flash[:notice]
host.reload
refute host.uuid
refute host.compute_resource_id
end
private
def initialize_host
User.current = users(:admin)

Also available in: Unified diff