5
5
use Mockery as m ;
6
6
use Adldap \Query \Builder ;
7
7
use Adldap \Laravel \Facades \Resolver ;
8
+ use Adldap \Laravel \Tests \Models \TestUser ;
9
+ use Adldap \Laravel \Validation \Rules \DenyTrashed ;
8
10
use Adldap \Laravel \Middleware \WindowsAuthenticate ;
9
11
10
12
class WindowsAuthenticateTest extends DatabaseTestCase
@@ -16,8 +18,6 @@ public function middleware_authenticates_users()
16
18
17
19
$ request ->server ->set ('AUTH_USER ' , 'jdoe ' );
18
20
19
- $ middleware = app (WindowsAuthenticate::class);
20
-
21
21
$ user = $ this ->makeLdapUser ([
22
22
'objectguid ' => ['cc07cacc-5d9d-fa40-a9fb-3a4d50a172b0 ' ],
23
23
'cn ' => ['John Doe ' ],
@@ -35,10 +35,9 @@ public function middleware_authenticates_users()
35
35
->shouldReceive ('getDatabaseIdColumn ' )->twice ()->andReturn ('objectguid ' )
36
36
->shouldReceive ('getDatabaseUsernameColumn ' )->once ()->andReturn ('email ' )
37
37
->shouldReceive ('getLdapDiscoveryAttribute ' )->once ()->andReturn ('userprincipalname ' )
38
- ->shouldReceive ('byModel ' )->once ()->andReturn (( $ user) );
38
+ ->shouldReceive ('byModel ' )->once ()->andReturn ($ user );
39
39
40
- $ middleware ->handle ($ request , function () {
41
- });
40
+ app (WindowsAuthenticate::class)->handle ($ request , function () {});
42
41
43
42
$ authenticated = auth ()->user ();
44
43
@@ -55,8 +54,6 @@ public function middleware_continues_request_when_user_is_not_found()
55
54
56
55
$ request ->server ->set ('AUTH_USER ' , 'jdoe ' );
57
56
58
- $ middleware = app (WindowsAuthenticate::class);
59
-
60
57
$ query = m::mock (Builder::class);
61
58
62
59
$ query
@@ -65,9 +62,51 @@ public function middleware_continues_request_when_user_is_not_found()
65
62
66
63
Resolver::shouldReceive ('query ' )->once ()->andReturn ($ query );
67
64
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 ();
69
84
});
70
85
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
+
71
110
$ this ->assertNull (auth ()->user ());
72
111
}
73
112
}
0 commit comments