Ejemplo n.º 1
0
    def test_email_is_sent_to_dev_at_passculture_when_not_production_environment(
        self, mock_send_mail_enabled, mock_format_env, app
    ):
        # Given
        user = create_user(email="*****@*****.**", first_name="Bobby", reset_password_token="ABCDEFG")
        offerer = create_offerer()
        user_offerer = create_user_offerer(user, offerer)

        repository.save(user_offerer)

        # When
        reset_password_email_data = retrieve_data_for_reset_password_user_email(user=user)

        # Then
        assert reset_password_email_data == {
            "FromEmail": "*****@*****.**",
            "MJ-TemplateID": 912168,
            "MJ-TemplateLanguage": True,
            "To": "*****@*****.**",
            "Vars": {"prenom_user": "******", "token": user.resetPasswordToken, "env": "-testing"},
        }
Ejemplo n.º 2
0
        def when_latitude_out_of_range_and_longitude_wrong_format(self, app):
            # given
            offerer = create_offerer()
            user = create_user()
            venue = create_venue(offerer, is_virtual=False)
            user_offerer = create_user_offerer(user, offerer)
            repository.save(user_offerer, venue)
            auth_request = TestClient(
                app.test_client()).with_auth(email=user.email)
            data = {"latitude": -98.82387, "longitude": "112°3534"}

            # when
            response = auth_request.patch("/venues/%s" % humanize(venue.id),
                                          json=data)

            # then
            assert response.status_code == 400
            assert response.json["latitude"] == [
                "La latitude doit être comprise entre -90.0 et +90.0"
            ]
            assert response.json["longitude"] == ["Format incorrect"]
Ejemplo n.º 3
0
        def when_there_is_already_one_equal_siret(self, app):
            # Given
            offerer = create_offerer()
            user = create_user()
            user_offerer = create_user_offerer(user, offerer, is_admin=True)
            siret = offerer.siren + "11111"
            venue = create_venue(offerer, siret=siret)
            repository.save(user_offerer, venue)
            venue_data = {
                "siret": siret,
            }
            auth_request = TestClient(
                app.test_client()).with_auth(email=user.email)

            # when
            response = auth_request.patch("/venues/%s" % humanize(venue.id),
                                          json=venue_data)

            # Then
            assert response.status_code == 200
            assert response.json["siret"] == siret
Ejemplo n.º 4
0
    def test_should_not_set_not_processable_payments_to_retry_when_bank_information_status_is_not_accepted(
            self):
        # Given
        offerer = create_offerer(name="first offerer")
        user = create_user()
        venue = create_venue(offerer)
        offer = create_offer_with_thing_product(venue)
        stock = create_stock_from_offer(offer, price=0)
        booking = create_booking(user=user, stock=stock)
        bank_information = create_bank_information(
            offerer=offerer,
            iban=None,
            bic=None,
            status=BankInformationStatus.DRAFT)
        not_processable_payment = create_payment(
            booking,
            offerer,
            10,
            status=TransactionStatus.NOT_PROCESSABLE,
            iban=None,
            bic=None)
        sent_payment = create_payment(booking,
                                      offerer,
                                      10,
                                      status=TransactionStatus.SENT)
        repository.save(bank_information, not_processable_payment,
                        sent_payment)

        # When
        set_not_processable_payments_with_bank_information_to_retry()

        # Then
        queried_not_processable_payment = Payment.query.filter_by(
            id=not_processable_payment.id).one()
        queried_sent_payment = Payment.query.filter_by(
            id=sent_payment.id).one()
        assert queried_not_processable_payment.iban == None
        assert queried_not_processable_payment.bic == None
        assert queried_not_processable_payment.currentStatus.status == TransactionStatus.NOT_PROCESSABLE
        assert queried_sent_payment.currentStatus.status == TransactionStatus.SENT
    def test_only_returns_payments_with_given_message(self, app):
        # Given
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_thing_product(venue)
        paying_stock = create_stock_from_offer(offer)
        free_stock = create_stock_from_offer(offer, price=0)
        user = users_factories.UserFactory()
        booking1 = create_booking(user=user,
                                  stock=paying_stock,
                                  venue=venue,
                                  is_used=True)
        booking2 = create_booking(user=user,
                                  stock=paying_stock,
                                  venue=venue,
                                  is_used=True)
        booking3 = create_booking(user=user,
                                  stock=paying_stock,
                                  venue=venue,
                                  is_used=True)
        booking4 = create_booking(user=user,
                                  stock=free_stock,
                                  venue=venue,
                                  is_used=True)
        payment1 = create_payment(booking1,
                                  offerer,
                                  10,
                                  payment_message_name="ABCD123")
        payment2 = create_payment(booking2,
                                  offerer,
                                  10,
                                  payment_message_name="EFGH456")
        repository.save(payment1, payment2, booking3, booking4)

        # When
        payements_by_id = payment_queries.get_payments_by_message_id("ABCD123")

        # Then
        assert len(payements_by_id) == 1
        assert payements_by_id[0].paymentMessage.name == "ABCD123"
