Beispiel #1
0
    def test_should_retrieve_applications_from_new_procedure_id(
            self, process_beneficiary_application):
        # given
        get_all_application_ids = Mock(return_value=[123, 456, 789])
        find_applications_ids_to_retry = Mock(return_value=[])

        get_details = Mock()
        get_details.side_effect = [
            make_new_beneficiary_application_details(123, "closed"),
            make_new_beneficiary_application_details(456, "closed"),
            make_new_beneficiary_application_details(789, "closed"),
        ]

        has_already_been_imported = Mock(return_value=False)
        has_already_been_created = Mock(return_value=False)

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_all_applications_ids=get_all_application_ids,
            get_applications_ids_to_retry=find_applications_ids_to_retry,
            get_details=get_details,
            already_imported=has_already_been_imported,
            already_existing_user=has_already_been_created,
        )

        # then
        assert get_all_application_ids.call_count == 1
        get_all_application_ids.assert_called_with(6712558, ANY, ANY)
Beispiel #2
0
    def test_applications_to_retry_are_processed(
            self, process_beneficiary_application):
        # given
        get_all_application_ids = Mock(return_value=[123])
        find_applications_ids_to_retry = Mock(return_value=[456, 789])

        get_details = Mock()
        get_details.side_effect = [
            make_new_beneficiary_application_details(123, "closed"),
            make_new_beneficiary_application_details(456, "closed"),
            make_new_beneficiary_application_details(789, "closed"),
        ]

        has_already_been_imported = Mock(return_value=False)
        has_already_been_created = Mock(return_value=False)

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_all_applications_ids=get_all_application_ids,
            get_applications_ids_to_retry=find_applications_ids_to_retry,
            get_details=get_details,
            already_imported=has_already_been_imported,
            already_existing_user=has_already_been_created,
        )

        # then
        assert process_beneficiary_application.call_count == 3
Beispiel #3
0
    def test_application_with_known_email_are_saved_as_rejected(
            self, process_beneficiary_application, app):
        # given
        get_all_application_ids = Mock(return_value=[123])
        find_applications_ids_to_retry = Mock(return_value=[])

        get_details = Mock(
            return_value=make_new_beneficiary_application_details(
                123, "closed"))
        user = User()
        user.email = "*****@*****.**"
        has_already_been_imported = Mock(return_value=False)
        has_already_been_created = Mock(return_value=True)

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_all_applications_ids=get_all_application_ids,
            get_applications_ids_to_retry=find_applications_ids_to_retry,
            get_details=get_details,
            already_imported=has_already_been_imported,
            already_existing_user=has_already_been_created,
        )

        # then
        beneficiary_import = BeneficiaryImport.query.first()
        assert beneficiary_import.currentStatus == ImportStatus.REJECTED
        assert beneficiary_import.applicationId == 123
        assert beneficiary_import.detail == "Compte existant avec cet email"
        process_beneficiary_application.assert_not_called()
Beispiel #4
0
    def test_an_error_status_is_saved_when_an_application_is_not_parsable(
            self, mocked_parse_beneficiary_information, app):
        # given
        get_all_application_ids = Mock(return_value=[123])
        find_applications_ids_to_retry = Mock(return_value=[])

        get_details = Mock(side_effect=[
            make_new_beneficiary_application_details(123, "closed")
        ])
        has_already_been_imported = Mock(return_value=False)
        has_already_been_created = Mock(return_value=False)
        mocked_parse_beneficiary_information.side_effect = [Exception()]

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_all_applications_ids=get_all_application_ids,
            get_applications_ids_to_retry=find_applications_ids_to_retry,
            get_details=get_details,
            already_imported=has_already_been_imported,
            already_existing_user=has_already_been_created,
        )

        # then
        beneficiary_import = BeneficiaryImport.query.first()
        assert beneficiary_import.currentStatus == ImportStatus.ERROR
        assert beneficiary_import.applicationId == 123
        assert beneficiary_import.detail == "Le dossier 123 contient des erreurs et a été ignoré - Procedure 6712558"
Beispiel #5
0
    def test_application_with_known_application_id_are_not_processed(
            self, process_beneficiary_application):
        # given
        get_all_application_ids = Mock(return_value=[123, 456])
        find_applications_ids_to_retry = Mock(return_value=[])

        get_details = Mock(
            return_value=make_new_beneficiary_application_details(
                123, "closed"))
        user = User()
        user.email = "*****@*****.**"
        has_already_been_imported = Mock(return_value=True)
        has_already_been_created = Mock(return_value=False)

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_all_applications_ids=get_all_application_ids,
            get_applications_ids_to_retry=find_applications_ids_to_retry,
            get_details=get_details,
            already_imported=has_already_been_imported,
            already_existing_user=has_already_been_created,
        )

        # then
        process_beneficiary_application.assert_not_called()
Beispiel #6
0
def pc_remote_import_beneficiaries() -> None:
    procedure_id = settings.DMS_NEW_ENROLLMENT_PROCEDURE_ID
    import_from_date = find_most_recent_beneficiary_creation_date_for_source(
        BeneficiaryImportSources.demarches_simplifiees, procedure_id)
    remote_import.run(procedure_id)
    remote_tag_has_completed.run(import_from_date, procedure_id)
    archive_dms_applications.archive_applications(procedure_id, dry_run=False)
    def test_import_native_app_user(self):
        # given
        user = users_api.create_account(
            email=self.EMAIL,
            password="******",
            birthdate=self.BENEFICIARY_BIRTH_DATE,
            is_email_validated=True,
            send_activation_mail=False,
        )

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_details=self._get_details,
            get_all_applications_ids=self._get_all_applications_ids,
        )

        # then
        assert User.query.count() == 1
        user = User.query.first()
        assert user.firstName == "john"
        assert user.postalCode == "93450"
        assert BeneficiaryImport.query.count() == 1
        beneficiary_import = BeneficiaryImport.query.first()
        assert beneficiary_import.source == "demarches_simplifiees"
        assert beneficiary_import.applicationId == 123
        assert beneficiary_import.beneficiary == user
        assert beneficiary_import.currentStatus == ImportStatus.CREATED
        assert len(mails_testing.outbox) == 1
        assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2016025
