Allow for any order of user_roles
Change insync determination of the roles list to be order agnostic. The specific order in which the user roles appear in keystone does not matter. Closes-Bug: 1372493 Change-Id: Iaee28f45ebb68acbe3ed70e7c45d9397140169f3
This commit is contained in:
		 Christian Schnidrig
					Christian Schnidrig
				
			
				
					committed by
					
						 Mike Dorman
						Mike Dorman
					
				
			
			
				
	
			
			
			 Mike Dorman
						Mike Dorman
					
				
			
						parent
						
							a7c891b220
						
					
				
				
					commit
					93a67d7fd0
				
			| @@ -23,6 +23,11 @@ Puppet::Type.newtype(:keystone_user_role) do | ||||
|   end | ||||
|  | ||||
|   newproperty(:roles,  :array_matching => :all) do | ||||
|     def insync?(is) | ||||
|       return false unless is.is_a? Array | ||||
|       # order of roles does not matter | ||||
|       is.sort == self.should.sort | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   newproperty(:id) do | ||||
|   | ||||
							
								
								
									
										28
									
								
								spec/unit/type/keystone_user_role_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								spec/unit/type/keystone_user_role_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| require 'spec_helper' | ||||
| require 'puppet' | ||||
| require 'puppet/type/keystone_user_role' | ||||
|  | ||||
| describe Puppet::Type.type(:keystone_user_role) do | ||||
|  | ||||
|   before :each do | ||||
|     @user_roles = Puppet::Type.type(:keystone_user_role).new( | ||||
|     :name => 'foo@bar', | ||||
|     :roles => ['a', 'b'] | ||||
|     ) | ||||
|  | ||||
|     @roles = @user_roles.parameter('roles') | ||||
|   end | ||||
|  | ||||
|   it 'should not be in sync for' do | ||||
|     expect(@roles.insync?(['a', 'b', 'c'])).to be false | ||||
|     expect(@roles.insync?('a')).to be false | ||||
|     expect(@roles.insync?(['a'])).to be false | ||||
|     expect(@roles.insync?(nil)).to be false | ||||
|   end | ||||
|  | ||||
|   it 'should be in sync for' do | ||||
|     expect(@roles.insync?(['a', 'b'])).to be true | ||||
|     expect(@roles.insync?(['b', 'a'])).to be true | ||||
|   end | ||||
|  | ||||
| end | ||||
		Reference in New Issue
	
	Block a user