You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: user.rs
    path of file: ./repos/labrinth/tests
    
    the code of the file until where you have to start completion: use crate::common::api_common::{ApiProject, ApiTeams};
use common::dummy_data::TestFile;
use common::{
    database::{FRIEND_USER_ID, FRIEND_USER_PAT, USER_USER_ID, USER_USER_PAT},
    environment::with_test_environment_all,
};

mod common;

// user GET (permissions, different users)
// users GET
// user auth
// user projects get
// user collections get
// patch user
// patch user icon

    
pub async fn get_user_projects_after_joining_team_shows_team_projects() {
    with_test_environment_all(None, |test_env| async move {
        let alpha_team_id = &test_env.dummy.project_alpha.team_id;
        let alpha_project_id = &test_env.dummy.project_alpha.project_id;
        let api = test_env.api;
        api.get_user_projects_deserialized_common(FRIEND_USER_ID, FRIEND_USER_PAT)
            .await;

        api.add_user_to_team(alpha_team_id, FRIEND_USER_ID, None, None, USER_USER_PAT)
            .await;
        api.join_team(alpha_team_id, FRIEND_USER_PAT).await;

        let projects = api
            .get_user_projects_deserialized_common(FRIEND_USER_ID, FRIEND_USER_PAT)
            .await;
        assert!(projects
            .iter()
            .any(|p| p.id.to_string() == *alpha_project_id));
    })
    .await;
}