123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- # rails autoloading issue
- require 'ldap'
- require 'ldap/group'
- RSpec.describe Ldap::Group do
- # required as 'let' to perform test based
- # expectations and reuse it in 'let' instance
- # as additional parameter
- let(:mocked_ldap) { double }
- describe '.uid_attribute' do
- it 'responds to .uid_attribute' do
- expect(described_class).to respond_to(:uid_attribute)
- end
- it 'returns uid attribute' do
- expect(described_class.uid_attribute).to be_a(String)
- end
- end
- describe 'initialization config parameters' do
- it 'reuses given Ldap instance if given' do
- config = {}
- expect(Ldap).not_to receive(:new).with(config)
- described_class.new(config, ldap: mocked_ldap)
- end
- it 'takes optional filter' do
- filter = '(objectClass=custom)'
- config = {
- filter: filter
- }
- instance = described_class.new(config, ldap: mocked_ldap)
- expect(instance.filter).to eq(filter)
- end
- it 'takes optional uid_attribute' do
- uid_attribute = 'dn'
- config = {
- uid_attribute: uid_attribute
- }
- instance = described_class.new(config, ldap: mocked_ldap)
- expect(instance.uid_attribute).to eq(uid_attribute)
- end
- it 'creates own Ldap instance if none given' do
- expect(Ldap).to receive(:new)
- described_class.new
- end
- end
- describe 'instance methods' do
- let(:initialization_config) do
- {
- uid_attribute: 'dn',
- filter: '(objectClass=group)',
- }
- end
- let(:instance) do
- described_class.new(initialization_config, ldap: mocked_ldap)
- end
- describe '#list' do
- it 'responds to #list' do
- expect(instance).to respond_to(:list)
- end
- it 'returns a Hash of groups' do
- ldap_entry = build(:ldap_entry)
- allow(mocked_ldap).to receive(:search).and_return(ldap_entry)
- expect(instance.list).to be_a(Hash)
- end
- end
- describe '#filter' do
- let(:initialization_config) do
- {
- uid_attribute: 'dn',
- }
- end
- it 'responds to #filter' do
- expect(instance).to respond_to(:filter)
- end
- it 'tries filters and returns first one with entries' do
- allow(mocked_ldap).to receive(:entries?).and_return(true)
- expect(instance.filter).to be_a(String)
- end
- it 'fails if no filter found entries' do
- allow(mocked_ldap).to receive(:entries?).and_return(false)
- expect(instance.filter).to be_nil
- end
- end
- describe '#uid_attribute' do
- it 'responds to #uid_attribute' do
- expect(instance).to respond_to(:uid_attribute)
- end
- it 'returns the uid attribute' do
- expect(instance.uid_attribute).to be_a(String)
- end
- end
- end
- end
|