From 81f8db91cf68cb4acfb0b5b0cdcf5f788a2e935c Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 15 Jun 2017 12:47:59 +0200 Subject: [PATCH 1/6] Use lets for FactoryGirls --- spec/controllers/application_controller/explorer_spec.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/controllers/application_controller/explorer_spec.rb b/spec/controllers/application_controller/explorer_spec.rb index a55ba28060d..5c3113a0f5f 100644 --- a/spec/controllers/application_controller/explorer_spec.rb +++ b/spec/controllers/application_controller/explorer_spec.rb @@ -34,12 +34,13 @@ end context "#rbac_filtered_objects" do + let(:ems_folder) { FactoryGirl.create(:ems_folder) } + let!(:ems) { FactoryGirl.create(:ems_vmware, :ems_folders => [ems_folder]) } + let(:user) { FactoryGirl.create(:user_admin) } + it "properly calls RBAC" do EvmSpecHelper.create_guid_miq_server_zone - ems_folder = FactoryGirl.create(:ems_folder) - ems = FactoryGirl.create(:ems_vmware, :ems_folders => [ems_folder]) - user = FactoryGirl.create(:user_admin) user.current_group.entitlement = Entitlement.create! user.current_group.entitlement.set_managed_filters([["/managed/service_level/gold"]]) user.current_group.save From fc13eebe6b42a43ae42d51973cc45c477fb8405d Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 15 Jun 2017 12:51:31 +0200 Subject: [PATCH 2/6] use before block --- spec/controllers/application_controller/explorer_spec.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spec/controllers/application_controller/explorer_spec.rb b/spec/controllers/application_controller/explorer_spec.rb index 5c3113a0f5f..81acb0eb7e5 100644 --- a/spec/controllers/application_controller/explorer_spec.rb +++ b/spec/controllers/application_controller/explorer_spec.rb @@ -38,13 +38,16 @@ let!(:ems) { FactoryGirl.create(:ems_vmware, :ems_folders => [ems_folder]) } let(:user) { FactoryGirl.create(:user_admin) } - it "properly calls RBAC" do + before do EvmSpecHelper.create_guid_miq_server_zone - + user.current_group.entitlement = Entitlement.create! user.current_group.entitlement.set_managed_filters([["/managed/service_level/gold"]]) user.current_group.save login_as user + end + + it "properly calls RBAC" do expect(Rbac.filtered([ems_folder], :match_via_descendants => "VmOrTemplate")).to( eq([ems_folder])) end From bab36c3a91b6003a2bb8e0d099cc0902a175a116 Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 15 Jun 2017 12:52:19 +0200 Subject: [PATCH 3/6] pass user to rbac method --- spec/controllers/application_controller/explorer_spec.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spec/controllers/application_controller/explorer_spec.rb b/spec/controllers/application_controller/explorer_spec.rb index 81acb0eb7e5..4a6152e56e8 100644 --- a/spec/controllers/application_controller/explorer_spec.rb +++ b/spec/controllers/application_controller/explorer_spec.rb @@ -40,15 +40,14 @@ before do EvmSpecHelper.create_guid_miq_server_zone - + user.current_group.entitlement = Entitlement.create! user.current_group.entitlement.set_managed_filters([["/managed/service_level/gold"]]) user.current_group.save - login_as user end it "properly calls RBAC" do - expect(Rbac.filtered([ems_folder], :match_via_descendants => "VmOrTemplate")).to( + expect(Rbac.filtered([ems_folder], :match_via_descendants => "VmOrTemplate", :user => user)).to( eq([ems_folder])) end end From f1d9a11062a48776a343fc79a1fd9a503389e962 Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 15 Jun 2017 12:54:53 +0200 Subject: [PATCH 4/6] check all ems_folders --- spec/controllers/application_controller/explorer_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/application_controller/explorer_spec.rb b/spec/controllers/application_controller/explorer_spec.rb index 4a6152e56e8..12777da42ce 100644 --- a/spec/controllers/application_controller/explorer_spec.rb +++ b/spec/controllers/application_controller/explorer_spec.rb @@ -47,7 +47,7 @@ end it "properly calls RBAC" do - expect(Rbac.filtered([ems_folder], :match_via_descendants => "VmOrTemplate", :user => user)).to( + expect(Rbac.filtered(EmsFolder, :match_via_descendants => "VmOrTemplate", :user => user)).to( eq([ems_folder])) end end From 0681d8b069d180dafd394b88e565a6a7ec4939e0 Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 15 Jun 2017 12:56:10 +0200 Subject: [PATCH 5/6] remove ( ) --- spec/controllers/application_controller/explorer_spec.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/controllers/application_controller/explorer_spec.rb b/spec/controllers/application_controller/explorer_spec.rb index 12777da42ce..06983fc85e9 100644 --- a/spec/controllers/application_controller/explorer_spec.rb +++ b/spec/controllers/application_controller/explorer_spec.rb @@ -47,8 +47,7 @@ end it "properly calls RBAC" do - expect(Rbac.filtered(EmsFolder, :match_via_descendants => "VmOrTemplate", :user => user)).to( - eq([ems_folder])) + expect(Rbac.filtered(EmsFolder, :match_via_descendants => "VmOrTemplate", :user => user)).to eq([ems_folder]) end end From b97869f2a3fdedd8bc2971ae340458ace021507f Mon Sep 17 00:00:00 2001 From: lpichler Date: Thu, 15 Jun 2017 13:14:40 +0200 Subject: [PATCH 6/6] Fix the bug: we have to tag the resource (Vm) and make it visible for rbac --- spec/controllers/application_controller/explorer_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/controllers/application_controller/explorer_spec.rb b/spec/controllers/application_controller/explorer_spec.rb index 06983fc85e9..3352c16c0bd 100644 --- a/spec/controllers/application_controller/explorer_spec.rb +++ b/spec/controllers/application_controller/explorer_spec.rb @@ -37,6 +37,7 @@ let(:ems_folder) { FactoryGirl.create(:ems_folder) } let!(:ems) { FactoryGirl.create(:ems_vmware, :ems_folders => [ems_folder]) } let(:user) { FactoryGirl.create(:user_admin) } + let(:vm) { FactoryGirl.create(:vm_vmware, :ext_management_system => ems) } before do EvmSpecHelper.create_guid_miq_server_zone @@ -44,9 +45,13 @@ user.current_group.entitlement = Entitlement.create! user.current_group.entitlement.set_managed_filters([["/managed/service_level/gold"]]) user.current_group.save + + ems_folder.add_child(vm) end it "properly calls RBAC" do + vm.tag_with('/managed/service_level/gold', :ns => '*') + expect(Rbac.filtered(EmsFolder, :match_via_descendants => "VmOrTemplate", :user => user)).to eq([ems_folder]) end end