Beispiel #1
0
def test_application_for_native_app_user(app):
    # Given
    users_api.create_account(
        email=JOUVE_CONTENT["email"],
        password="******",
        birthdate=AGE18_ELIGIBLE_BIRTH_DATE,
        is_email_validated=True,
        send_activation_mail=False,
        marketing_email_subscription=False,
        phone_number="0607080900",
    )
    push_testing.reset_requests()

    # When
    create_beneficiary_from_application.execute(APPLICATION_ID)

    # Then
    beneficiary = User.query.one()

    # the fake Jouve backend returns a default phone number. Since a User
    # alredy exists, the phone number should not be updated during the import process
    assert beneficiary.phoneNumber == "0607080900"

    deposit = Deposit.query.one()
    assert deposit.amount == 300
    assert deposit.source == "dossier jouve [35]"
    assert deposit.userId == beneficiary.id

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.CREATED
    assert beneficiary_import.applicationId == APPLICATION_ID
    assert beneficiary_import.beneficiary == beneficiary
    assert beneficiary.notificationSubscriptions == {"marketing_push": True, "marketing_email": False}

    assert len(push_testing.requests) == 1
Beispiel #2
0
def test_id_piece_number_by_pass(
    mocked_get_content,
    app,
):
    # Given
    ID_PIECE_NUMBER = "NOT_APPLICABLE"
    subscribing_user = UserFactory(
        isBeneficiary=False,
        dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
        email=BASE_JOUVE_CONTENT["email"],
    )
    UserFactory(idPieceNumber=ID_PIECE_NUMBER)
    UserFactory(idPieceNumber=None)
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {"bodyPieceNumber": ID_PIECE_NUMBER}

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID, ignore_id_piece_number_field=True)

    # Then
    beneficiary_import = BeneficiaryImport.query.filter(BeneficiaryImport.beneficiary == subscribing_user).first()

    assert beneficiary_import.currentStatus == ImportStatus.CREATED
    assert subscribing_user.has_beneficiary_role
    assert not subscribing_user.idPieceNumber

    assert len(mails_testing.outbox) == 1
Beispiel #3
0
def test_cannot_save_beneficiary_if_duplicate(app):
    # Given
    first_name = "Thomas"
    last_name = "DURAND"
    date_of_birth = datetime(1995, 2, 5)
    existing_user_id = 4

    user = create_user(first_name=first_name,
                       last_name=last_name,
                       date_of_birth=date_of_birth,
                       idx=existing_user_id)
    repository.save(user)

    application_id = 35

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    user = User.query.one()
    assert user.id == existing_user_id

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.applicationId == application_id
    assert beneficiary_import.beneficiary is None
    assert beneficiary_import.detail == f"User with id {existing_user_id} is a duplicate."
Beispiel #4
0
def test_id_piece_number_no_duplicate(
    mocked_get_content,
    app,
):
    # Given
    ID_PIECE_NUMBER = "140767100016"
    subscribing_user = UserFactory(
        isBeneficiary=False,
        dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
        email=BASE_JOUVE_CONTENT["email"],
        idPieceNumber=None,
    )
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {"bodyPieceNumber": ID_PIECE_NUMBER}

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)

    # Then
    beneficiary_import = BeneficiaryImport.query.filter(BeneficiaryImport.beneficiary == subscribing_user).first()
    assert beneficiary_import.currentStatus == ImportStatus.CREATED

    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2016025

    db.session.refresh(subscribing_user)
    assert subscribing_user.idPieceNumber == ID_PIECE_NUMBER
Beispiel #5
0
def test_cannot_save_beneficiary_if_duplicate(app):
    # Given
    first_name = "Thomas"
    last_name = "DURAND"
    date_of_birth = AGE18_ELIGIBLE_BIRTH_DATE.replace(hour=0, minute=0, second=0, microsecond=0)

    applicant = users_factories.UserFactory(
        firstName=JOUVE_CONTENT["firstName"], lastName=JOUVE_CONTENT["lastName"], email=JOUVE_CONTENT["email"]
    )

    existing_user = users_factories.BeneficiaryGrant18Factory(
        firstName=first_name, lastName=last_name, dateOfBirth=date_of_birth
    )

    # When
    create_beneficiary_from_application.execute(APPLICATION_ID)

    # Then
    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.applicationId == APPLICATION_ID
    assert beneficiary_import.detail == f"User with id {existing_user.id} is a duplicate."
    assert beneficiary_import.beneficiary is applicant

    assert len(applicant.subscriptionMessages) == 1
    sub_msg = applicant.subscriptionMessages[0]
    assert (
        sub_msg.userMessage
        == "Ce document a déjà été analysé. Vérifie que tu n’as pas créé de compte avec une autre adresse e-mail. Consulte l’e-mail envoyé le 30/10/2021 pour plus d’informations."
    )
    assert sub_msg.callToActionIcon == subscription_models.CallToActionIcon.EMAIL