Ejemplo n.º 6
0
            def test_should_prevent_a_used_booking_from_being_cancelled(
                    self, app):
                # Given
                pro_user = create_user(email="Mr [email protected]",
                                       public_name="Mr Books")
                offerer = create_offerer(siren="793875030")
                user_offerer = create_user_offerer(pro_user, offerer)
                venue = create_venue(offerer)
                book_offer = create_offer_with_event_product(venue)
                stock = create_stock(offer=book_offer)

                user = create_user(email="*****@*****.**", public_name="J.F")
                create_deposit(user)
                booking = create_booking(user=user,
                                         stock=stock,
                                         is_used=True,
                                         venue=venue)

                repository.save(booking, user_offerer)
                api_key = random_token(64)
                offerer_api_key = create_api_key_for_offerer(offerer, api_key)
                repository.save(offerer_api_key)

                # When
                response = TestClient(app.test_client()).patch(
                    "/v2/bookings/cancel/token/{}".format(booking.token),
                    headers={
                        "Authorization": "Bearer " + api_key,
                        "Origin": "http://localhost"
                    },
                )

                # Then
                assert response.status_code == 403
                assert response.json["global"] == [
                    "Impossible d'annuler une réservation consommée"
                ]
                updated_booking = Booking.query.first()
                assert updated_booking.isUsed
                assert updated_booking.isCancelled is False
Ejemplo n.º 7
0
        def test_should_return_providable_infos_with_correct_data(
                self, mock_fnac_api_response, app):
            # Given
            mock_fnac_api_response.return_value = iter([{
                "ref": "9780199536986",
                "available": 1,
                "price": 6.36
            }])

            offerer = create_offerer()
            venue = create_venue(offerer, siret="12345678912345")
            fnac_provider = activate_provider("FnacStocks")
            venue_provider = create_venue_provider(
                venue,
                fnac_provider,
                venue_id_at_offer_provider=venue.siret,
                last_sync_date=datetime(2020, 2, 4))
            product = create_product_with_thing_type(
                id_at_providers="9780199536986")

            repository.save(venue_provider, product)

            fnac_stocks_provider = FnacStocks(venue_provider)

            # When
            fnac_providable_infos = next(fnac_stocks_provider)

            # Then
            assert mock_fnac_api_response.call_args_list == [
                call("12345678912345", "", datetime(2020, 2, 4))
            ]
            assert len(fnac_providable_infos) == 2

            offer_providable_info = fnac_providable_infos[0]
            stock_providable_info = fnac_providable_infos[1]

            assert offer_providable_info.type == Offer
            assert offer_providable_info.id_at_providers == "9780199536986@12345678912345"
            assert stock_providable_info.type == Stock
            assert stock_providable_info.id_at_providers == "9780199536986@12345678912345"
