var ldap = require('../../src/lib/ldap');
var sinon = require('sinon');
var sinonPromise = require('sinon-promise');

sinonPromise(sinon);

var autoResolving = sinon.promise().resolves();

function test_validate(bind_mock) {
    var username = 'user';
    var password = 'password';
    var ldap_url = 'http://ldap';
    var users_dn = 'dc=example,dc=com';
    
    var ldap_client_mock = {
      bind: bind_mock
    }

    return ldap.validate(ldap_client_mock, username, password, ldap_url, users_dn);
}

describe('test ldap validation', function() {
  it('should bind the user if good credentials provided', function() {
    var bind_mock = sinon.mock().yields();
    return test_validate(bind_mock);
  });

  it('should not bind the user if wrong credentials provided', function() {
    var bind_mock = sinon.mock().yields('wrong credentials');
    var promise = test_validate(bind_mock);
    return promise.error(autoResolving);
  });
});