mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-07-28 17:02:04 +03:00
Added dump_user_details option to LDAP and added binary attribute decode option
Related to #1872
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
<?php namespace Tests;
|
||||
|
||||
use BookStack\Auth\Access\LdapService;
|
||||
use BookStack\Auth\Role;
|
||||
use BookStack\Auth\Access\Ldap;
|
||||
use BookStack\Auth\User;
|
||||
@ -20,7 +21,7 @@ class LdapTest extends BrowserKitTest
|
||||
{
|
||||
parent::setUp();
|
||||
if (!defined('LDAP_OPT_REFERRALS')) define('LDAP_OPT_REFERRALS', 1);
|
||||
app('config')->set([
|
||||
config()->set([
|
||||
'auth.method' => 'ldap',
|
||||
'auth.defaults.guard' => 'ldap',
|
||||
'services.ldap.base_dn' => 'dc=ldap,dc=local',
|
||||
@ -560,4 +561,53 @@ class LdapTest extends BrowserKitTest
|
||||
$resp = $this->post('/register');
|
||||
$this->assertPermissionError($resp);
|
||||
}
|
||||
|
||||
public function test_dump_user_details_option_works()
|
||||
{
|
||||
config()->set(['services.ldap.dump_user_details' => true]);
|
||||
|
||||
$this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
|
||||
$this->mockLdap->shouldReceive('setVersion')->once();
|
||||
$this->mockLdap->shouldReceive('setOption')->times(1);
|
||||
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
|
||||
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
|
||||
->andReturn(['count' => 1, 0 => [
|
||||
'uid' => [$this->mockUser->name],
|
||||
'cn' => [$this->mockUser->name],
|
||||
'dn' => ['dc=test' . config('services.ldap.base_dn')]
|
||||
]]);
|
||||
$this->mockLdap->shouldReceive('bind')->times(1)->andReturn(true);
|
||||
$this->mockEscapes(1);
|
||||
|
||||
$this->post('/login', [
|
||||
'username' => $this->mockUser->name,
|
||||
'password' => $this->mockUser->password,
|
||||
]);
|
||||
$this->seeJsonStructure([
|
||||
'details_from_ldap' => [],
|
||||
'details_bookstack_parsed' => [],
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_ldap_attributes_can_be_binary_decoded_if_marked()
|
||||
{
|
||||
config()->set(['services.ldap.id_attribute' => 'BIN;uid']);
|
||||
$ldapService = app()->make(LdapService::class);
|
||||
|
||||
$this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
|
||||
$this->mockLdap->shouldReceive('setVersion')->once();
|
||||
$this->mockLdap->shouldReceive('setOption')->times(1);
|
||||
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
|
||||
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
|
||||
->andReturn(['count' => 1, 0 => [
|
||||
'uid' => [hex2bin('FFF8F7')],
|
||||
'cn' => [$this->mockUser->name],
|
||||
'dn' => ['dc=test' . config('services.ldap.base_dn')]
|
||||
]]);
|
||||
$this->mockLdap->shouldReceive('bind')->times(1)->andReturn(true);
|
||||
$this->mockEscapes(1);
|
||||
|
||||
$details = $ldapService->getUserDetails('test');
|
||||
$this->assertEquals('fff8f7', $details['uid']);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user