fix: refine mini program nickname collection flow

This commit is contained in:
kdletters
2026-06-07 00:42:05 +08:00
parent 79d0d7a305
commit e3ecac85f3
8 changed files with 109 additions and 10 deletions

View File

@@ -2640,6 +2640,7 @@ mod tests {
login_payload["bindingStatus"],
Value::String("pending_bind_phone".to_string())
);
assert_eq!(login_payload["created"], Value::Bool(true));
assert_eq!(
login_payload["user"]["loginMethod"],
Value::String("wechat".to_string())
@@ -2746,6 +2747,7 @@ mod tests {
login_payload["bindingStatus"],
Value::String("pending_bind_phone".to_string())
);
assert_eq!(login_payload["created"], Value::Bool(true));
let bind_response = app
.oneshot(
@@ -4423,4 +4425,4 @@ mod tests {
assert_eq!(response.status(), StatusCode::NOT_FOUND, "{path}");
}
}
}
}

View File

@@ -349,6 +349,7 @@ pub async fn login_wechat_mini_program(
token: signed_session.access_token,
binding_status: result.user.binding_status.as_str().to_string(),
user: map_auth_user_payload(result.user),
created: result.created,
},
),
))

View File

@@ -253,6 +253,7 @@ pub struct WechatMiniProgramLoginResponse {
pub token: String,
pub binding_status: String,
pub user: AuthUserPayload,
pub created: bool,
}
pub fn build_available_login_methods(
@@ -389,4 +390,29 @@ mod tests {
})
);
}
#[test]
fn wechat_mini_program_login_response_marks_created_user() {
let payload = serde_json::to_value(WechatMiniProgramLoginResponse {
token: "token-001".to_string(),
binding_status: AUTH_BINDING_STATUS_PENDING_BIND_PHONE.to_string(),
user: AuthUserPayload {
id: "user_001".to_string(),
public_user_code: "SY-00000001".to_string(),
display_name: "微信旅人".to_string(),
avatar_url: None,
phone_number: None,
phone_number_masked: None,
login_method: AUTH_LOGIN_METHOD_WECHAT.to_string(),
binding_status: AUTH_BINDING_STATUS_PENDING_BIND_PHONE.to_string(),
wechat_bound: true,
wechat_display_name: None,
wechat_account: Some("wx-openid-001".to_string()),
},
created: true,
})
.expect("payload should serialize");
assert_eq!(payload["created"], serde_json::Value::Bool(true));
}
}