@@ -61,8 +61,73 @@ public function testUserIsAuthenticated()
61
61
/** @var ServerRequestInterface $request */
62
62
$ request = $ this ->request ->withAttribute ('test_transport ' , new AuthorizationTransport ($ session_adapter , $ user , $ session , [1 , 2 , 3 ]));
63
63
64
+ $ middleware = new ApplyAuthenticationMiddleware ('test_transport ' );
65
+ $ this ->assertFalse ($ middleware ->applyOnExit ());
66
+
67
+ /** @var ResponseInterface $response */
68
+ $ response = call_user_func ($ middleware , $ request , $ this ->response );
69
+
70
+ $ this ->assertInstanceOf (ResponseInterface::class, $ response );
71
+
72
+ $ set_cookie_header = $ response ->getHeaderLine ('Set-Cookie ' );
73
+
74
+ $ this ->assertNotEmpty ($ set_cookie_header );
75
+ $ this ->assertContains ($ session_cookie_name , $ set_cookie_header );
76
+ $ this ->assertContains ('my-session-id ' , $ set_cookie_header );
77
+ }
78
+
79
+ /**
80
+ * Test if next middleware in stack is called.
81
+ */
82
+ public function testNextIsCalled ()
83
+ {
64
84
/** @var ResponseInterface $response */
65
- $ response = call_user_func (new ApplyAuthenticationMiddleware ('test_transport ' ), $ request , $ this ->response );
85
+ $ response = call_user_func (new ApplyAuthenticationMiddleware ('test_transport ' ), $ this ->request , $ this ->response , function (ServerRequestInterface $ request , ResponseInterface $ response , callable $ next = null ) {
86
+ $ response = $ response ->withHeader ('X-Test ' , 'Yes, found! ' );
87
+
88
+ if ($ next ) {
89
+ $ response = $ next ($ request , $ response );
90
+ }
91
+
92
+ return $ response ;
93
+ });
94
+
95
+ $ this ->assertInstanceOf (ResponseInterface::class, $ response );
96
+ $ this ->assertSame ('Yes, found! ' , $ response ->getHeaderLine ('X-Test ' ));
97
+ }
98
+
99
+ /**
100
+ * Test if authentication is applied based on request attribute.
101
+ */
102
+ public function testUserIsAuthentiatedOnExit ()
103
+ {
104
+ $ user =
new AuthenticatedUser (
1 ,
'[email protected] ' ,
'Ilija Studen ' ,
'123 ' );
105
+ $ user_repository = new UserRepository ([
106
+ '[email protected] ' =>
new AuthenticatedUser (
1 ,
'[email protected] ' ,
'Ilija Studen ' ,
'123 ' ),
107
+ ]);
108
+ $ session_repository =
new SessionRepository ([
new Session (
'my-session-id ' ,
'[email protected] ' )]);
109
+
110
+ $ session_cookie_name = 'test-session-cookie ' ;
111
+
112
+ $ session_adapter = new BrowserSessionAdapter ($ user_repository , $ session_repository , $ this ->cookies , $ session_cookie_name );
113
+ $ session = $ session_adapter ->authenticate ($ user , []);
114
+
115
+ /** @var ServerRequestInterface $request */
116
+ $ request = $ this ->request ->withAttribute ('test_transport ' , new AuthorizationTransport ($ session_adapter , $ user , $ session , [1 , 2 , 3 ]));
117
+
118
+ $ middleware = new ApplyAuthenticationMiddleware ('test_transport ' , true );
119
+ $ this ->assertTrue ($ middleware ->applyOnExit ());
120
+
121
+ /** @var ResponseInterface $response */
122
+ $ response = call_user_func ($ middleware , $ request , $ this ->response , function (ServerRequestInterface $ request , ResponseInterface $ response , callable $ next = null ) {
123
+ $ this ->assertEmpty ($ response ->getHeaderLine ('Set-Cookie ' ));
124
+
125
+ if ($ next ) {
126
+ $ response = $ next ($ request , $ response );
127
+ }
128
+
129
+ return $ response ;
130
+ });
66
131
67
132
$ this ->assertInstanceOf (ResponseInterface::class, $ response );
68
133
0 commit comments