Ejemplo n.º 8
0
        def test_fnac_stock_provider_update_one_stock_and_update_matching_offer(
                self, mock_fnac_api_response, app):
            # Given
            mock_fnac_api_response.return_value = iter([{
                "ref": "9780199536986",
                "available": 10,
                "price": 16
            }])

            offerer = create_offerer()
            venue = create_venue(offerer)

            fnac_stocks_provider = activate_provider("FnacStocks")
            venue_provider = create_venue_provider(
                venue,
                fnac_stocks_provider,
                is_active=True,
                venue_id_at_offer_provider="12345678912345")
            product = create_product_with_thing_type(
                id_at_providers="9780199536986")
            offer = create_offer_with_thing_product(
                venue,
                product=product,
                id_at_providers="9780199536986@12345678912345")
            stock = create_stock(
                id_at_providers="9780199536986@12345678912345",
                offer=offer,
                quantity=20)

            repository.save(product, offer, stock)

            fnac_stocks = FnacStocks(venue_provider)

            # When
            fnac_stocks.updateObjects()

            # Then
            stock = Stock.query.one()
            assert stock.quantity == 10
            assert Offer.query.count() == 1
Ejemplo n.º 9
0
    def test_should_update_bank_informations_when_bank_informations_already_exist_for_venue(
            self, app):
        # given
        offerer = create_offerer()
        venue = create_venue(offerer=offerer)
        bank_informations_sql = create_bank_information(
            venue=venue,
            application_id=9,
            status=BankInformationStatus.DRAFT,
            iban=None,
            bic=None)
        repository.save(bank_informations_sql)

        bank_informations_to_save = BankInformations(
            status=BankInformationStatus.ACCEPTED,
            application_id=9,
            iban="FR7630006000011234567890189",
            bic="QSDFGH8Z555",
            venue_id=venue.id,
            date_modified=datetime(2018, 2, 3),
        )

        # when
        bank_informations_saved = self.bank_informations_sql_repository.update_by_venue_id(
            bank_informations_to_save)

        # then
        assert BankInformationsSQLEntity.query.count() == 1

        sql_bank_informations_saved = BankInformationsSQLEntity.query.first()
        assert sql_bank_informations_saved.offererId == None
        assert sql_bank_informations_saved.venueId == venue.id
        assert sql_bank_informations_saved.iban == bank_informations_to_save.iban
        assert sql_bank_informations_saved.bic == bank_informations_to_save.bic
        assert sql_bank_informations_saved.applicationId == bank_informations_to_save.application_id
        assert sql_bank_informations_saved.status == bank_informations_to_save.status
        assert sql_bank_informations_saved.dateModified == bank_informations_to_save.date_modified

        assert bank_informations_saved.iban == bank_informations_to_save.iban
        assert bank_informations_saved.bic == bank_informations_to_save.bic
def test_offerer_cannot_create_a_second_virtual_venue(app):
    # Given
    offerer = create_offerer(siren="123456789",
                             address="1 rue Test",
                             city="Test city",
                             postal_code="93000",
                             name="Test offerer")
    repository.save(offerer)
    venue = create_venue(
        offerer,
        name="Venue_name",
        booking_email="*****@*****.**",
        address=None,
        postal_code=None,
        city=None,
        departement_code=None,
        is_virtual=True,
        siret=None,
    )
    repository.save(venue)
    new_venue = create_venue(
        offerer,
        name="Venue_name",
        booking_email="*****@*****.**",
        address=None,
        postal_code=None,
        city=None,
        departement_code=None,
        is_virtual=True,
        siret=None,
    )

    # When
    with pytest.raises(ApiErrors) as errors:
        repository.save(new_venue)

    # Then
    assert errors.value.errors["isVirtual"] == [
        "Un lieu pour les offres numériques existe déjà pour cette structure"
    ]
Ejemplo n.º 11
0
        def test_should_register_new_venue(self, app):
            # given
            offerer = create_offerer(siren="302559178")
            user = create_user()
            user_offerer = create_user_offerer(user, offerer)
            venue_type = create_venue_type(label="Musée")
            venue_label = create_venue_label(
                label="CAC - Centre d'art contemporain d'intérêt national")
            repository.save(user_offerer, venue_type, venue_label)
            auth_request = TestClient(
                app.test_client()).with_auth(email=user.email)
            venue_data = {
                "name": "Ma venue",
                "siret": "30255917810045",
                "address": "75 Rue Charles Fourier, 75013 Paris",
                "postalCode": "75200",
                "bookingEmail": "*****@*****.**",
                "city": "Paris",
                "managingOffererId": humanize(offerer.id),
                "latitude": 48.82387,
                "longitude": 2.35284,
                "publicName": "Ma venue publique",
                "venueTypeId": humanize(venue_type.id),
                "venueLabelId": humanize(venue_label.id),
            }

            # when
            response = auth_request.post("/venues", json=venue_data)

            # then
            assert response.status_code == 201
            idx = response.json["id"]

            venue = Venue.query.filter_by(id=dehumanize(idx)).one()
            assert venue.name == "Ma venue"
            assert venue.publicName == "Ma venue publique"
            assert venue.siret == "30255917810045"
            assert venue.isValidated
            assert venue.venueTypeId == venue_type.id
            assert venue.venueLabelId == venue_label.id
