def when_user_has_rights_and_regular_offer(self, app):
            # Given
            user = users_factories.UserFactory(email="*****@*****.**", publicName="John Doe")
            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",
            }
Ejemplo n.º 2
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]"
Ejemplo n.º 3
0
        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_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."]
Ejemplo n.º 5
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,
            },
        }
Ejemplo n.º 6
0
        def when_email_has_special_characters_but_is_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 = "/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 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",
        }
Ejemplo n.º 8
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_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
Ejemplo n.º 10
0
def create_industrial_event_occurrences(event_offers_by_name):
    logger.info("create_industrial_event_occurrences")

    event_occurrences_by_name = {}

    event_offers = list(event_offers_by_name.values())

    event_offers_with_occurrences = remove_every(event_offers, EVENT_OFFERS_WITH_OCCURRENCES_REMOVE_MODULO)

    for event_offer_with_occurrences in event_offers_with_occurrences:
        for beginning_datetime in EVENT_OCCURRENCE_BEGINNING_DATETIMES:
            name = "{} / {} / {} ".format(
                event_offer_with_occurrences.product.name,
                event_offer_with_occurrences.venue.name,
                strftime(beginning_datetime),
            )
            event_occurrences_by_name[name] = create_event_occurrence(
                beginning_datetime=strftime(beginning_datetime), offer=event_offer_with_occurrences
            )

    return event_occurrences_by_name
    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"] == ""
Ejemplo n.º 13
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)"
            ]
Ejemplo n.º 14
0
        def when_user_not_logged_in_and_wrong_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()).with_auth("*****@*****.**").get(url)

            # Then
            assert response.status_code == 404
            assert response.json["global"] == [
                "Cette contremarque n'a pas été trouvée"
            ]
Ejemplo n.º 15
0
def _create_event_stock_and_offer_for_date(venue, date):
    product = create_product_with_event_subcategory()
    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