def when_booking_is_not_provided_at_all(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)

            booking = create_booking(user=user, stock=stock, venue=venue)

            repository.save(booking)

            offererApiKey = create_api_key(offerer_id=offerer.id)
            repository.save(offererApiKey)

            # When
            url = "/v2/bookings/keep/token/"
            user2_api_key = "Bearer " + offererApiKey.value

            response = TestClient(app.test_client()).patch(
                url, headers={"Authorization": user2_api_key, "Origin": "http://localhost"}
            )

            # Then
            assert response.status_code == 404
Пример #2
0
        def when_user_has_rights_and_regular_offer_and_token_in_lower_case(
                self, app):
            # Given
            user = create_user(email="*****@*****.**",
                               public_name="John Doe")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            user_offerer = create_user_offerer(admin_user, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(
                venue, event_name="Event Name", event_type=EventType.CINEMA)
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence,
                                                       price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(user_offerer, booking)
            booking_token = booking.token.lower()
            url = f"/v2/bookings/token/{booking_token}"

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

            # Then
            assert response.status_code == 200
        def when_user_has_api_key_but_token_not_found(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            user_offerer = create_user_offerer(admin_user, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(admin_user, booking, user_offerer)
            offererApiKey = create_api_key(offerer_id=offerer.id)
            repository.save(offererApiKey)
            user2ApiKey = f"Bearer {offererApiKey.value}"
            url = "/v2/bookings/token/12345"

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

            # Then
            assert response.status_code == 404
            assert response.json["global"] == ["Cette contremarque n'a pas été trouvée"]
        def when_the_api_key_is_not_linked_to_the_right_offerer(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            pro_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            offerer2 = create_offerer(siren="987654321")
            user_offerer = create_user_offerer(pro_user, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)

            repository.save(pro_user, booking, user_offerer, offerer2)

            offererApiKey = create_api_key(offerer_id=offerer2.id)
            repository.save(offererApiKey)

            # When
            user2_api_key = "Bearer " + offererApiKey.value
            url = "/v2/bookings/keep/token/{}".format(booking.token)

            response = TestClient(app.test_client()).patch(
                url, headers={"Authorization": user2_api_key, "Origin": "http://localhost"}
            )

            # Then
            assert response.status_code == 403
            assert response.json["user"] == ["Vous n'avez pas les droits suffisants pour valider cette contremarque."]
    def test_should_return_date_of_birth_and_phone_number_when_offer_is_an_activation(
            self):
        # Given
        user = create_user(
            date_of_birth=datetime(2001, 1, 1),
            email="*****@*****.**",
            phone_number="0612345678",
            public_name="John Doe",
        )
        offerer = create_offerer()
        venue = create_venue(offerer,
                             name="Venue name",
                             address="Venue address")
        offer = create_offer_with_event_product(
            venue=venue,
            event_name="Event Name",
            event_type=EventType.ACTIVATION)
        event_occurrence = create_event_occurrence(
            offer, beginning_datetime=datetime.utcnow())
        stock = create_stock_from_event_occurrence(event_occurrence, price=12)
        booking = create_booking(user=user,
                                 quantity=3,
                                 stock=stock,
                                 venue=venue)

        # When
        response = serialize_booking(booking)

        # Then
        assert response["dateOfBirth"] == "2001-01-01T00:00:00Z"
        assert response["phoneNumber"] == "0612345678"
        def when_api_key_is_provided_and_rights_and_regular_offer(self, app):
            # Given
            user = create_user(email="*****@*****.**", public_name="John Doe")
            user2 = create_user(email="*****@*****.**", public_name="Jane Doe")
            offerer = create_offerer()
            user_offerer = create_user_offerer(user2, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name", event_type=EventType.CINEMA)
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(user_offerer, booking)
            offererApiKey = create_api_key(offerer_id=offerer.id)
            repository.save(offererApiKey)
            user2ApiKey = f"Bearer {offererApiKey.value}"
            booking_token = booking.token.lower()
            url = f"/v2/bookings/token/{booking_token}"

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

            # Then
            assert response.status_code == 200
Пример #7
0
        def when_user_has_rights_and_email_with_special_characters_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)
            stock = create_stock_from_event_occurrence(event_occurrence,
                                                       price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(user_offerer, booking)
            url = f"/bookings/token/{booking.token}?email={user.email}"

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

            # Then
            assert response.status_code == 404
    def test_should_humanize_ids(self):
        # Given
        user = create_user(email="*****@*****.**", public_name="John Doe")
        offerer = create_offerer()
        venue = create_venue(offerer,
                             name="Venue name",
                             address="Venue address")
        offer = create_offer_with_event_product(venue=venue,
                                                event_name="Event Name",
                                                event_type=EventType.CINEMA,
                                                idx=999)
        event_occurrence = create_event_occurrence(
            offer, beginning_datetime=datetime.utcnow())
        stock = create_stock_from_event_occurrence(event_occurrence, price=12)
        booking = create_booking(user=user,
                                 quantity=3,
                                 stock=stock,
                                 venue=venue)

        # When
        response = serialize_booking(booking)

        # Then
        assert response["bookingId"] == humanize(booking.id)
        assert response["offerId"] == offer.id
        assert response["publicOfferId"] == humanize(offer.id)
Пример #9
0
        def when_user_has_rights_and_regular_offer_and_token_in_lower_case(
                self, app):
            # Given
            user = create_user(email="*****@*****.**",
                               public_name="John Doe")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            user_offerer = create_user_offerer(admin_user, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(
                venue, event_name="Event Name", event_type=EventType.CINEMA)
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence,
                                                       price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(user_offerer, booking)
            booking_token = booking.token.lower()
            url = f"/bookings/token/{booking_token}"

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

            # Then
            assert response.status_code == 200
            response_json = response.json
            assert response_json == {
                "bookingId": humanize(booking.id),
                "date": serialize(booking.stock.beginningDatetime),
                "email": "*****@*****.**",
                "isUsed": False,
                "offerName": "Event Name",
                "userName": "******",
                "venueDepartementCode": "93",
            }
Пример #10
0
def _create_event_stock_and_offer_for_date(venue, date):
    product = create_product_with_event_type()
    offer = create_offer_with_event_product(venue=venue, product=product)
    event_occurrence = create_event_occurrence(offer, beginning_datetime=date)
    stock = create_stock_from_event_occurrence(event_occurrence,
                                               booking_limit_date=date)
    return stock
Пример #11
0
def create_industrial_event_stocks(event_occurrences_by_name):
    logger.info("create_industrial_event_stocks")

    event_stocks_by_name = {}
    short_names_to_increase_price = []

    event_occurrence_items = list(event_occurrences_by_name.items())

    event_occurrence_items_with_stocks = remove_every(
        event_occurrence_items, EVENT_OCCURRENCES_WITH_STOCKS_REMOVE_MODULO
    )

    for event_occurrence_item_with_stocks in event_occurrence_items_with_stocks:
        (event_occurrence_with_stocks_name, event_occurrence_with_stocks) = event_occurrence_item_with_stocks
        available = 10

        short_name = get_occurrence_short_name(event_occurrence_with_stocks_name)
        price = get_price_by_short_name(short_name)
        price_counter = short_names_to_increase_price.count(short_name)
        if price_counter > 2:
            price = price + price_counter
        short_names_to_increase_price.append(short_name)

        if event_occurrence_with_stocks["offer"].product.offerType["value"] == str(EventType.ACTIVATION):
            price = 0

        name = event_occurrence_with_stocks_name + " / " + str(available) + " / " + str(price)

        event_stocks_by_name[name] = create_stock_from_event_occurrence(
            event_occurrence_with_stocks, price=price, quantity=available
        )

    repository.save(*event_stocks_by_name.values())

    logger.info("created %d event_stocks", len(event_stocks_by_name))
Пример #12
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)
        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
        def when_given_api_key_not_related_to_booking_offerer(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            offerer2 = create_offerer(siren="987654321")
            user_offerer = create_user_offerer(admin_user, offerer)
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(admin_user, booking, user_offerer, offerer2)
            offerer2ApiKey = create_api_key(offerer_id=offerer2.id)
            repository.save(offerer2ApiKey)
            user2ApiKey = f"Bearer {offerer2ApiKey.value}"
            url = f"/v2/bookings/token/{booking.token}"

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

            # Then
            assert response.status_code == 403
            assert response.json["user"] == ["Vous n'avez pas les droits suffisants pour valider cette contremarque."]
Пример #14
0
def save_paid_reimbursable_event_offer(venue: VenueSQLEntity):
    paid_reimbursable_event_offer = create_offer_with_event_product(
        venue, event_name="Paid event", event_type=EventType.SPECTACLE_VIVANT)
    past_occurrence = create_event_occurrence(paid_reimbursable_event_offer,
                                              beginning_datetime=now -
                                              three_days)
    future_occurrence = create_event_occurrence(paid_reimbursable_event_offer,
                                                beginning_datetime=now +
                                                three_days)
    past_event_stock = create_stock_from_event_occurrence(past_occurrence,
                                                          price=10)
    future_event_stock = create_stock_from_event_occurrence(future_occurrence,
                                                            price=10)
    repository.save(past_event_stock, future_event_stock)
    logger.info(
        "created 1 event offer with 1 past and 1 future occurrence with 1 paid stock of 10 € each"
    )
    return past_event_stock, future_event_stock
Пример #15
0
def save_free_event_offer_with_stocks(venue: VenueSQLEntity):
    free_event_offer = create_offer_with_event_product(
        venue, event_name="Free event", event_type=EventType.SPECTACLE_VIVANT)
    past_occurrence = create_event_occurrence(free_event_offer,
                                              beginning_datetime=now -
                                              three_days)
    future_occurrence = create_event_occurrence(free_event_offer,
                                                beginning_datetime=now +
                                                three_days)
    past_free_event_stock = create_stock_from_event_occurrence(past_occurrence,
                                                               price=0)
    future_free_event_stock = create_stock_from_event_occurrence(
        future_occurrence, price=0)
    repository.save(past_free_event_stock, future_free_event_stock)
    logger.info(
        "created 1 event offer with 1 past and 1 future occurrence with 1 free stock each"
    )
    return past_free_event_stock, future_free_event_stock
Пример #16
0
        def when_user_has_rights_and_regular_offer(self, app):
            # Given
            user = create_user(email="*****@*****.**",
                               public_name="John Doe")
            create_deposit(user)
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            create_user_offerer(admin_user, offerer)
            venue = create_venue(offerer,
                                 name="Venue name",
                                 address="Venue address")
            offer = create_offer_with_event_product(
                venue=venue,
                event_name="Event Name",
                event_type=EventType.CINEMA)
            four_days_from_now = datetime.utcnow() + timedelta(days=4)
            event_occurrence = create_event_occurrence(
                offer, beginning_datetime=four_days_from_now)
            stock = create_stock_from_event_occurrence(event_occurrence,
                                                       price=12)
            unconfirmed_booking = create_booking(
                user=user,
                quantity=3,
                stock=stock,
                venue=venue,
                date_created=datetime.utcnow() - timedelta(hours=48))
            repository.save(unconfirmed_booking)
            url = f"/v2/bookings/token/{unconfirmed_booking.token}"

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

            # Then
            assert response.headers["Content-type"] == "application/json"
            assert response.status_code == 200
            assert response.json == {
                "bookingId": humanize(unconfirmed_booking.id),
                "dateOfBirth": "",
                "datetime": format_into_utc_date(stock.beginningDatetime),
                "ean13": "",
                "email": "*****@*****.**",
                "formula": "PLACE",
                "isUsed": False,
                "offerId": offer.id,
                "offerName": "Event Name",
                "offerType": "EVENEMENT",
                "phoneNumber": "",
                "price": 12.0,
                "publicOfferId": humanize(offer.id),
                "quantity": 3,
                "userName": "******",
                "venueAddress": "Venue address",
                "venueDepartementCode": "93",
                "venueName": "Venue name",
            }
    def test_make_offerer_driven_cancellation_email_for_offerer_event_when_no_other_booking(
            self, app):
        # Given
        beginning_datetime = datetime(2019,
                                      7,
                                      20,
                                      12,
                                      0,
                                      0,
                                      tzinfo=timezone.utc)
        booking_limit_datetime = beginning_datetime - timedelta(hours=1)

        user = create_user(email="*****@*****.**", public_name="John Doe")
        offerer = create_offerer(name="Test offerer")
        venue = create_venue(offerer,
                             name="Le petit théâtre",
                             address="1 rue de la Libération",
                             city="Montreuil",
                             postal_code="93100")
        offer = create_offer_with_event_product(
            venue, event_name="Le théâtre des ombres")
        event_occurrence = create_event_occurrence(
            offer, beginning_datetime=beginning_datetime)
        stock = create_stock_from_event_occurrence(
            event_occurrence,
            price=20,
            quantity=10,
            booking_limit_date=booking_limit_datetime)
        booking = create_booking(user=user, stock=stock)

        # When
        with patch("pcapi.utils.mailing.find_ongoing_bookings_by_stock",
                   return_value=[]):
            email = make_offerer_driven_cancellation_email_for_offerer(booking)

        # Then
        email_html = BeautifulSoup(email["Html-part"], "html.parser")
        html_action = str(email_html.find("p", {"id": "action"}))
        html_recap = str(email_html.find("p", {"id": "recap"}))
        html_no_recal = str(email_html.find("p", {"id": "no-recap"}))
        assert "Vous venez d'annuler" in html_action
        assert "John Doe" in html_action
        assert "*****@*****.**" in html_action
        assert "pour Le théâtre des ombres" in html_recap
        assert "proposé par Le petit théâtre" in html_recap
        assert "le 20 juillet 2019 à 14:00" in html_recap
        assert "1 rue de la Libération" in html_recap
        assert "Montreuil" in html_recap
        assert "93100" in html_recap
        assert "Aucune réservation" in html_no_recal
        assert (
            email["Subject"] ==
            "Confirmation de votre annulation de réservation pour Le théâtre des ombres, proposé par Le petit théâtre"
        )
Пример #18
0
def save_free_event_offer_with_stocks(venue: Venue):
    free_event_offer = create_offer_with_event_product(
        venue,
        event_name="Free event",
        event_subcategory_id=subcategories.SPECTACLE_REPRESENTATION.id,
    )
    past_occurrence = create_event_occurrence(free_event_offer,
                                              beginning_datetime=now -
                                              three_days)
    future_occurrence = create_event_occurrence(free_event_offer,
                                                beginning_datetime=now +
                                                three_days)
    past_free_event_stock = create_stock_from_event_occurrence(past_occurrence,
                                                               price=0)
    future_free_event_stock = create_stock_from_event_occurrence(
        future_occurrence, price=0)
    repository.save(past_free_event_stock, future_free_event_stock)
    logger.info(
        "created 1 event offer with 1 past and 1 future occurrence with 1 free stock each"
    )
    return past_free_event_stock, future_free_event_stock
    def test_make_offerer_driven_cancellation_email_for_offerer_event_when_other_booking(
            self, app):
        # Given
        user1 = create_user(email="*****@*****.**",
                            first_name="John",
                            last_name="Doe",
                            public_name="John Doe")
        user2 = create_user(email="*****@*****.**",
                            first_name="Jane",
                            last_name="Smith",
                            public_name="Jane S.")
        offerer = create_offerer(name="Test offerer")
        venue = create_venue(offerer,
                             name="Le petit théâtre",
                             address="1 rue de la Libération",
                             city="Montreuil",
                             postal_code="93100")
        offer = create_offer_with_event_product(
            venue, event_name="Le théâtre des ombres")
        event_occurrence = create_event_occurrence(offer,
                                                   beginning_datetime=datetime(
                                                       2019,
                                                       7,
                                                       20,
                                                       12,
                                                       0,
                                                       0,
                                                       tzinfo=timezone.utc))
        stock = create_stock_from_event_occurrence(event_occurrence,
                                                   price=20,
                                                   quantity=10)
        booking1 = create_booking(user=user1, stock=stock, token="98765")
        booking2 = create_booking(user=user2, stock=stock, token="12345")

        # When
        with patch("pcapi.utils.mailing.find_ongoing_bookings_by_stock",
                   return_value=[booking2]):
            email = make_offerer_driven_cancellation_email_for_offerer(
                booking1)

        # Then
        email_html = BeautifulSoup(email["Html-part"], "html.parser")
        html_recap_table = email_html.find("table", {"id": "recap-table"}).text
        assert "Prénom" in html_recap_table
        assert "Nom" in html_recap_table
        assert "Email" in html_recap_table
        assert "Jane" in html_recap_table
        assert "Smith" in html_recap_table
        assert "*****@*****.**" in html_recap_table
        assert "12345" in html_recap_table
Пример #20
0
    def test_should_send_mail_to_dev_when_feature_send_mail_to_users_is_disabled(
            self, feature_send_mail_to_users_enabled):
        # Given
        user = create_user()
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue)
        event_occurrence = create_event_occurrence(offer)
        stock = create_stock_from_event_occurrence(event_occurrence)
        booking = create_booking(user=user, stock=stock)

        # When
        mailjet_data = retrieve_data_to_warn_beneficiary_after_pro_booking_cancellation(
            booking)

        # Then
        assert mailjet_data["To"] == "*****@*****.**"
        def when_booking_is_not_provided_at_all(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(booking)
            url = "/v2/bookings/token/"

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

            # Then
            assert response.status_code == 404
    def when_user_not_logged_in_and_doesnt_give_api_key(self, app):
        # Given
        user = create_user(email="*****@*****.**")
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue, event_name="Event Name")
        event_occurrence = create_event_occurrence(offer)
        stock = create_stock_from_event_occurrence(event_occurrence, price=0)
        booking = create_booking(user=user, stock=stock, venue=venue)

        repository.save(booking)

        # When
        url = "/v2/bookings/keep/token/{}".format(booking.token)
        response = TestClient(app.test_client()).patch(url)

        # Then
        assert response.status_code == 401
Пример #23
0
    def test_should_return_event_data_when_booking_is_on_an_event(self):
        # Given
        beginning_datetime = datetime(2019,
                                      7,
                                      20,
                                      12,
                                      0,
                                      0,
                                      tzinfo=timezone.utc)

        user = create_user()
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue)
        event_occurrence = create_event_occurrence(
            offer, beginning_datetime=beginning_datetime)
        stock = create_stock_from_event_occurrence(event_occurrence, price=20)
        booking = create_booking(user=user, stock=stock)

        # When
        mailjet_data = retrieve_data_to_warn_beneficiary_after_pro_booking_cancellation(
            booking)

        # Then
        assert mailjet_data == {
            "FromEmail": "*****@*****.**",
            "MJ-TemplateID": 1116690,
            "MJ-TemplateLanguage": True,
            "To": "*****@*****.**",
            "Vars": {
                "event_date": "samedi 20 juillet 2019",
                "event_hour": "14h",
                "is_event": 1,
                "is_free_offer": 0,
                "is_online": 0,
                "is_thing": 0,
                "offer_name": booking.stock.offer.name,
                "offer_price": "20",
                "offerer_name": booking.stock.offer.venue.managingOfferer.name,
                "user_first_name": user.firstName,
                "venue_name": booking.stock.offer.venue.name,
            },
        }
Пример #24
0
    def test_should_send_mail_to_offerer_and_pass_culture_administration_when_feature_send_mail_to_users_is_enabled(
        self, feature_send_mail_to_users_enabled
    ):
        # Given
        user = create_user()
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue)
        event_occurrence = create_event_occurrence(offer)
        stock = create_stock_from_event_occurrence(event_occurrence)
        booking = create_booking(user=user, stock=stock)
        bookings = [booking]
        recipients = "[email protected], [email protected]"

        # When
        mailjet_data = retrieve_offerer_bookings_recap_email_data_after_offerer_cancellation(bookings, recipients)

        # Then
        assert mailjet_data["To"] == "[email protected], [email protected]"
        def when_user_doesnt_have_rights_and_token_exists(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            querying_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue, event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence, price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(querying_user, booking)
            url = f"/v2/bookings/token/{booking.token}"

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

            # Then
            assert response.status_code == 403
            assert response.json["user"] == ["Vous n'avez pas les droits suffisants pour valider cette contremarque."]
    def test_should_return_dict_when_offer_is_a_cinema(self):
        # Given
        user = create_user(email="*****@*****.**", public_name="John Doe")
        offerer = create_offerer()
        venue = create_venue(offerer,
                             name="Venue name",
                             address="Venue address")
        offer = create_offer_with_event_product(venue=venue,
                                                event_name="Event Name",
                                                event_type=EventType.CINEMA)
        event_occurrence = create_event_occurrence(
            offer, beginning_datetime=datetime.utcnow())
        stock = create_stock_from_event_occurrence(event_occurrence, price=12)
        booking = create_booking(user=user,
                                 quantity=3,
                                 stock=stock,
                                 venue=venue)

        # When
        response = serialize_booking(booking)

        # Then
        assert response == {
            "bookingId": humanize(booking.id),
            "dateOfBirth": "",
            "datetime": "2019-11-26T18:29:20.891028Z",
            "ean13": "",
            "email": "*****@*****.**",
            "formula": "PLACE",
            "isUsed": False,
            "offerId": offer.id,
            "publicOfferId": humanize(offer.id),
            "offerName": "Event Name",
            "offerType": "EVENEMENT",
            "phoneNumber": "",
            "price": 12,
            "quantity": 3,
            "userName": "******",
            "venueAddress": "Venue address",
            "venueDepartementCode": "93",
            "venueName": "Venue name",
        }
Пример #27
0
        def when_user_not_logged_in_and_gives_right_email(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue,
                                                    event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence,
                                                       price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(admin_user, booking)
            url = f"/bookings/token/{booking.token}[email protected]"

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

            # Then
            assert response.status_code == 204
    def when_user_not_logged_in_and_given_api_key_that_does_not_exists(self, app):
        # Given
        user = create_user(email="*****@*****.**")
        offerer = create_offerer()
        venue = create_venue(offerer)
        offer = create_offer_with_event_product(venue, event_name="Event Name")
        event_occurrence = create_event_occurrence(offer)
        stock = create_stock_from_event_occurrence(event_occurrence, price=0)
        booking = create_booking(user=user, stock=stock, venue=venue)

        repository.save(booking)

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

        # Then
        assert response.status_code == 401
    def test_should_return_empty_formula_when_offer_is_not_a_cinema(self):
        # Given
        user = create_user(email="*****@*****.**", public_name="John Doe")
        offerer = create_offerer()
        venue = create_venue(offerer,
                             name="Venue name",
                             address="Venue address")
        offer = create_offer_with_event_product(venue=venue,
                                                event_name="Event Name",
                                                event_type=EventType.JEUX)
        event_occurrence = create_event_occurrence(
            offer, beginning_datetime=datetime.utcnow())
        stock = create_stock_from_event_occurrence(event_occurrence, price=12)
        booking = create_booking(user=user,
                                 quantity=3,
                                 stock=stock,
                                 venue=venue)

        # When
        response = serialize_booking(booking)

        # Then
        assert response["formula"] == ""
Пример #30
0
        def when_user_not_logged_in_and_doesnt_give_email(self, app):
            # Given
            user = create_user(email="*****@*****.**")
            admin_user = create_user(email="*****@*****.**")
            offerer = create_offerer()
            venue = create_venue(offerer)
            offer = create_offer_with_event_product(venue,
                                                    event_name="Event Name")
            event_occurrence = create_event_occurrence(offer)
            stock = create_stock_from_event_occurrence(event_occurrence,
                                                       price=0)
            booking = create_booking(user=user, stock=stock, venue=venue)
            repository.save(admin_user, booking)
            url = f"/bookings/token/{booking.token}"

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

            # Then
            assert response.status_code == 400
            error_message = response.json
            assert error_message["email"] == [
                "Vous devez préciser l'email de l'utilisateur quand vous n'êtes pas connecté(e)"
            ]