Ejemplo n.º 12
0
        def test_records_new_payment_lines_in_database(self, app):
            # Given
            offerer = create_offerer()
            venue = create_venue(offerer)
            offer = create_offer_with_thing_product(venue)
            paying_stock = create_stock_from_offer(offer)
            free_stock = create_stock_from_offer(offer, price=0)
            user = create_user()
            deposit = create_deposit(user, amount=500)
            booking1 = create_booking(user=user,
                                      stock=paying_stock,
                                      venue=venue,
                                      is_used=True)
            booking2 = create_booking(user=user,
                                      stock=paying_stock,
                                      venue=venue,
                                      is_used=True)
            booking3 = create_booking(user=user,
                                      stock=paying_stock,
                                      venue=venue,
                                      is_used=True)
            booking4 = create_booking(user=user,
                                      stock=free_stock,
                                      venue=venue,
                                      is_used=True)
            payment1 = create_payment(booking2,
                                      offerer,
                                      10,
                                      payment_message_name="ABCD123")

            repository.save(payment1)
            repository.save(deposit, booking1, booking3, booking4)

            initial_payment_count = Payment.query.count()

            # When
            generate_new_payments()

            # Then
            assert Payment.query.count() - initial_payment_count == 2
Ejemplo n.º 13
0
        def test_stock_provider_praxiel_create_one_stock_and_one_offer_with_wanted_attributes(
                self, mock_praxiel_api_response, app):
            # Given
            mock_praxiel_api_response.return_value = iter([{
                "ref": "9780199536986",
                "available": 10,
                "price": 16.5
            }])

            offerer = create_offerer()
            venue = create_venue(offerer, siret="77567146400110")

            praxiel_stocks_provider = activate_provider("PraxielStocks")
            venue_provider = create_venue_provider(
                venue,
                praxiel_stocks_provider,
                is_active=True,
                venue_id_at_offer_provider="77567146400110")
            product = create_product_with_thing_type(
                id_at_providers="9780199536986")
            repository.save(product, venue_provider)

            praxiel_stocks_provider = PraxielStocks(venue_provider)

            # When
            praxiel_stocks_provider.updateObjects()

            # Then
            offer = Offer.query.first()
            stock = Stock.query.first()

            assert offer.type == product.type
            assert offer.description == product.description
            assert offer.venue is not None
            assert offer.bookingEmail == venue.bookingEmail
            assert offer.extraData == product.extraData

            assert stock.price == 16.5
            assert stock.quantity == 10
            assert stock.bookingLimitDatetime is None
Ejemplo n.º 14
0
        def when_offerer_already_have_user_offerer_new_user_offerer_has_validation_token(
                self, mock_api_entreprise, make_validation_email_object, app):
            # Given
            make_validation_email_object.return_value = {"Html-part": None}
            mock_api_entreprise.return_value = MagicMock(
                status_code=200,
                text="",
                json=MagicMock(
                    return_value=copy.deepcopy(api_entreprise_json_mock)))

            user = create_user(is_beneficiary=False, is_admin=False)
            user_2 = create_user(email="*****@*****.**",
                                 is_admin=False)
            offerer = create_offerer()
            user_offerer = create_user_offerer(user_2,
                                               offerer,
                                               validation_token=None)
            digital_venue_type = create_venue_type(
                label=DEFAULT_DIGITAL_VENUE_LABEL)
            repository.save(user, user_2, offerer, user_offerer,
                            digital_venue_type)
            body = {
                "name": "Test Offerer",
                "siren": "123456789",
                "address": "123 rue de Paris",
                "postalCode": "93100",
                "city": "Montreuil",
            }

            # when
            response = TestClient(app.test_client()).with_auth(
                user.email).post("/offerers", json=body)

            # then
            assert response.status_code == 201
            offerer = Offerer.query.first()
            created_user_offerer = (UserOfferer.query.filter(
                UserOfferer.offerer == offerer).filter(
                    UserOfferer.user == user).one())
            assert created_user_offerer.validationToken is not None
