@@ -19,7 +19,7 @@ impl<A: Adapter + 'static> Middleware<A> for Authenticate {
19
19
request : Request < Body > ,
20
20
application : & ' a Application < A > ,
21
21
) -> Result < Request < Body > , ResponseError > {
22
- for_request ( request, & application. adapter , application. redis . clone ( ) )
22
+ for_request ( request, & application. adapter , & application. redis . clone ( ) )
23
23
. await
24
24
. map_err ( |error| {
25
25
slog:: error!( & application. logger, "{}" , & error; "module" => "middleware-auth" ) ;
@@ -52,7 +52,7 @@ impl<A: Adapter + 'static> Middleware<A> for AuthRequired {
52
52
async fn for_request (
53
53
mut req : Request < Body > ,
54
54
adapter : & impl Adapter ,
55
- redis : MultiplexedConnection ,
55
+ redis : & MultiplexedConnection ,
56
56
) -> Result < Request < Body > , Box < dyn error:: Error > > {
57
57
let referrer = req
58
58
. headers ( )
@@ -128,37 +128,38 @@ fn get_request_ip(req: &Request<Body>) -> Option<String> {
128
128
#[ cfg( test) ]
129
129
mod test {
130
130
use hyper:: Request ;
131
-
132
131
use adapter:: DummyAdapter ;
133
132
use primitives:: adapter:: DummyAdapterOptions ;
134
- use primitives :: config :: configuration ;
133
+
135
134
use primitives:: util:: tests:: prep_db:: { AUTH , IDS } ;
136
- use std:: env;
137
135
138
- use crate :: db:: redis_connection;
136
+
137
+ use primitives:: {
138
+ config:: configuration,
139
+ Config ,
140
+ } ;
141
+
142
+ use deadpool:: managed:: Object ;
143
+
144
+ use crate :: {
145
+ db:: redis_pool:: { Database , TESTS_POOL } ,
146
+ Session ,
147
+ } ;
148
+ use std:: env;
139
149
140
150
use super :: * ;
141
151
142
- async fn setup ( db_index : usize ) -> ( DummyAdapter , MultiplexedConnection ) {
152
+ async fn setup ( ) -> ( DummyAdapter , Object < Database , crate :: db:: redis_pool:: Error > ) {
153
+ let connection = TESTS_POOL . get ( ) . await . expect ( "Should return Object" ) ;
143
154
let adapter_options = DummyAdapterOptions {
144
155
dummy_identity : IDS [ "leader" ] ,
145
156
dummy_auth : IDS . clone ( ) ,
146
157
dummy_auth_tokens : AUTH . clone ( ) ,
147
158
} ;
148
159
let config = configuration ( "development" , None ) . expect ( "Dev config should be available" ) ;
149
160
let url = env:: var ( "REDIS_URL" ) . unwrap_or_else ( |_| String :: from ( "redis://127.0.0.1:6379" ) ) ;
150
- let mut redis = redis_connection ( url. as_str ( ) )
151
- . await
152
- . expect ( "Couldn't connect to Redis" ) ;
153
- let _ = redis:: cmd ( "SELECT" )
154
- . arg ( db_index)
155
- . query_async :: < _ , String > ( & mut redis)
156
- . await ;
157
- // run `FLUSHDB` to clean any leftovers of other tests
158
- let _ = redis:: cmd ( "FLUSHDB" )
159
- . query_async :: < _ , String > ( & mut redis)
160
- . await ;
161
- ( DummyAdapter :: init ( adapter_options, & config) , redis)
161
+
162
+ ( DummyAdapter :: init ( adapter_options, & config) , connection)
162
163
}
163
164
164
165
#[ tokio:: test]
@@ -167,8 +168,8 @@ mod test {
167
168
. body ( Body :: empty ( ) )
168
169
. expect ( "should never fail!" ) ;
169
170
170
- let ( dummy_adapter, redis ) = setup ( 0 ) . await ;
171
- let no_auth = for_request ( no_auth_req, & dummy_adapter, redis . clone ( ) )
171
+ let ( dummy_adapter, database ) = setup ( ) . await ;
172
+ let no_auth = for_request ( no_auth_req, & dummy_adapter, & database )
172
173
. await
173
174
. expect ( "Handling the Request shouldn't have failed" ) ;
174
175
@@ -182,7 +183,7 @@ mod test {
182
183
. header ( AUTHORIZATION , "Wrong Header" )
183
184
. body ( Body :: empty ( ) )
184
185
. unwrap ( ) ;
185
- let incorrect_auth = for_request ( incorrect_auth_req, & dummy_adapter, redis . clone ( ) )
186
+ let incorrect_auth = for_request ( incorrect_auth_req, & dummy_adapter, & database )
186
187
. await
187
188
. expect ( "Handling the Request shouldn't have failed" ) ;
188
189
assert ! (
@@ -195,7 +196,7 @@ mod test {
195
196
. header ( AUTHORIZATION , "Bearer wrong-token" )
196
197
. body ( Body :: empty ( ) )
197
198
. unwrap ( ) ;
198
- match for_request ( non_existent_token_req, & dummy_adapter, redis ) . await {
199
+ match for_request ( non_existent_token_req, & dummy_adapter, & database ) . await {
199
200
Err ( error) => {
200
201
assert ! ( error. to_string( ) . contains( "no session token for this auth: wrong-token" ) , "Wrong error received" ) ;
201
202
}
@@ -205,7 +206,7 @@ mod test {
205
206
206
207
#[ tokio:: test]
207
208
async fn session_from_correct_authentication_token ( ) {
208
- let ( dummy_adapter, redis ) = setup ( 1 ) . await ;
209
+ let ( dummy_adapter, database ) = setup ( ) . await ;
209
210
210
211
let token = AUTH [ "leader" ] . clone ( ) ;
211
212
let auth_header = format ! ( "Bearer {}" , token) ;
@@ -214,7 +215,7 @@ mod test {
214
215
. body ( Body :: empty ( ) )
215
216
. unwrap ( ) ;
216
217
217
- let altered_request = for_request ( req, & dummy_adapter, redis )
218
+ let altered_request = for_request ( req, & dummy_adapter, & database )
218
219
. await
219
220
. expect ( "Valid requests should succeed" ) ;
220
221
0 commit comments