def test_application_for_native_app_user(mocked_send_accepted_as_beneficiary_email, app):
    # Given
    application_id = 35
    users_api.create_account(
        email=PRE_SUBSCRIPTION_BASE_DATA["email"],
        password="******",
        birthdate=PRE_SUBSCRIPTION_BASE_DATA["date_of_birth"],
        is_email_validated=True,
        send_activation_mail=False,
    )

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    mocked_send_accepted_as_beneficiary_email.assert_called_once()

    beneficiary = User.query.one()
    deposit = Deposit.query.one()
    assert deposit.amount == 500
    assert deposit.source == "dossier jouve [35]"
    assert deposit.userId == beneficiary.id

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.CREATED
    assert beneficiary_import.applicationId == application_id
    assert beneficiary_import.beneficiary == beneficiary
Beispiel #7
0
def test_jouve_raise_403(mocked_get_content, caplog):
    mocked_get_content.side_effect = jouve_backend.ApiJouveException(
        "Error getting API Jouve authentication token", route="/any/url/", status_code=403
    )

    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)
    mocked_get_content.assert_called()
    assert caplog.messages[0] == "Error getting API Jouve authentication token"
Beispiel #8
0
def test_user_pre_creation_is_required(_get_raw_content):
    _get_raw_content.return_value = JOUVE_CONTENT

    create_beneficiary_from_application.execute(APPLICATION_ID)
    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.ERROR
    assert beneficiary_import.applicationId == APPLICATION_ID
    assert beneficiary_import.beneficiary is None
    assert beneficiary_import.statuses[-1].detail == f"Aucun utilisateur trouvé pour l'email {JOUVE_CONTENT['email']}"
Beispiel #9
0
    def test_mandatory_jouve_fields_wrong_integer_data(self, mocked_get_content, jouve_field, possible_value):
        UserFactory(
            isBeneficiary=False,
            dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
            email=BASE_JOUVE_CONTENT["email"],
        )
        mocked_get_content.return_value = BASE_JOUVE_CONTENT | {jouve_field: possible_value}
        create_beneficiary_from_application.execute(BASE_APPLICATION_ID, ignore_id_piece_number_field=True)

        assert len(mails_testing.outbox) == 1
        assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2905960
        assert mails_testing.outbox[0].sent_data["Mj-campaign"] == "dossier-en-analyse"
Beispiel #10
0
def beneficiary_job(
    application_id: int,
    run_fraud_detection: bool = True,
    ignore_id_piece_number_field: bool = False,
    fraud_detection_ko: bool = False,
) -> None:
    create_beneficiary_from_application.execute(
        application_id,
        run_fraud_detection=run_fraud_detection,
        ignore_id_piece_number_field=ignore_id_piece_number_field,
        fraud_detection_ko=fraud_detection_ko,
    )
Beispiel #11
0
def test_marked_subscription_on_hold_when_jouve_subscription_journed_is_paused(_get_raw_content, caplog):
    user = users_factories.UserFactory(
        firstName=JOUVE_CONTENT["firstName"], lastName=JOUVE_CONTENT["lastName"], email=JOUVE_CONTENT["email"]
    )
    # When
    with caplog.at_level(logging.INFO):
        create_beneficiary_from_application.execute(APPLICATION_ID)

    assert caplog.messages[0] == "User subscription is on hold"
    assert user.beneficiaryFraudResult.status == fraud_models.FraudStatus.SUBSCRIPTION_ON_HOLD

    assert len(mails_testing.outbox) == 0
    assert len(push_testing.requests) == 0
Beispiel #12
0
def test_calls_send_rejection_mail_with_validation_error(_get_raw_content, stubed_validate, app):
    # Given
    error = BeneficiaryIsADuplicate("Some reason")
    stubed_validate.side_effect = error
    _get_raw_content.return_value = JOUVE_CONTENT
    users_factories.UserFactory(
        firstName=JOUVE_CONTENT["firstName"], lastName=JOUVE_CONTENT["lastName"], email=JOUVE_CONTENT["email"]
    )

    # When
    create_beneficiary_from_application.execute(APPLICATION_ID)

    # Then
    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 1530996
    assert mails_testing.outbox[0].sent_data["To"] == "*****@*****.**"