Ejemplo n.º 15
0
    def test_contains_info_on_bank_transaction(self):
        # given
        user = create_user()
        booking = create_booking(user=user)
        offerer = create_offerer()
        payment = create_payment(booking,
                                 offerer,
                                 35,
                                 payment_message_name="1234",
                                 transaction_end_to_end_id=uuid.uuid4(),
                                 iban="123456789")

        # when
        details = create_payment_details(payment,
                                         find_booking_date_used=Mock())

        # then
        assert details.payment_iban == "123456789"
        assert details.payment_message_name == "1234"
        assert details.transaction_end_to_end_id == payment.transactionEndToEndId
        assert details.reimbursed_amount == 35
        assert details.reimbursement_rate == 0.5
Ejemplo n.º 16
0
    def test_it_returns_an_empty_list_if_everything_has_no_not_processable_payment(
            self):
        # given
        user = create_user()
        booking = create_booking(user=user)
        offerer = create_offerer()
        payments = [
            create_payment(booking, offerer, 30,
                           status=TransactionStatus.SENT),
            create_payment(booking, offerer, 30,
                           status=TransactionStatus.SENT),
            create_payment(booking,
                           offerer,
                           30,
                           status=TransactionStatus.ERROR),
        ]

        # when
        pending_payments = keep_only_not_processable_payments(payments)

        # then
        assert pending_payments == []
Ejemplo n.º 17
0
def test_should_return_error_messages_when_offer_is_digital_and_offline_and_venue_is_not_virtual(
):
    # Given
    offerer = create_offerer()
    venue = create_venue(offerer, is_virtual=False)
    thing_offer = create_offer_with_thing_product(venue,
                                                  is_digital=True,
                                                  is_offline_only=True)
    api_errors = ApiErrors()

    # When
    api_error = validate(thing_offer, api_errors)

    # Then
    assert api_error.errors == {
        "url": [
            "Une offre de sous-catégorie Carte cinéma multi-séances ne peut pas être numérique"
        ],
        "venue": [
            'Une offre numérique doit obligatoirement être associée au lieu "Offre numérique"'
        ],
    }
Ejemplo n.º 18
0
def test_raise_errors_if_venue_provider_already_exists_with_same_information(
        app):
    # given
    provider = activate_provider("TiteLiveStocks")
    offerer = create_offerer()
    venue = create_venue(offerer,
                         name="Librairie Titelive",
                         siret="77567146400110")
    venue_provider = create_venue_provider(
        venue, provider, venue_id_at_offer_provider="775671464")
    repository.save(venue_provider)

    venue_provider2 = create_venue_provider(
        venue, provider, venue_id_at_offer_provider="775671464")
    # when
    with pytest.raises(ApiErrors) as errors:
        repository.save(venue_provider2)

    # then
    assert errors.value.errors["global"] == [
        "Votre lieu est déjà lié à cette source"
    ]
Ejemplo n.º 19
0
    def when_booking_user_email_with_special_character_not_url_encoded(self, app):
        # Given
        user = create_user(email="*****@*****.**")
        user_admin = create_user(email="*****@*****.**")
        offerer = create_offerer()
        user_offerer = create_user_offerer(user_admin, offerer, is_admin=True)
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue, event_name="Event Name")
        event_occurrence = create_event_occurrence(offer, beginning_datetime=tomorrow)
        stock = create_stock_from_event_occurrence(
            event_occurrence, price=0, booking_limit_date=tomorrow_minus_one_hour
        )
        booking = create_booking(user=user, stock=stock, venue=venue)

        repository.save(user_offerer, booking)
        url = "/bookings/token/{}?email={}".format(booking.token, user.email)

        # When
        response = TestClient(app.test_client()).with_auth("*****@*****.**").patch(url)

        # Then
        assert response.status_code == 404
