mirror of
https://github.com/philippdieter/puppet-ldapquery.git
synced 2025-10-13 12:55:48 +00:00
68 lines
2.3 KiB
Ruby
68 lines
2.3 KiB
Ruby
require 'spec_helper'
|
|
require 'puppet_x/ldapquery'
|
|
require 'net/ldap'
|
|
|
|
describe 'PuppetX::LDAPquery' do
|
|
describe 'results' do
|
|
let (:conf) { {
|
|
:host => 'ldap.example.com',
|
|
:port => 9009,
|
|
} }
|
|
|
|
let (:base) { 'dc=example,dc=com' }
|
|
|
|
it "should fail with no filter" do
|
|
filter = ''
|
|
attributes = ['uid']
|
|
expect { PuppetX::LDAPquery.new(filter, attributes).results }.to raise_error
|
|
end
|
|
|
|
it "should not fail when using defaults in puppet.conf" do
|
|
filter = '(uid=zach)'
|
|
attributes = ['uid']
|
|
l = PuppetX::LDAPquery.new(filter, attributes, base)
|
|
expect { l.get_config }.to_not raise_error
|
|
end
|
|
|
|
it 'should return 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)
|
|
|
|
expect(l).to receive(:get_entries).and_return(entries)
|
|
expect(l.results).to eq(wanted)
|
|
end
|
|
|
|
context "a multivalued attribute is requested" do
|
|
it 'should return 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"=>["posixAccount", "shadowAccount", "inetOrgPerson", "puppetPerson", "ldapPublicKey", "top"]}]
|
|
|
|
entries = Marshal.load(File.read("spec/fixtures/entries_objectClass.obj"))
|
|
|
|
l = PuppetX::LDAPquery.new(filter, attributes, base)
|
|
expect(l).to receive(:get_entries).and_return(entries)
|
|
expect(l.results).to eq(wanted)
|
|
end
|
|
it 'should return 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)
|
|
expect(l).to receive(:get_entries).and_return(entries)
|
|
expect(l.results).to eq(wanted)
|
|
end
|
|
end
|
|
end
|
|
end
|