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", }
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_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."]
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, }, }
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", }
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
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"] == ""
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)" ]
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" ]
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