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