Skip to content

Commit

Permalink
Merge pull request #8200 from Fryguy/update_permissions_template
Browse files Browse the repository at this point in the history
Update permissions template
  • Loading branch information
jrafanie committed Apr 25, 2016
2 parents 72156a8 + bdcfb60 commit 74e87d9
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 66 deletions.
40 changes: 22 additions & 18 deletions config/permissions.tmpl.yml
@@ -1,31 +1,35 @@
---
- :vi
- :aut
- :clo
- :cnt
- :compute
- :con
- :conf
- :svc
- :clo
- :inf
- :con
- :cnt
- :sto
- :mdl
- :net
- :aut
- :opt
- :set
- ems-type:foreman_configuration
- ems-type:scvmm
- ems-type:openstack_infra
- ems-type:openstack_network
- ems-type:rhevm
- ems-type:vmwarews
- :sto
- :svc
- :vi
- ems-type:ansible_tower_configuration
- ems-type:atomic
- ems-type:atomic_enterprise
- ems-type:azure
- ems-type:azure_network
- ems-type:ec2
- ems-type:openstack
- ems-type:ec2_network
- ems-type:foreman_configuration
- ems-type:foreman_provisioning
- ems-type:gce
- ems-type:hawkular
- ems-type:kubernetes
- ems-type:openshift
- ems-type:atomic
- ems-type:openshift_enterprise
- ems-type:atomic_enterprise
- ems-type:foreman_provisioning
- ems-type:gce
- ems-type:openstack
- ems-type:openstack_infra
- ems-type:openstack_network
- ems-type:rhevm
- ems-type:scvmm
- ems-type:vmwarews
86 changes: 40 additions & 46 deletions spec/lib/vmdb/permission_stores_spec.rb
@@ -1,73 +1,67 @@
require 'vmdb/permission_stores'
require 'tempfile'

describe Vmdb::PermissionStores do
before(:each) do
@original_store = Vmdb::PermissionStores.instance
end

after(:each) do
Vmdb::PermissionStores.instance = @original_store
end

it 'should be configurable' do
Vmdb::PermissionStores.configure do |config|
config.backend = 'yaml'
config.options[:filename] = 'some file'
end
config = Vmdb::PermissionStores.configuration
stub_vmdb_permission_store do
Vmdb::PermissionStores.configure do |config|
config.backend = 'yaml'
config.options[:filename] = 'some file'
end
config = Vmdb::PermissionStores.configuration

expect(config.backend).to eq('yaml')
expect(config.options[:filename]).to eq('some file')
expect(config.backend).to eq('yaml')
expect(config.options[:filename]).to eq('some file')
end
end

context 'configuration' do
it 'requires the backend' do
required_file = nil
stub_vmdb_permission_store do
required_file = nil

klass = Class.new(Vmdb::PermissionStores::Configuration) do
define_method(:require) do |file|
required_file = file
klass = Class.new(Vmdb::PermissionStores::Configuration) do
define_method(:require) do |file|
required_file = file
end
end
end

config = klass.new
config.backend = 'yaml'
config.load

expect(required_file).to eq('vmdb/permission_stores/yaml')
end

it 'can initialize the yaml back end' do
Tempfile.create(['config', 'yml']) do |f|
f.write Psych.dump(['foo'])
f.close

config = Vmdb::PermissionStores::Configuration.new
config = klass.new
config.backend = 'yaml'
config.options[:filename] = f.path
config.load
expect(config.create).to be_truthy

expect(required_file).to eq('vmdb/permission_stores/yaml')
end
end
end

context 'backend' do
it 'can be asked about permissions' do
Tempfile.create(['config', 'yml']) do |f|
f.write Psych.dump(['foo'])
f.close
it 'can initialize the yaml back end' do
stub_vmdb_permission_store do
Tempfile.create(%w(config yml)) do |f|
f.write(['foo'].to_yaml)
f.close

Vmdb::PermissionStores.configure do |config|
config = Vmdb::PermissionStores::Configuration.new
config.backend = 'yaml'
config.options[:filename] = f.path
config.load
expect(config.create).to be_truthy
end
end
end
end

Vmdb::PermissionStores.initialize!
describe '::YAML' do
it '#can?' do
stub_vmdb_permission_store_with_types(["foo"]) do
instance = Vmdb::PermissionStores.instance
expect(instance.can?('foo')).to be_truthy
expect(instance.can?('bar')).to be_falsey
end
end

it '#supported_ems_type?' do
stub_vmdb_permission_store_with_types(["ems-type:foo"]) do
instance = Vmdb::PermissionStores.instance
expect(instance.supported_ems_type?('foo')).to be_truthy
expect(instance.supported_ems_type?('bar')).to be_falsey
end
end
end
end
19 changes: 17 additions & 2 deletions spec/models/ext_management_system_spec.rb
Expand Up @@ -49,8 +49,23 @@
expect(described_class.supported_types).to match_array(all_types_and_descriptions.keys)
end

it ".supported_types_and_descriptions_hash" do
expect(described_class.supported_types_and_descriptions_hash).to eq(all_types_and_descriptions)
describe ".supported_types_and_descriptions_hash" do
it "with default permissions" do
expect(described_class.supported_types_and_descriptions_hash).to eq(all_types_and_descriptions)
end

it "with removed permissions" do
stub_vmdb_permission_store_with_types(["ems-type:vmwarews"]) do
expect(described_class.supported_types_and_descriptions_hash).to eq("vmwarews" => "VMware vCenter")
end
end

it "permissions.tmpl.yml should contain all EMS types" do
types = YAML.load_file(Rails.root.join("config/permissions.tmpl.yml"))
stub_vmdb_permission_store_with_types(types) do
expect(described_class.supported_types_and_descriptions_hash).to eq(all_types_and_descriptions)
end
end
end

it ".ems_infra_discovery_types" do
Expand Down
25 changes: 25 additions & 0 deletions spec/support/vmdb_permission_store_helper.rb
@@ -0,0 +1,25 @@
require 'tempfile'

def stub_vmdb_permission_store
original_store = Vmdb::PermissionStores.instance
yield
ensure
Vmdb::PermissionStores.instance = original_store
end

def stub_vmdb_permission_store_with_types(types)
stub_vmdb_permission_store do
Tempfile.create(%w(config yml)) do |f|
f.write(types.to_yaml)
f.close

Vmdb::PermissionStores.configure do |config|
config.backend = 'yaml'
config.options[:filename] = f.path
end
Vmdb::PermissionStores.initialize!

yield
end
end
end

0 comments on commit 74e87d9

Please sign in to comment.