Beispiel #8
0
def pc_import_beneficiaries_from_dms_v3() -> None:
    procedure_id = settings.DMS_ENROLLMENT_PROCEDURE_ID_AFTER_GENERAL_OPENING
    import_from_date = find_most_recent_beneficiary_creation_date_for_source(
        BeneficiaryImportSources.demarches_simplifiees, procedure_id)
    remote_import.run(
        procedure_id,
        use_graphql_api=FeatureToggle.ENABLE_DMS_GRAPHQL_API.is_active())
    remote_tag_has_completed.run(import_from_date, procedure_id)
    archive_dms_applications.archive_applications(procedure_id, dry_run=False)
Beispiel #9
0
def pc_remote_import_beneficiaries_from_old_dms() -> None:
    if not settings.IS_PROD:
        return
    procedure_id = 44623
    import_from_date = find_most_recent_beneficiary_creation_date_for_source(
        BeneficiaryImportSources.demarches_simplifiees, procedure_id)
    remote_import.run(procedure_id)
    remote_tag_has_completed.run(import_from_date, procedure_id)
    archive_dms_applications.archive_applications(procedure_id, dry_run=False)
Beispiel #10
0
def pc_import_beneficiaries_from_dms_v4() -> None:
    for procedure_name, procedure_id in (
        ("v4_FR", settings.DMS_ENROLLMENT_PROCEDURE_ID_v4_FR),
        ("v4_ET", settings.DMS_ENROLLMENT_PROCEDURE_ID_v4_ET),
    ):
        if not procedure_id:
            logger.info("Skipping DMS %s because procedure id is empty",
                        procedure_name)
            continue
        import_from_date = find_most_recent_beneficiary_creation_date_for_source(
            BeneficiaryImportSources.demarches_simplifiees, procedure_id)
        remote_import.run(
            procedure_id,
            use_graphql_api=FeatureToggle.ENABLE_DMS_GRAPHQL_API.is_active())
        remote_tag_has_completed.run(import_from_date, procedure_id)
        archive_dms_applications.archive_applications(procedure_id,
                                                      dry_run=False)
    def test_import_user(self):
        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_details=self._get_details,
            get_all_applications_ids=self._get_all_applications_ids,
        )

        # then
        assert User.query.count() == 1
        user = User.query.first()
        assert user.firstName == "john"
        assert user.postalCode == "93450"
        assert BeneficiaryImport.query.count() == 1
        beneficiary_import = BeneficiaryImport.query.first()
        assert beneficiary_import.source == "demarches_simplifiees"
        assert beneficiary_import.applicationId == 123
        assert beneficiary_import.beneficiary == user
        assert beneficiary_import.currentStatus == ImportStatus.CREATED
    def test_import_duplicated_user(self):
        # given
        self.test_import_user()

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_details=self._get_details,
            get_all_applications_ids=self._get_all_applications_ids,
        )

        # then
        assert User.query.count() == 1
        assert BeneficiaryImport.query.count() == 1
        user = User.query.first()
        beneficiary_import = BeneficiaryImport.query.first()
        assert beneficiary_import.source == "demarches_simplifiees"
        assert beneficiary_import.applicationId == 123
        assert beneficiary_import.beneficiary == user
        assert beneficiary_import.currentStatus == ImportStatus.REJECTED
Beispiel #13
0
    def test_beneficiary_is_created_with_procedure_id(
            self, process_beneficiary_application, app):
        # given
        get_all_application_ids = Mock(return_value=[123])
        find_applications_ids_to_retry = Mock(return_value=[])

        get_details = Mock(side_effect=[
            make_new_beneficiary_application_details(123, "closed")
        ])
        has_already_been_imported = Mock(return_value=False)
        has_already_been_created = Mock(return_value=False)

        # when
        remote_import.run(
            ONE_WEEK_AGO,
            get_all_applications_ids=get_all_application_ids,
            get_applications_ids_to_retry=find_applications_ids_to_retry,
            get_details=get_details,
            already_imported=has_already_been_imported,
            already_existing_user=has_already_been_created,
        )

        # then
        process_beneficiary_application.assert_called_with(
            information={
                "last_name": "Doe",
                "first_name": "John",
                "civility": "Mme",
                "email": "*****@*****.**",
                "application_id": 123,
                "department": "67",
                "phone": "0123456789",
                "birth_date": datetime(2000, 5, 1, 0, 0),
                "activity": "Étudiant",
                "postal_code": "67200",
            },
            error_messages=[],
            new_beneficiaries=[],
            retry_ids=[],
            procedure_id=2567158,
        )
Beispiel #14
0
def pc_remote_import_beneficiaries(app) -> None:
    procedure_id = settings.DMS_NEW_ENROLLMENT_PROCEDURE_ID
    import_from_date = find_most_recent_beneficiary_creation_date_for_source(
        BeneficiaryImportSources.demarches_simplifiees, procedure_id
    )
    remote_import.run(import_from_date)