Beispiel #13
0
def test_cannot_save_beneficiary_if_department_is_not_eligible(get_application_content, app):
    # Given
    postal_code = "984"
    get_application_content.return_value = JOUVE_CONTENT | {"postalCode": postal_code}
    applicant = users_factories.UserFactory(
        firstName=JOUVE_CONTENT["firstName"], lastName=JOUVE_CONTENT["lastName"], email=JOUVE_CONTENT["email"]
    )

    # When
    create_beneficiary_from_application.execute(APPLICATION_ID)

    # Then
    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.applicationId == APPLICATION_ID
    assert beneficiary_import.beneficiary == applicant
    assert beneficiary_import.detail == f"Postal code {postal_code} is not eligible."
def test_cannot_save_beneficiary_if_department_is_not_eligible(app):
    # Given
    application_id = 988
    postal_code = f"{application_id}123"

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    users_count = User.query.count()
    assert users_count == 0

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.applicationId == application_id
    assert beneficiary_import.beneficiary is None
    assert beneficiary_import.detail == f"Postal code {postal_code} is not eligible."
Beispiel #15
0
def test_saved_a_beneficiary_from_application(stubed_random_password,
                                              stubed_random_token,
                                              mocked_send_activation_email,
                                              stubed_send_raw_email, app):
    # Given
    application_id = 35
    stubed_random_password.return_value = b"random-password"
    stubed_random_token.return_value = "token"

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    beneficiary = User.query.one()
    assert beneficiary.activity == "Apprenti"
    assert beneficiary.address == "3 rue de Valois"
    assert beneficiary.isBeneficiary is True
    assert beneficiary.city == "Paris"
    assert beneficiary.civility == "Mme"
    assert beneficiary.dateOfBirth == datetime(1995, 2, 5)
    assert beneficiary.departementCode == "35"
    assert beneficiary.email == "*****@*****.**"
    assert beneficiary.firstName == "Thomas"
    assert beneficiary.hasSeenTutorials is False
    assert beneficiary.isAdmin is False
    assert beneficiary.lastName == "DURAND"
    assert beneficiary.password == b"random-password"
    assert beneficiary.phoneNumber == "0123456789"
    assert beneficiary.postalCode == "35123"
    assert beneficiary.publicName == "Thomas DURAND"
    assert beneficiary.resetPasswordToken == "token"
    assert beneficiary.resetPasswordTokenValidityLimit == datetime(
        2020, 11, 14, 9)

    deposit = Deposit.query.one()
    assert deposit.amount == 500
    assert deposit.source == "dossier jouve [35]"
    assert deposit.userId == beneficiary.id

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.CREATED
    assert beneficiary_import.applicationId == application_id
    assert beneficiary_import.beneficiary == beneficiary

    mocked_send_activation_email.assert_called_once()
Beispiel #16
0
def test_id_piece_number_wrong_format(mocked_get_content, id_piece_number):
    subscribing_user = UserFactory(
        isBeneficiary=False,
        dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
        email=BASE_JOUVE_CONTENT["email"],
    )
    UserFactory(idPieceNumber=id_piece_number)
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {"bodyPieceNumber": id_piece_number}

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)

    # Then
    assert len(subscribing_user.beneficiaryImports) == 0

    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2905960
    assert mails_testing.outbox[0].sent_data["Mj-campaign"] == "dossier-en-analyse"
Beispiel #17
0
def test_cannot_save_beneficiary_if_email_is_already_taken(app):
    # Given
    email = "*****@*****.**"
    users_factories.BeneficiaryGrant18Factory(email=email, id=4)

    # When
    create_beneficiary_from_application.execute(APPLICATION_ID)

    # Then
    user = User.query.one()
    assert user.id == 4

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.applicationId == APPLICATION_ID
    assert beneficiary_import.beneficiary == user
    assert beneficiary_import.detail == f"Email {email} is already taken."

    assert push_testing.requests == []
def test_cannot_save_beneficiary_if_email_is_already_taken(app):
    # Given
    application_id = 35
    email = "*****@*****.**"
    user = create_user(email=email, idx=4)
    repository.save(user)

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    user = User.query.one()
    assert user.id == 4

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.applicationId == application_id
    assert beneficiary_import.beneficiary is None
    assert beneficiary_import.detail == f"Email {email} is already taken."