Ejemplo n.º 20
0
        def when_user_not_logged_in_right_email_and_wrong_offer(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer)
            stock = create_stock_with_thing_offer(offerer,
                                                  venue,
                                                  offer=None,
                                                  price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(admin_user, booking)
            url = f"/bookings/token/{booking.token}[email protected]&offer_id={humanize(123)}"

            # When
            response = TestClient(app.test_client()).get(url)

            # Then
            assert response.status_code == 404
            assert response.json["global"] == [
                "Cette contremarque n'a pas été trouvée"
            ]
    def test_should_generate_non_editable_venues_csv_with_correct_header_and_correct_informations(
            self, app):
        # given
        offerer = create_offerer(siren="123456788")
        venue = create_venue(offerer, siret="88345678899999")

        repository.save(venue)

        # when
        csv = generate_non_editable_venues_csv()

        # Then
        csv_as_lines = csv.splitlines()

        assert (
            csv_as_lines[0] ==
            "offerer_id,offerer_humanized_id,offerer_siren,offerer_name,venue_id,venue_humanized_id,venue_siret,venue_name,venue_departement"
        )
        assert (
            csv_as_lines[1] ==
            f"{offerer.id},{humanize(offerer.id)},123456788,Test Offerer,{venue.id},{humanize(venue.id)},88345678899999,La petite librairie,93"
        )
    def when_favorite_exists_with_offerId(self, app):
        # Given
        user = users_factories.BeneficiaryGrant18Factory(
            email="*****@*****.**")
        offerer = create_offerer()
        venue = create_venue(offerer,
                             postal_code="29100",
                             siret="12345678912341")
        offer = create_offer_with_thing_product(venue, thumb_count=0)
        mediation = None
        favorite = create_favorite(mediation=mediation, offer=offer, user=user)
        repository.save(favorite)

        # When
        response = (TestClient(app.test_client()).with_session_auth(
            user.email).delete(f"/favorites/{humanize(offer.id)}"))

        # Then
        assert response.status_code == 200
        assert "id" in response.json
        deleted_favorite = Favorite.query.first()
        assert deleted_favorite is None
Ejemplo n.º 23
0
        def when_user_not_logged_in_and_existing_api_key_given_with_no_bearer_prefix(
                self, app):
            # Given
            pro = create_user(email="*****@*****.**")
            offerer = create_offerer()
            user_offerer = create_user_offerer(pro, offerer)
            repository.save(user_offerer)
            offerer_api_key = create_api_key(offerer_id=offerer.id)
            repository.save(offerer_api_key)
            url = "/v2/bookings/token/FAKETOKEN"

            # When
            response = TestClient(app.test_client()).get(url,
                                                         headers={
                                                             "Authorization":
                                                             API_KEY_VALUE,
                                                             "Origin":
                                                             "http://localhost"
                                                         })

            # Then
            assert response.status_code == 401
Ejemplo n.º 24
0
        def when_mediation_is_not_found(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer,
                                 postal_code="29100",
                                 siret="12345678912341")
            offer = create_offer_with_thing_product(venue, thumb_count=0)
            mediation = create_mediation(offer, is_active=True)
            repository.save(user, mediation)

            json = {
                "offerId": humanize(offer.id),
                "mediationId": "ABCD",
            }

            # When
            response = TestClient(app.test_client()).with_auth(
                user.email).post("/favorites", json=json)

            # Then
            assert response.status_code == 404
Ejemplo n.º 25
0
    def test_payments_are_grouped_by_current_statuses_names(self):
        # given
        user = create_user()
        booking = create_booking(user=user)
        offerer = create_offerer()
        payment1 = create_payment(booking, offerer, 10)
        payment2 = create_payment(booking, offerer, 20)
        payment3 = create_payment(booking, offerer, 30)
        payment4 = create_payment(booking, offerer, 40)
        payment1.setStatus(TransactionStatus.SENT)
        payment2.setStatus(TransactionStatus.NOT_PROCESSABLE)
        payment3.setStatus(TransactionStatus.ERROR)
        payment4.setStatus(TransactionStatus.ERROR)
        payments = [payment1, payment2, payment3, payment4]

        # when
        groups = group_payments_by_status(payments)

        # then
        assert len(groups["SENT"]) == 1
        assert len(groups["NOT_PROCESSABLE"]) == 1
        assert len(groups["ERROR"]) == 2
        def expect_user_offerer_attachment_not_to_be_validated_with_same_token(
                self, app):
            user_offerer_token = secrets.token_urlsafe(20)
            offerer_token = secrets.token_urlsafe(20)

            offerer = create_offerer(
                siren="349974931",
                address="12 boulevard de Pesaro",
                city="Nanterre",
                postal_code="92000",
                name="Crédit Coopératif",
                validation_token=offerer_token,
            )
            user = create_user()
            user_offerer = create_user_offerer(
                user, offerer, validation_token=user_offerer_token)
            repository.save(offerer, user_offerer)
            user_offerer_id = offerer.id

            # When
            TestClient(app.test_client()).get(
                "/validate/user-offerer/" + user_offerer_token,
                headers={"origin": "http://localhost:3000"})

            response = TestClient(app.test_client()).get(
                "/validate/user-offerer/" + user_offerer_token,
                headers={"origin": "http://localhost:3000"})

            # Then
            assert response.status_code == 404
            user_offerer = UserOfferer.query.filter_by(
                offererId=user_offerer_id).first()

            assert (
                response.json["validation"][0] ==
                "Aucun(e) objet ne correspond à ce code de validation ou l'objet est déjà validé"
            )

            assert user_offerer.isValidated
Ejemplo n.º 27
0
    def test_should_not_return_non_cancelled_booking_with_payment(self, app):
        # Given
        beneficiary = create_user()
        create_deposit(user=beneficiary)
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue)
        stock1 = create_stock(beginning_datetime=datetime(2020, 4, 16),
                              offer=offer)
        booking1 = create_booking(stock=stock1,
                                  user=beneficiary,
                                  is_cancelled=False)
        payment = create_payment(offerer=offerer, booking=booking1)

        repository.save(payment)

        # When
        bookings_result = get_bookings_cancelled_during_quarantine_with_payment(
        )

        # Then
        assert len(bookings_result) == 0
        def when_listing_all_venues_without_venue_id_argument(self, app):
            # given
            offerer = create_offerer(siren="775671464")
            venue = create_venue(offerer,
                                 name="Librairie Titelive",
                                 siret="77567146400110")
            titelive_things_provider = get_provider_by_local_class(
                "TiteLiveThings")
            venue_provider = create_venue_provider(
                venue=venue, provider=titelive_things_provider)
            repository.save(venue_provider)

            user = create_user()
            repository.save(user)
            auth_request = TestClient(
                app.test_client()).with_auth(email=user.email)

            # when
            response = auth_request.get("/venueProviders")

            # then
            assert response.status_code == 400
    def should_update_allocine_price_rule_for_venue_with_given_siret(
            self, app):
        # Given
        initial_price = Decimal(7.5)
        new_price = Decimal(8)
        offerer = create_offerer()
        venue = create_venue(offerer)
        allocine_provider = create_provider(local_class="TestLocalProvider")
        allocine_venue_provider = create_allocine_venue_provider(
            venue, allocine_provider)
        allocine_venue_provider_price_rule = create_allocine_venue_provider_price_rule(
            allocine_venue_provider,
            price_rule=PriceRule.default,
            price=initial_price)

        repository.save(allocine_venue_provider_price_rule)

        # When
        modify_allocine_price_rule_for_venue_by_siret(venue.siret, new_price)

        # Then
        assert allocine_venue_provider_price_rule.price == new_price
Ejemplo n.º 30
0
        def when_giving_an_api_key_that_does_not_exists(self, app):
            # Given
            user = users_factories.UserFactory()
            offerer = create_offerer()
            user_offerer = create_user_offerer(user, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue)
            stock = create_stock(offer=offer)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(user_offerer, booking)

            # When
            url = "/v2/bookings/cancel/token/{}".format(booking.token)
            wrong_api_key = "Bearer WrongApiKey1234567"
            response = TestClient(app.test_client()).patch(
                url,
                headers={
                    "Authorization": wrong_api_key,
                    "Origin": "http://localhost"
                })

            assert response.status_code == 401