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: users.rs
    path of file: ./repos/shuttle/auth/tests/api
    
    the code of the file until where you have to start completion: mod needs_docker {
    use crate::{
        helpers::{self, 
    
    async fn downgrade_in_case_subscription_due_payment() {
        let app = app().await;

        // POST user first so one exists in the database.
        let response = app.post_user("test-user", "basic").await;
        assert_eq!(response.status(), StatusCode::OK);

        // Test upgrading to pro with a subscription id that points to a due session.
        let response = app
            .post_subscription(
                "test-user",
                MOCKED_OVERDUE_PAYMENT_CHECKOUT_SUBSCRIPTION_ID,
                "pro",
                1,
            )
            .await;
        assert_eq!(response.status(), StatusCode::OK);

        // The auth service should call stripe to fetch the subscription with the sub id, and return a subscription
        // that is pending payment.
        let response = app
            .get_user_with_mocked_stripe(
                MOCKED_OVERDUE_PAYMENT_CHECKOUT_SUBSCRIPTION_ID,
                MOCKED_PAST_DUE_SUBSCRIPTION,
                "test-user",
            )
            .await;

        assert_eq!(response.status(), StatusCode::OK);

        let body = hyper::body::to_bytes(response.into_body()).await.unwrap();
        let actual_user: Value = serde_json::from_slice(&body).unwrap();

        assert_eq!(
            actual_user.get("account_tier").unwrap(),
            "pendingpaymentpro"
        );
    }