def test_enrollment_once_per_customer_redeem_url_email_domain(self):
     """
     Scenario: Enrollment Once Per Customer URL: URL can be used only by
     users of valid email domains
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['once_per_cust'],
                          course_id=self.course_info,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id,
                          email_domains=VALID_EMAIL_DOMAIN)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     # Login to application using the existing credentials
     invalid_domain_users = list(INVALID_DOMAIN_USERS.values())
     # Verify that coupon url cannot be used for unauthorized email domain
     invalid_domain_user = random.choice(invalid_domain_users)
     self.login_page.visit()
     self.login_user_using_ui(invalid_domain_user, PASSWORD)
     self.redeem_single_course_enrollment_coupon(
         coupon_code, self.redeem_coupon_error_page)
     self.assertEqual(self.redeem_coupon_error_page.error_message,
                      INVALID_DOMAIN_ERROR_MESSAGE_ON_REDEEM_URL)
 def test_enrollment_once_per_customer_code_max_limit(self):
     """
     Scenario: Enrollment Once Per Customer - Code Max Limit: Each code can
     be used up to the number of allowed uses and after that it is not
     usable by any user
     """
     maximum_uses = 2
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['once_per_cust'],
                          course_id=self.course_info,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id,
                          max_uses=maximum_uses)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     # Login to application using the existing credentials
     for i in range(maximum_uses):
         # Register to application using api
         self.register_using_api(
             construct_course_basket_page_url(self.course_id))
         if i < maximum_uses:
             self.enroll_using_enrollment_code(coupon_code)
             self.assert_enrollment_and_logout()
         else:
             self.assertEqual(
                 self.error_message_on_invalid_coupon_code(coupon_code),
                 ONCE_PER_CUSTOMER_CODE_MAX_LIMIT)
Exemplo n.º 3
0
 def test_apply_enrollment_once_per_customer_redeem_url(self):
     """
     Scenario: Registered Users: Dynamic Enrollment Once Per Customer
     Redeem URL: Each URL can be used up to the number of allowed uses
     and after that it is not usable by any user
     """
     maximum_uses = 2
     self.coupon = Coupon(COURSE_CATALOG_TYPE['multi'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['once_per_cust'],
                          catalog_query=CATALOG_QUERY,
                          course_seat_types=COURSE_SEAT_TYPES['prof'],
                          stock_record_ids=[],
                          max_uses=maximum_uses)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     for i in range(maximum_uses):
         if i < maximum_uses:
             # Register to application using api
             self.register_using_api()
             self.redeem_multi_course_enrollment_coupon(
                 coupon_code, self.login_page, self.course_title)
             self.login_page.authenticate_user("coupon_user", PASSWORD)
             self.receipt_page.wait_for_page()
             self.verify_receipt_info_for_discounted_course()
             self.receipt_page.click_in_nav_to_go_to_dashboard()
             self.dashboard_page.wait_for_page()
             self.assert_enrollment_and_logout()
         else:
             self.register_using_api()
             redeem_coupon = RedeemCouponPage(self.browser,
                                              coupon_code).visit()
             self.assertEqual(redeem_coupon.error_message,
                              ONCE_PER_CUSTOMER_REDEEM_URL_MAX_LIMIT)
 def test_apply_enrollment_single_use_redeem_url(self):
     """
     Scenario: Enrollment Single Use Redeem URL: URL cannot be reused
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['single'],
                          course_id=self.course_info,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     self.register_using_api()
     self.redeem_single_course_enrollment_coupon(coupon_code,
                                                 self.receipt_page)
     self.ecom_cookies = self.browser.get_cookies()
     self.receipt_page.wait_for_page()
     self.verify_receipt_info_for_discounted_course()
     self.receipt_page.click_in_nav_to_go_to_dashboard()
     self.dashboard_page.wait_for_page()
     self.assert_enrollment_and_logout()
     self.register_using_api()
     self.redeem_single_course_enrollment_coupon(
         coupon_code, self.redeem_coupon_error_page)
     self.assertEqual(self.redeem_coupon_error_page.error_message,
                      SINGLE_USE_REDEEM_URL_REUSE_ERROR)
 def test_discount_single_use_percentage_code(self):
     """
     Scenario: Dynamic Discount Single Use Percentage Code: Code cannot
     be reused
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['multi'],
                          COUPON_TYPE['disc'],
                          VOUCHER_TYPE['single'],
                          catalog_query=CATALOG_QUERY,
                          stock_record_ids=[],
                          course_seat_types=COURSE_SEAT_TYPES['prof'],
                          benefit_type=BENEFIT_TYPE['per'],
                          benefit_value=BENEFIT_VALUE['per'])
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Login to application using the existing credentials
     self.login_page.visit()
     # Register to application using api
     self.register_using_api(
         construct_course_basket_page_url(self.course_id))
     self.enroll_using_discount_code(coupon_code)
     self.assert_enrollment_and_logout_of_ecommerce()
     # Register to application using api
     self.register_using_api(
         construct_course_basket_page_url(self.course_id))
     self.assertEqual(
         self.error_message_on_invalid_coupon_code(coupon_code),
         SINGLE_USE_CODE_REUSE_ERROR.format(coupon_code))
Exemplo n.º 6
0
 def test_enrollment_once_per_customer_code_max_limit(self):
     """
     Scenario: Dynamic Enrollment Once Per Customer - Code Max Limit: Each
     code can be used up to the number of allowed uses and after that it
     is not usable by any user
     """
     maximum_uses = 2
     self.coupon = Coupon(COURSE_CATALOG_TYPE['multi'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['once_per_cust'],
                          catalog_query=CATALOG_QUERY,
                          course_seat_types=COURSE_SEAT_TYPES['prof'],
                          stock_record_ids=[],
                          max_uses=maximum_uses)
     self.coupon.setup_coupons_using_api(self.course_price)
     self.addCleanup(self.coupon.delete_coupon)
     coupon_code = self.coupon.coupon_codes[0]
     for i in range(maximum_uses):
         if i < maximum_uses:
             # Register to application using api
             self.register_using_api(
                 construct_course_basket_page_url(self.course_id))
             self.enroll_using_enrollment_code(coupon_code)
             self.assert_enrollment_and_logout()
         else:
             # Register to application using api
             self.register_using_api(
                 construct_course_basket_page_url(self.course_id))
             self.assertEqual(
                 self.error_message_on_invalid_coupon_code(coupon_code),
                 ONCE_PER_CUSTOMER_CODE_MAX_LIMIT)
 def test_discount_single_use_percentage_code(self):
     """
     Scenario: Discount Single Use Percentage Code: Code cannot be reused
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['disc'],
                          VOUCHER_TYPE['single'],
                          course_id=self.course_id,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id,
                          benefit_type=BENEFIT_TYPE['per'],
                          benefit_value=BENEFIT_VALUE['per'])
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     # Register to application using api
     self.register_using_api(
         construct_course_basket_page_url(self.course_id))
     self.enroll_using_discount_code(coupon_code)
     self.assert_enrollment_and_logout()
     self.register_using_api(
         construct_course_basket_page_url(self.course_id))
     self.assertEqual(
         self.error_message_on_invalid_coupon_code(coupon_code),
         SINGLE_USE_CODE_REUSE_ERROR.format(coupon_code))
 def test_discount_once_per_customer_fixed_code_email_domain(self):
     """
     Scenario: Discount Once Per Customer Fixed Code: Code cannot be used
     by users of invalid email domains
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['disc'],
                          VOUCHER_TYPE['once_per_cust'],
                          course_id=self.course_id,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id,
                          benefit_type=BENEFIT_TYPE['abs'],
                          benefit_value=BENEFIT_VALUE['fixed'],
                          email_domains=VALID_EMAIL_DOMAIN)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     # Login to application using the invalid domain user credentials
     invalid_domain_users = list(INVALID_DOMAIN_USERS.values())
     # Verify that coupon code cannot be added for unauthorized email domain
     invalid_domain_user = random.choice(invalid_domain_users)
     self.login_page.visit()
     self.login_user_using_ui(invalid_domain_user, PASSWORD)
     self.go_to_basket()
     self.assertEqual(
         self.error_message_on_invalid_coupon_code(coupon_code),
         INVALID_DOMAIN_ERROR_MESSAGE_ON_BASKET)
    def test_discount_once_per_customer_fixed_redeem_url_future(self):
        """
        Scenario: Discount Once Per Customer Fixed Redeem URL: Relevant error
        message is displayed on the use of future redeem url
        """

        self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                             COUPON_TYPE['disc'],
                             VOUCHER_TYPE['once_per_cust'],
                             start_datetime=FUTURE_START_DATE,
                             course_id=self.course_id,
                             seat_type=SEAT_TYPE['prof'],
                             stock_record_ids=self.stock_record_id,
                             benefit_type=BENEFIT_TYPE['abs'],
                             benefit_value=BENEFIT_VALUE['fixed'],
                             max_uses=2)

        self.coupon.setup_coupons_using_api(self.course_price)
        coupon_code = self.coupon.coupon_codes[0]
        # Delete coupon after test
        self.addCleanup(self.coupon.delete_coupon)
        # Register to application using api
        self.register_using_api()
        redeem_coupon = RedeemCouponPage(self.browser, coupon_code).visit()
        self.assertEqual(redeem_coupon.error_message, FUTURE_REDEEM_URL_ERROR)
Exemplo n.º 10
0
    def test_discount_once_per_customer_percentage_redeem_url(self):
        """
        Scenario: Inactive Users - Discount Once Per Customer Percentage
        Redeem URL: URL cannot be used twice by he same user
        """
        self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                             COUPON_TYPE['disc'],
                             VOUCHER_TYPE['once_per_cust'],
                             course_id=self.course_id,
                             seat_type=SEAT_TYPE['prof'],
                             stock_record_ids=self.stock_record_id,
                             benefit_type=BENEFIT_TYPE['per'],
                             benefit_value=BENEFIT_VALUE['per'])
        self.coupon.setup_coupons_using_api(self.course_price)
        coupon_code = self.coupon.coupon_codes[0]
        # Delete coupon after test
        self.addCleanup(self.coupon.delete_coupon)
        self.home.visit()
        self.redeem_single_course_discount_coupon(coupon_code)
        self.login_page.wait_for_page()
        self.login_page.toggle_to_registration_page()
        self.registration_page.wait_for_page()
        user_name = str(uuid.uuid4().node)
        temp_mail = user_name + "@example.com"

        self.registration_page.register_white_label_user(
            get_white_label_registration_fields(email=temp_mail,
                                                username=user_name))
        self.single_seat_basket.wait_for_page()
        self.make_payment_after_discount()
        self.assert_course_added_to_dashboard()
        redeem_coupon = RedeemCouponPage(self.browser, coupon_code).visit()
        self.assertEqual(redeem_coupon.error_message,
                         ONCE_PER_CUSTOMER_REDEEM_URL_SAME_USER_REUSE)
Exemplo n.º 11
0
    def test_discount_single_use_fixed_redeem_url(self):
        """
        Scenario: Existing Users - Discount Single Use Fixed Redeem URL: Each
        redeem url can be used by one person successfully
        """
        self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                             COUPON_TYPE['disc'],
                             VOUCHER_TYPE['single'],
                             course_id=self.course_id,
                             seat_type=SEAT_TYPE['prof'],
                             stock_record_ids=self.stock_record_id,
                             benefit_type=BENEFIT_TYPE['abs'],
                             benefit_value=BENEFIT_VALUE['fixed'],
                             quantity=2)

        self.coupon.setup_coupons_using_api(self.course_price)
        coupon_codes = self.coupon.coupon_codes
        # Delete coupon after test
        self.addCleanup(self.coupon.delete_coupon)
        for coupon_code in coupon_codes:
            # Register to application using api
            self.register_using_api()
            self.redeem_single_course_discount_coupon(coupon_code)
            self.basket_page.wait_for_page()
            self.ecom_cookies = self.browser.get_cookies()
            self.make_payment_after_discount()
            self.dashboard_page.wait_for_page()
            self.assert_enrollment_and_logout()
Exemplo n.º 12
0
    def test_discount_single_use_fixed_code_expired(self):
        """
        Scenario: Discount Single Use Fixed Code: Relevant error message is
        displayed on the use of Expired coupon
        """
        self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                             COUPON_TYPE['disc'],
                             VOUCHER_TYPE['single'],
                             end_datetime=EXPIRED_END_DATE,
                             course_id=self.course_id,
                             seat_type=SEAT_TYPE['prof'],
                             stock_record_ids=self.stock_record_id,
                             benefit_type=BENEFIT_TYPE['abs'],
                             benefit_value=BENEFIT_VALUE['fixed'])

        self.coupon.setup_coupons_using_api(self.course_price)
        coupon_code = self.coupon.coupon_codes[0]
        # Delete coupon after test
        self.addCleanup(self.coupon.delete_coupon)
        # Register to application using api
        self.register_using_api(
            construct_course_basket_page_url(self.course_id))
        self.assertEqual(
            self.error_message_on_invalid_coupon_code(coupon_code),
            EXPIRED_CODE_ERROR.format(coupon_code))
    def test_discount_once_per_customer_fixed_code(self):
        """
        Scenario: Discount Once Per Customer Fixed Code: Code can be used up
        to the number of allowed uses and after that it is not usable by anyone
        """
        maximum_uses = 2
        self.coupon = Coupon(
            COURSE_CATALOG_TYPE['single'],
            COUPON_TYPE['disc'],
            VOUCHER_TYPE['once_per_cust'],
            course_id=self.course_id,
            seat_type=SEAT_TYPE['prof'],
            stock_record_ids=self.stock_record_id,
            benefit_type=BENEFIT_TYPE['abs'],
            benefit_value=BENEFIT_VALUE['fixed'],
            max_uses=maximum_uses
        )

        self.coupon.setup_coupons_using_api(self.course_price)
        coupon_code = self.coupon.coupon_codes[0]
        # Delete coupon after test
        self.addCleanup(self.coupon.delete_coupon)
        for i in range(maximum_uses):
            # Register to application using api
            self.register_using_api(
                construct_course_basket_page_url(self.course_id)
            )
            if i < maximum_uses:
                self.enroll_using_discount_code(coupon_code)
                self.assert_enrollment_and_logout()
            else:
                self.assertEqual(
                    self.error_message_on_invalid_coupon_code(coupon_code),
                    ONCE_PER_CUSTOMER_CODE_MAX_LIMIT
                )
 def test_enrollment_once_per_customer_redeem_url_expired(self):
     """
     Scenario: Enrollment Once Per Customer Redeem URL: Relevant error
     message is displayed on the use of expired redeem url
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['once_per_cust'],
                          end_datetime=EXPIRED_END_DATE,
                          course_id=self.course_info,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     # Register to application using api
     self.register_using_api()
     redeem_coupon = RedeemCouponPage(self.browser, coupon_code).visit()
     self.assertEqual(redeem_coupon.error_message, EXPIRED_REDEEM_URL_ERROR)
 def test_enrollment_single_use_code_future(self):
     """
     Scenario: Enrollment Single Use Code: Relevant error message is
     displayed on the use of future coupon
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['single'],
                          start_datetime=FUTURE_START_DATE,
                          course_id=self.course_info,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_code = self.coupon.coupon_codes[0]
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     # Register to application using api
     self.register_using_api(
         construct_course_basket_page_url(self.course_id))
     self.assertEqual(
         self.error_message_on_invalid_coupon_code(coupon_code),
         FUTURE_CODE_ERROR.format(coupon_code))
 def test_enrollment_single_use_code(self):
     """
     Scenario: Enrollment Single Use Code: Each code can be used by one
     person successfully
     """
     self.coupon = Coupon(COURSE_CATALOG_TYPE['single'],
                          COUPON_TYPE['enroll'],
                          VOUCHER_TYPE['single'],
                          course_id=self.course_info,
                          seat_type=SEAT_TYPE['prof'],
                          stock_record_ids=self.stock_record_id,
                          quantity=2)
     self.coupon.setup_coupons_using_api(self.course_price)
     coupon_codes = self.coupon.coupon_codes
     # Delete coupon after test
     self.addCleanup(self.coupon.delete_coupon)
     for coupon_code in coupon_codes:
         # Register to application using api
         self.register_using_api(
             construct_course_basket_page_url(self.course_id))
         self.enroll_using_enrollment_code(coupon_code)
         self.assert_enrollment_and_logout()