Beispiel #19
0
    def test_mandatory_jouve_fields_wrong_data(self, mocked_get_content, jouve_field, possible_value):
        UserFactory(
            isBeneficiary=False,
            dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
            email=BASE_JOUVE_CONTENT["email"],
        )
        mocked_get_content.return_value = BASE_JOUVE_CONTENT | {jouve_field: possible_value}
        create_beneficiary_from_application.execute(BASE_APPLICATION_ID, ignore_id_piece_number_field=True)

        assert len(mails_testing.outbox) == 1
        assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2905960
        assert mails_testing.outbox[0].sent_data["Mj-campaign"] == "dossier-en-analyse"

        assert subscription_models.SubscriptionMessage.query.count() == 1
        message = subscription_models.SubscriptionMessage.query.first()
        assert message.popOverIcon == subscription_models.PopOverIcon.CLOCK
        assert (
            message.userMessage
            == "Nous avons reçu ton dossier le 30/10/2021 et son analyse est en cours. Cela peut prendre jusqu'à 5 jours."
        )
Beispiel #20
0
def test_doesnt_save_beneficiary_when_suspicious(
    mocked_get_content,
    app,
):
    # Given
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {"bodyBirthDateLevel": "20"}
    users_factories.UserFactory(
        firstName=BASE_JOUVE_CONTENT["firstName"],
        lastName=BASE_JOUVE_CONTENT["lastName"],
        email=BASE_JOUVE_CONTENT["email"],
    )

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)

    # Then
    assert BeneficiaryImport.query.count() == 0

    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2905960
Beispiel #21
0
def test_saved_a_beneficiary_from_application(stubed_random_token, app):
    # Given
    stubed_random_token.return_value = "token"
    users_factories.UserFactory(
        firstName=JOUVE_CONTENT["firstName"], lastName=JOUVE_CONTENT["lastName"], email=JOUVE_CONTENT["email"]
    )
    # When
    create_beneficiary_from_application.execute(APPLICATION_ID)

    # Then
    beneficiary = User.query.one()
    assert beneficiary.activity == "Apprenti"
    assert beneficiary.address == "3 rue de Valois"
    assert beneficiary.has_beneficiary_role is True
    assert beneficiary.city == "Paris"
    assert beneficiary.civility == "Mme"
    assert beneficiary.dateOfBirth.date() == AGE18_ELIGIBLE_BIRTH_DATE.date()
    assert beneficiary.departementCode == "35"
    assert beneficiary.email == "*****@*****.**"
    assert beneficiary.firstName == "Thomas"
    assert beneficiary.hasSeenTutorials is False
    assert beneficiary.isAdmin is False
    assert beneficiary.lastName == "DURAND"
    assert beneficiary.password is not None
    assert beneficiary.phoneNumber == "0123456789"
    assert beneficiary.postalCode == "35123"
    assert beneficiary.publicName == "Thomas DURAND"
    assert beneficiary.notificationSubscriptions == {"marketing_push": True, "marketing_email": True}

    deposit = Deposit.query.one()
    assert deposit.amount == 300
    assert deposit.source == "dossier jouve [35]"
    assert deposit.userId == beneficiary.id

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.CREATED
    assert beneficiary_import.applicationId == APPLICATION_ID
    assert beneficiary_import.beneficiary == beneficiary

    assert len(mails_testing.outbox) == 1
    assert len(push_testing.requests) == 1
def test_calls_send_rejection_mail_with_validation_error(
    mocked_send_rejection_email_to_beneficiary_pre_subscription, stubed_validate, app
):
    # Given
    application_id = 35
    error = BeneficiaryIsADuplicate("Some reason")
    stubed_validate.side_effect = error
    pre_subscription = BeneficiaryPreSubscription(
        application_id=application_id,
        postal_code=f"{application_id:02d}123",
        **PRE_SUBSCRIPTION_BASE_DATA,
    )

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    mocked_send_rejection_email_to_beneficiary_pre_subscription.assert_called_once_with(
        beneficiary_pre_subscription=pre_subscription,
        beneficiary_is_eligible=True,
    )
Beispiel #23
0
def test_send_analysing_account_emails_with_sendinblue_when_suspicious(
    mocked_get_content,
    app,
):
    # Given
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {"bodyBirthDateLevel": "20"}
    users_factories.UserFactory(
        firstName=BASE_JOUVE_CONTENT["firstName"],
        lastName=BASE_JOUVE_CONTENT["lastName"],
        email=BASE_JOUVE_CONTENT["email"],
        dateOfBirth=datetime.now() - relativedelta(years=18, day=5),
    )

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)

    # Then
    assert BeneficiaryImport.query.count() == 0

    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["template"] == asdict(TransactionalEmail.FRAUD_SUSPICION.value)
    assert mails_testing.outbox[0].sent_data["params"] == {}
