Sha256: 1b6c2aa8b967759aa0e170567673895957fbb691931a11e1dd389c0643aab864

Contents?: true

Size: 720 Bytes

Versions: 1

Compression:

Stored size: 720 Bytes

Contents

require "database_cleaner/strategy"

module DatabaseCleaner
  module Ldap
    class Deletion < Strategy
      attr_reader :filter

      def initialize(filter: nil)
        raise ArgumentError,
          "Option :filter must be a Net::LDAP::Filter" unless filter.nil? || filter.is_a?(Net::LDAP::Filter)

        @filter = filter
      end

      def clean
        entries.each { |ldap_entry| delete! ldap_entry.dn }
      end

      def db
        @db ||= Net::LDAP.new
      end

      private

      def entries
        Array db.search(filter: filter)
      end

      def delete!(dn)
        db.delete(dn: dn) or
          raise "Could no delete #{dn}. Reason: #{db.get_operation_result}"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
database_cleaner-ldap-0.1.0.pre.1 lib/database_cleaner/ldap/deletion.rb