Skip to content
This repository was archived by the owner on Jul 24, 2023. It is now read-only.

Commit e7e60f0

Browse files
committed
Assert that rules are executed when authenticating with SSO middleware
#748
1 parent be9a381 commit e7e60f0

File tree

1 file changed

+47
-8
lines changed

1 file changed

+47
-8
lines changed

tests/WindowsAuthenticateTest.php

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
use Mockery as m;
66
use Adldap\Query\Builder;
77
use Adldap\Laravel\Facades\Resolver;
8+
use Adldap\Laravel\Tests\Models\TestUser;
9+
use Adldap\Laravel\Validation\Rules\DenyTrashed;
810
use Adldap\Laravel\Middleware\WindowsAuthenticate;
911

1012
class WindowsAuthenticateTest extends DatabaseTestCase
@@ -16,8 +18,6 @@ public function middleware_authenticates_users()
1618

1719
$request->server->set('AUTH_USER', 'jdoe');
1820

19-
$middleware = app(WindowsAuthenticate::class);
20-
2121
$user = $this->makeLdapUser([
2222
'objectguid' => ['cc07cacc-5d9d-fa40-a9fb-3a4d50a172b0'],
2323
'cn' => ['John Doe'],
@@ -35,10 +35,9 @@ public function middleware_authenticates_users()
3535
->shouldReceive('getDatabaseIdColumn')->twice()->andReturn('objectguid')
3636
->shouldReceive('getDatabaseUsernameColumn')->once()->andReturn('email')
3737
->shouldReceive('getLdapDiscoveryAttribute')->once()->andReturn('userprincipalname')
38-
->shouldReceive('byModel')->once()->andReturn(($user));
38+
->shouldReceive('byModel')->once()->andReturn($user);
3939

40-
$middleware->handle($request, function () {
41-
});
40+
app(WindowsAuthenticate::class)->handle($request, function () {});
4241

4342
$authenticated = auth()->user();
4443

@@ -55,8 +54,6 @@ public function middleware_continues_request_when_user_is_not_found()
5554

5655
$request->server->set('AUTH_USER', 'jdoe');
5756

58-
$middleware = app(WindowsAuthenticate::class);
59-
6057
$query = m::mock(Builder::class);
6158

6259
$query
@@ -65,9 +62,51 @@ public function middleware_continues_request_when_user_is_not_found()
6562

6663
Resolver::shouldReceive('query')->once()->andReturn($query);
6764

68-
$middleware->handle($request, function () {
65+
app(WindowsAuthenticate::class)->handle($request, function () {});
66+
67+
$this->assertNull(auth()->user());
68+
}
69+
70+
/** @test */
71+
public function middleware_validates_authenticating_users()
72+
{
73+
// Deny deleted users from authenticating.
74+
config()->set('ldap_auth.rules', [DenyTrashed::class]);
75+
76+
// Create the deleted user.
77+
tap(new TestUser(), function ($user) {
78+
$user->name = 'John Doe';
79+
$user->email = '[email protected]';
80+
$user->password = 'secret';
81+
$user->deleted_at = now();
82+
83+
$user->save();
6984
});
7085

86+
$request = app('request');
87+
88+
$request->server->set('AUTH_USER', 'jdoe');
89+
90+
$user = $this->makeLdapUser([
91+
'objectguid' => ['cc07cacc-5d9d-fa40-a9fb-3a4d50a172b0'],
92+
'cn' => ['John Doe'],
93+
'userprincipalname' => ['[email protected]'],
94+
'samaccountname' => ['jdoe'],
95+
]);
96+
97+
$query = m::mock(Builder::class);
98+
99+
$query
100+
->shouldReceive('whereEquals')->once()->withArgs(['samaccountname', 'jdoe'])->andReturn($query)
101+
->shouldReceive('first')->once()->andReturn($user);
102+
103+
Resolver::shouldReceive('query')->once()->andReturn($query)
104+
->shouldReceive('getDatabaseIdColumn')->twice()->andReturn('objectguid')
105+
->shouldReceive('getDatabaseUsernameColumn')->once()->andReturn('email')
106+
->shouldReceive('getLdapDiscoveryAttribute')->once()->andReturn('userprincipalname');
107+
108+
app(WindowsAuthenticate::class)->handle($request, function () {});
109+
71110
$this->assertNull(auth()->user());
72111
}
73112
}

0 commit comments

Comments
 (0)