class Soar::Registry::Directory::Test::Provider::Ldap
Public Class Methods
new()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 11 def initialize @configuration = YAML.load_file("config/#{ENV['CONFIG_FILE']}") @base = @configuration['provider']['config']['base'] @index = @configuration['provider']['config']['index'] @entries = [{ "dn" => "cn=John Smith,#{@base}", "attributes" => { "cn" => "John Smith", "mail" => "test@example.com", "objectclass" => ["inetOrgPerson", "top"], "sn" => "Smith" } }, { "dn" => "cn=Sarel Cilliers,#{@base}", "attributes" => { "cn" => "Sarel Cilliers", "mail" => "sarel@example.com", "objectclass" => ["inetOrgPerson", "top"], "sn" => "Cilliers" } }] @connection_retries = 6 end
Public Instance Methods
duplicate_entry?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 117 def duplicate_entry? @error.is_a?(Soar::Registry::Directory::Error::DuplicateEntryError) end
fetch_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 109 def fetch_entry begin @result = @directory.fetch(@entries[0]['attributes']['entryuuid']) rescue Soar::Registry::Directory::Error::NoEntriesFoundError, Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
given_configured_directory()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 35 def given_configured_directory begin provider_class = Object.const_get(@configuration['provider']['class']) provider = provider_class.new(@configuration['provider']['config'].map { |k,v| [k.to_sym, v] }.to_h ) @directory = Soar::Registry::Directory.new(provider) @entries.each { |entry| provider.delete(entry['dn']) } rescue Soar::Registry::Directory::Error::NetworkingError => e raise if @connection_retries == 0 sleep 10 @connection_retries -= 1 given_configured_directory end end
given_existing_data()
click to toggle source
Adds @entries to datastore using ldap protocol Adds entryuuid to @entries
# File lib/soar/registry/directory/test/provider/ldap.rb, line 55 def given_existing_data @entries.each{ |entry| @directory.put(entry) result = @directory.search("mail", entry['attributes']['mail']) entry['attributes']['entryuuid'] = result[0][@index[0]] } end
index?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 134 def index? @index.is_a?(Array) end
networking_error?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 152 def networking_error? @error.is_a?(Soar::Registry::Directory::Error::NetworkingError) end
no_entries_found?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 144 def no_entries_found? @error.is_a?(Soar::Registry::Directory::Error::NoEntriesFoundError) end
no_matching_entries?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 148 def no_matching_entries? @result == [] end
persisted?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 121 def persisted? result = @directory.fetch(@entries[0]['attributes']['entryuuid']) entry = @entries[0]['attributes'] entry.delete('objectclass') result == entry end
put_duplicate_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 75 def put_duplicate_entry begin @directory.put(@entries[0]) rescue Soar::Registry::Directory::Error::DuplicateEntryError => e @error = e end end
put_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 83 def put_entry begin @directory.put(@entries[0]) result = @directory.search("mail", @entries[0]['attributes']['mail']) @entries[0]['attributes']['entryuuid'] = result[0][@index[0]] rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
request_index()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 101 def request_index begin @result = @directory.index rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
returned?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 128 def returned? entry = @entries[0]['attributes'] entry.delete('objectclass') @result == [entry] end
sabotage_network()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 63 def sabotage_network @directory.provider.client = Net::LDAP.new({ host: 'localhost', port: @configuration['provider']['config']['config']['port'], auth: { method: :simple, username: @configuration['provider']['config']['credentials']['username'], password: @configuration['provider']['config']['credentials']['password'] } }) end
search_for_entry()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 93 def search_for_entry begin @result = @directory.search("mail", @entries[0]['attributes']['mail']) rescue Soar::Registry::Directory::Error::NetworkingError => e @error = e end end
single_entry?()
click to toggle source
# File lib/soar/registry/directory/test/provider/ldap.rb, line 138 def single_entry? entry = @entries[0]['attributes'] entry.delete('objectclass') @result == entry end