Beispiel #24
0
def test_id_piece_number_duplicate(
    mocked_get_content,
    app,
):
    # Given
    ID_PIECE_NUMBER = "140767100016"
    subscribing_user = UserFactory(
        dateOfBirth=datetime.now() - relativedelta(years=18, day=5),
        email=BASE_JOUVE_CONTENT["email"],
    )
    UserFactory(idPieceNumber=ID_PIECE_NUMBER)
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {"bodyPieceNumber": ID_PIECE_NUMBER}

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)

    # Then
    beneficiary_import = BeneficiaryImport.query.filter(BeneficiaryImport.beneficiary == subscribing_user).first()
    assert beneficiary_import.currentStatus == ImportStatus.REJECTED
    assert beneficiary_import.detail == f"Fraud controls triggered: id piece number n°{ID_PIECE_NUMBER} already taken"
    assert not subscribing_user.has_beneficiary_role

    assert len(mails_testing.outbox) == 0
Beispiel #25
0
def test_id_piece_number_invalid_format_avoid_duplicate(
    mocked_get_content,
    app,
):
    # Given
    ID_PIECE_NUMBER = "140767100016"
    UserFactory(
        isBeneficiary=False,
        dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
        email=BASE_JOUVE_CONTENT["email"],
    )
    UserFactory(idPieceNumber=ID_PIECE_NUMBER)
    mocked_get_content.return_value = BASE_JOUVE_CONTENT | {
        "bodyPieceNumber": ID_PIECE_NUMBER,
        "bodyPieceNumberCtrl": "KO",
    }

    # When
    create_beneficiary_from_application.execute(BASE_APPLICATION_ID)

    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2905960
    assert mails_testing.outbox[0].sent_data["Mj-campaign"] == "dossier-en-analyse"
Beispiel #26
0
def test_application_for_native_app_user_with_load_smoothing(_get_raw_content, app, db_session):
    # Given
    application_id = 35
    user = UserFactory(
        dateOfBirth=AGE18_ELIGIBLE_BIRTH_DATE,
        phoneNumber="0607080900",
        address="an address",
        city="Nantes",
        postalCode="44300",
        activity="Apprenti",
        hasCompletedIdCheck=True,
    )
    push_testing.reset_requests()
    _get_raw_content.return_value = JOUVE_CONTENT | {
        "id": BASE_APPLICATION_ID,
        "firstName": "first_name",
        "lastName": "last_name",
        "email": user.email,
        "activity": "Étudiant",
        "address": "",
        "city": "",
        "gender": "M",
        "bodyPieceNumber": "140767100016",
        "birthDateTxt": f"{AGE18_ELIGIBLE_BIRTH_DATE:%d/%m/%Y}",
        "postalCode": "",
        "phoneNumber": "0102030405",
        "posteCodeCtrl": "OK",
        "serviceCodeCtrl": "OK",
        "birthLocationCtrl": "OK",
        "creatorCtrl": "OK",
        "bodyBirthDateLevel": "100",
        "bodyNameLevel": "100",
    }

    # When
    create_beneficiary_from_application.execute(application_id)

    # Then
    beneficiary = User.query.one()

    # the fake Jouve backend returns a default phone number. Since a User
    # alredy exists, the phone number should not be updated during the import process
    assert beneficiary.phoneNumber == "0607080900"
    assert beneficiary.address == "an address"
    assert beneficiary.activity == "Apprenti"
    assert beneficiary.postalCode == "44300"

    deposit = Deposit.query.one()
    assert deposit.amount == 300
    assert deposit.source == "dossier jouve [35]"
    assert deposit.userId == beneficiary.id

    beneficiary_import = BeneficiaryImport.query.one()
    assert beneficiary_import.currentStatus == ImportStatus.CREATED
    assert beneficiary_import.applicationId == application_id
    assert beneficiary_import.beneficiary == beneficiary
    assert beneficiary.notificationSubscriptions == {"marketing_push": True, "marketing_email": True}

    assert len(push_testing.requests) == 1
    assert len(mails_testing.outbox) == 1
    assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2016025
def beneficiary_job(application_id: int) -> None:
    create_beneficiary_from_application.execute(application_id)