def METHOD_NAME(
    client, csrf_token, login, user_rincewind: models.User
) -> None:
    """Add a new phone number with an OTP and confirm an incorrect OTP is rejected."""
    login.as_(user_rincewind)
    assert user_rincewind.phones == []
    with patch(PATCH_SMS_OTP_SEND, autospec=True, return_value=True) as mock:
        rv1 = client.post(
            '/account/phone/new',
            data=MultiDict({'csrf_token': csrf_token, 'phone': TEST_NEW_PHONE}),
        )
        assert rv1.status_code == 303
        otp_session = mock.call_args[0][0]  # First call, first argument (self)
        caught_otp = otp_session.otp
    rv2 = client.post(
        rv1.location,
        data=MultiDict({'csrf_token': csrf_token, 'otp': get_wrong_otp(caught_otp)}),
    )
    assert 'OTP is incorrect' in rv2.data.decode()