diff --git a/.travis.yml b/.travis.yml index a52b50b..b4b2ddb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,8 +8,11 @@ rvm: - ruby-head env: - "rake=0.9" -script: "bundle exec rspec -t no_ad" -before_script: "mkdir log" +script: "bundle exec rspec -c" +before_install: + - travis/before_install.sh +before_script: + - travis/before_script.sh notifications: email: false matrix: diff --git a/lib/adauth.rb b/lib/adauth.rb index e2bcd06..7a6a69d 100644 --- a/lib/adauth.rb +++ b/lib/adauth.rb @@ -46,11 +46,11 @@ def self.connection # Connects to ActiveDirectory using the query user details def self.connect @logger.info('connection') { "Connecting to AD as \"#{@config.query_user}\"" } - @connection = Adauth::Connection.new(connection_hash(@config.query_user, @config.query_password)).bind + @connection = Adauth::Connection.new(connection_hash(@config.query_user, @config.query_password, @config.query_user_dn)).bind end # Generates a hash for the connection class, takes a username and password - def self.connection_hash(user, password) + def self.connection_hash(user, password, bind_dn = false) { :domain => @config.domain, :server => @config.server, @@ -60,6 +60,7 @@ def self.connection_hash(user, password) :allow_fallback => @config.allow_fallback, :username => user, :password => password, + :bind_dn => bind_dn, :anonymous_bind => @config.anonymous_bind } end diff --git a/lib/adauth/config.rb b/lib/adauth/config.rb index 5bc8ff4..3efce25 100644 --- a/lib/adauth/config.rb +++ b/lib/adauth/config.rb @@ -5,7 +5,7 @@ module Adauth class Config attr_accessor :domain, :port, :base, :server, :encryption, :query_user, :query_password, :allow_fallback, :allowed_groups, :denied_groups, :allowed_ous, :denied_ous, :contains_nested_groups, - :anonymous_bind + :anonymous_bind, :query_user_dn def initialize @port = 389 diff --git a/lib/adauth/connection.rb b/lib/adauth/connection.rb index 2b6ceee..bd7ef97 100644 --- a/lib/adauth/connection.rb +++ b/lib/adauth/connection.rb @@ -25,7 +25,9 @@ def bind raise "Anonymous Bind is disabled" if @config[:password] == "" && !(@config[:anonymous_bind]) - conn.auth "#{@config[:username]}@#{@config[:domain]}", @config[:password] + auth_name = @config[:bind_dn] ? @config[:bind_dn] : "#{@config[:username]}@#{@config[:domain]}" + + conn.auth auth_name, @config[:password] begin Timeout::timeout(10){ diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b7458cb..46c9810 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -14,6 +14,7 @@ def default_config c.server = test_data("domain", "server") c.encryption = test_data("domain", "encryption").to_sym if test_data("domain", "encryption") c.allow_fallback = test_data("domain", "allow_fallback") if test_data("domain", "allow_fallback") + c.query_user_dn = test_data("domain", "query_user_dn") if test_data("domain", "query_user_dn") c.query_user = test_data("domain", "query_user") c.query_password = test_data("domain", "query_password") end diff --git a/travis/before_install.sh b/travis/before_install.sh new file mode 100755 index 0000000..0e164bc --- /dev/null +++ b/travis/before_install.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +sudo apt-get install -y ldap-utils slapd diff --git a/travis/before_script.sh b/travis/before_script.sh new file mode 100755 index 0000000..20202d6 --- /dev/null +++ b/travis/before_script.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# Create the Logs directory +mkdir log + +# Generate admin password +password="secret" +crypted_password=`slappasswd -s $password` +echo "crtpyed password: ${crypted_password}" + +# Apply the administrator password +cat < travis/ldif/query_user.ldif +dn: cn=adauth,${base} +cn: Adauth +objectClass: account +objectClass: top +userPassword: ${crypted_password} +sn: Tests +EOF + +# Add the new user +sudo ldapadd -D "cn=admin,${base}" -w $password -x -f travis/ldif/query_user.ldif + +# Generate the tests config file +cat < spec/test_data.yml +domain: + domain: ${domain} + port: 389 + base: ${base} + server: 127.0.0.1 + query_user: adauth + query_user_dn: cn=admin,${base} + query_password: ${password} + breakable_user: foo + breakable_password: bar + testable_ou: Foo +EOF + +# Output the config file for debugging purposes +cat spec/test_data.yml diff --git a/travis/ldif/phonetic-attribute-options.ldif b/travis/ldif/phonetic-attribute-options.ldif new file mode 100644 index 0000000..d72fec5 --- /dev/null +++ b/travis/ldif/phonetic-attribute-options.ldif @@ -0,0 +1,5 @@ +version: 1 +dn: cn=config +changetype: modify +add: olcAttributeOptions +olcAttributeOptions: phonetic lang-