ldapquery/spec/unit/ldapquery_spec.rb
2017-02-20 14:00:46 -08:00

70 lines
2.2 KiB
Ruby

require 'spec_helper'
require 'puppet_x/ldapquery'
require 'net/ldap'
describe 'PuppetX::LDAPquery' do
describe 'results' do
let(:conf) do
{
host: 'ldap.example.com',
port: 9009
}
end
let(:base) { 'dc=example,dc=com' }
it 'fails with no filter' do
filter = ''
attributes = ['uid']
expect { PuppetX::LDAPquery.new(filter, attributes).results }.to raise_error
end
it 'does not fail when using defaults in puppet.conf' do
filter = '(uid=zach)'
attributes = ['uid']
l = PuppetX::LDAPquery.new(filter, attributes, base)
expect { l.ldap_config }.not_to raise_error
end
it 'returns the desired results' do
filter = '(uid=zach)'
attributes = ['uid']
wanted = [{ 'dn' => ['uid=zach,ou=users,dc=puppetlabs,dc=com'], 'uid' => ['zach'] }]
entries = Marshal.load(File.read('spec/fixtures/entries_single.obj'))
l = PuppetX::LDAPquery.new(filter, attributes, base)
allow(l).to receive(:entries).and_return(entries)
expect(l.results).to eq(wanted)
end
context 'a multivalued attribute is requested' do
it 'returns the attribute values as an array to the attribute' do
filter = '(uid=zach)'
attributes = ['objectClass']
wanted = [{ 'dn' => ['uid=zach,ou=users,dc=puppetlabs,dc=com'], 'objectclass' => %w(posixAccount shadowAccount inetOrgPerson puppetPerson ldapPublicKey top) }]
entries = Marshal.load(File.read('spec/fixtures/entries_objectClass.obj'))
l = PuppetX::LDAPquery.new(filter, attributes, base)
allow(l).to receive(:entries).and_return(entries)
expect(l.results).to eq(wanted)
end
it 'returns the attributes without new lines' do
filter = '(uid=zach)'
attributes = ['sshPublicKey']
wanted = [{ 'dn' => ['uid=zach,ou=users,dc=puppetlabs,dc=com'], 'sshpublickey' => ['ssh-rsa AAAAB...1== user@somewhere', 'ssh-rsa AAAAB...2== user@somewhereelse'] }]
entries = Marshal.load(File.read('spec/fixtures/entries_multivalue.obj'))
l = PuppetX::LDAPquery.new(filter, attributes, base)
allow(l).to receive(:entries).and_return(entries)
expect(l.results).to eq(wanted)
end
end
end
end