@@ -74,6 +74,8 @@ fn rocket() -> _ {
7474 . mount ( "/" , routes ! [
7575 routes:: options_auth_users,
7676 routes:: post_auth_users,
77+ routes:: options_auth_users_me,
78+ routes:: get_auth_users_me,
7779 routes:: options_auth_users_set_password,
7880 routes:: post_auth_users_set_password,
7981 routes:: options_auth_jwt_create,
@@ -167,6 +169,32 @@ mod tests {
167169 assert_eq ! ( response. into_string( ) . await . unwrap( ) , r#"{"detail":"User already exists"}"# ) ;
168170 }
169171
172+ #[ rocket:: async_test]
173+ async fn test_get_auth_users_me ( ) {
174+ let client = Client :: tracked ( rocket ( ) ) . await . unwrap ( ) ;
175+ // Create a user and token
176+ let token = create_token ( & client) . await ;
177+ // Attempt to get user data fails because no access token specified
178+ let request = client. get ( "/auth/users/me" )
179+ . header ( ContentType :: JSON ) ;
180+ let response = request. dispatch ( ) . await ;
181+ assert_eq ! ( response. status( ) , Status :: BadRequest ) ;
182+ // The attempt to get user data fails because, although a valid formatted token is
183+ // specified, the token is not correct.
184+ let request = client. get ( "/auth/users/me" )
185+ . header ( ContentType :: JSON )
186+ . header ( Header :: new ( "authorization" , "bearer false" ) ) ;
187+ let response = request. dispatch ( ) . await ;
188+ assert_eq ! ( response. status( ) , Status :: Unauthorized ) ;
189+ // Get user data
190+ let request = client. get ( "/auth/users/me" )
191+ . header ( ContentType :: JSON )
192+ . header ( Header :: new ( "authorization" , format ! ( "bearer {}" , token. access) ) ) ;
193+ let response = request. dispatch ( ) . await ;
194+ assert_eq ! ( response. status( ) , Status :: Ok ) ;
195+ assert_eq ! ( response. into_string( ) . await . unwrap( ) , r#"{"email":"test@rockpass.sample","id":1}"# ) ;
196+ }
197+
170198 #[ rocket:: async_test]
171199 async fn test_post_auth_jwt_create ( ) {
172200 let client = Client :: tracked ( rocket ( ) ) . await . unwrap ( ) ;
@@ -291,6 +319,13 @@ mod tests {
291319 let response = request. dispatch ( ) . await ;
292320 assert_eq ! ( response. status( ) , Status :: Created ) ;
293321 assert_eq ! ( response. into_string( ) . await . unwrap( ) , r#"{"detail":"Created new password entry for site rockpass.sample"}"# ) ;
322+ // Password is added with broken scheme
323+ let request = client. post ( "/passwords" )
324+ . header ( ContentType :: JSON )
325+ . header ( Header :: new ( "authorization" , format ! ( "bearer {}" , token. access) ) )
326+ . body ( r#"{"login":"bob@rockpass.sample","site":"bob.rockpass.sample","uppercase":true,"symbols":true,"lowercase":true,"number":true,"counter":1,"length":16}"# ) ;
327+ let response = request. dispatch ( ) . await ;
328+ assert_eq ! ( response. status( ) , Status :: Created ) ;
294329 }
295330
296331 #[ rocket:: async_test]
0 commit comments