예제 #1
0
  def test_paypal_email(self):
    email = "*****@*****.**"
    get_user_model().objects.filter(email=email).delete()
    client = Client()

    invoice = add_to_cart(client,self.session1.sessionproduct,1)
    # test first with no account
    params = get_course_query(session=self.session1,payer_email=email,invoice=invoice)
    paypal_post(self,params)

    # make sure only these two emails were sent to only that one address
    self.assertTrue(check_subjects(["Course enrollment confirmation","New account information"]))
    for message in mail.outbox:
      self.assertEqual([email], message.recipients())

    # now test same address with another class
    mail.outbox = []
    invoice = add_to_cart(client,self.session2.sessionproduct,1)
    params = get_course_query(session=self.session2,payer_email=email,invoice=invoice)
    paypal_post(self,params)
    self.assertTrue(check_subjects(["Course enrollment confirmation"]))
    for message in mail.outbox:
      self.assertEqual([email], message.recipients())

    # make sure a new account is not created and that the enrollments are right
    self.assertEqual(get_user_model().objects.filter(email=email).count(),1)
    # Note these next two lines use "get" because more than one enrollment throws an error.
    self.assertEqual(Enrollment.objects.get(session=self.session1).user.email,email)
    self.assertEqual(Enrollment.objects.get(session=self.session2).user.email,email)
예제 #2
0
    def test_paypal_email(self):
        email = "*****@*****.**"
        get_user_model().objects.filter(email=email).delete()
        # test first with no account
        params = get_course_query(session=self.session1, payer_email=email)
        paypal_post(self, params)

        # make sure only these two emails were sent to only that one address
        self.assertTrue(
            check_subjects(
                ["Course enrollment confirmation", "New account information"]))
        for message in mail.outbox:
            self.assertEqual([email], message.recipients())

        # now test same address with another class
        mail.outbox = []
        params = get_course_query(session=self.session2, payer_email=email)
        paypal_post(self, params)
        self.assertTrue(check_subjects(["Course enrollment confirmation"]))
        for message in mail.outbox:
            self.assertEqual([email], message.recipients())

        # make sure a new account is not created and that the enrollments are right
        self.assertEqual(get_user_model().objects.filter(email=email).count(),
                         1)
        # Note these next two lines use "get" because more than one enrollment throws an error.
        self.assertEqual(
            Enrollment.objects.get(session=self.session1).user.email, email)
        self.assertEqual(
            Enrollment.objects.get(session=self.session2).user.email, email)
예제 #3
0
파일: tests.py 프로젝트: peg5/txrx.org
  def test_hacker_membership(self):
    now = datetime.datetime.now()
    def validate(email):
      user = get_user_model().objects.get(email=email)
      self.assertEqual(user.level,product.level)
      subscription = user.subscription_set.get()
      self.assertEqual(subscription.paid_until.date(),add_months(now.date(),subscription.months))
      self.assertTrue(subscription.owed <= 0)

    level = Level.objects.get(name="Hacker")
    for product in level.product_set.all():
      new_email = "*****@*****.**"%product.pk
      get_user_model().objects.filter(email=new_email).delete()
      data = get_membership_query(product=product,payer_email=new_email)
      paypal_post(self,data)
      validate(new_email)

      # reposting the same data should not change anything
      paypal_post(self,data)
      validate(new_email)
      subjects = [u'New account information', u'TXRX Member Application Status for %s'%new_email.split("@")[0]]
      self.assertTrue(check_subjects(subjects))
      self.assertTrue(check_recipients([[new_email],[new_email]]))
      mail.outbox = []

    get_user_model().objects.get(email=new_email).delete()
    PayPalIPN.objects.filter(txn_id=data['txn_id']).delete()
예제 #4
0
파일: tests.py 프로젝트: peg5/txrx.org
  def test_flags(self):
    flag_transactions = ['subscr_cancel']
    all_transactions = flag_transactions + [
      'cart','subscr_signup','web_accept','send_money'
    ]
    for txn_type in all_transactions:
      level = Level.objects.get(name="Hacker")
      product = level.product_set.all()[0]
      new_email = "*****@*****.**"%product.pk
      get_user_model().objects.filter(email=new_email).delete()
      data = get_membership_query(product=product,payer_email=new_email)
      paypal_post(self,data)
      subscription = Subscription.objects.get(user__email=new_email)
      subscr_id = subscription.subscr_id


      # Now let's flag that account
      mail.outbox = []
      flag_data = get_flag_query(txn_type,payer_email=new_email,subscr_id=subscr_id)
      paypal_post(self,flag_data)
      subscription = Subscription.objects.get(user__email=new_email)
      if txn_type in flag_transactions:
        if txn_type == 'subscr_cancel':
          subjects = ['Flagged %s and canceled'%txn_type]
          self.assertTrue(subscription.canceled)
        else:
          subjects = ['Flagged %s'%txn_type]
          self.assertTrue(not subscription.canceled)
        flag = Flag.objects.get(subscription=subscription)
        self.assertTrue(check_subjects(subjects))
        self.assertEqual(flag.reason,txn_type)
        self.assertEqual(flag.status,'new')
예제 #5
0
 def test_repeat_events(self):
   Event.objects.filter(name="monkey").delete()
   e = Event.objects.create(name="monkey",repeat="month-number")
   eo = EventOccurrence.objects.create(start=self.tomorrow,end_time=self.in_an_hour,event=e)
   self.call_command("repeat_events")
   self.assertEqual(e.eventoccurrence_set.count(),5)
   subjects = [m.subject for m in mail.outbox]
   self.assertTrue(check_subjects([]))
예제 #6
0
 def test_repeat_events(self):
     Event.objects.filter(name="monkey").delete()
     e = Event.objects.create(name="monkey", repeat="month-number")
     eo = EventOccurrence.objects.create(start=self.tomorrow,
                                         end_time=self.in_an_hour,
                                         event=e)
     self.call_command("repeat_events")
     self.assertEqual(e.eventoccurrence_set.count(), 5)
     subjects = [m.subject for m in mail.outbox]
     self.assertTrue(check_subjects([]))
예제 #7
0
    def test_course(self):
        #make sure students and instructors get an email
        i_email = '*****@*****.**'
        s_email = '*****@*****.**'
        s2_email = '*****@*****.**'
        User = get_user_model()
        User.objects.filter(email__in=[i_email, s_email, s2_email]).delete()
        instructor, new = get_or_create_student(i_email, send_mail=False)
        instructor.is_staff = True
        instructor.save()

        self.session1.user = instructor
        self.session2.user = instructor
        self.session1.save()
        self.session2.save()

        # enroll student in 1 class
        student, new = get_or_create_student(s_email, send_mail=False)
        Enrollment.objects.create(user=student, session=self.session1)

        # enroll student2 in 2 classes
        student2, new = get_or_create_student(s2_email, send_mail=False)
        Enrollment.objects.create(user=student2, session=self.session1)
        Enrollment.objects.create(user=student2, session=self.session2)

        # send out reminders and check that they went out
        call_command("course_reminder")
        subjects = [
            u'Class tomorrow!', u'Class tomorrow!',
            u"You're teaching tomorrow at 1 p.m.",
            u"You're teaching tomorrow at 6 p.m."
        ]
        recipients = [[i_email], [i_email], [s2_email], [s_email]]
        self.assertTrue(check_subjects(subjects))
        self.assertTrue(check_recipients(recipients))

        # send out reminders again. Make sure none went out
        mail.outbox = []
        call_command("course_reminder")
        self.assertTrue(check_subjects([]))
        self.assertTrue(check_recipients([]))
예제 #8
0
  def test_course(self):
    #make sure students and instructors get an email
    i_email = '*****@*****.**'
    s_email = '*****@*****.**'
    s2_email = '*****@*****.**'
    User = get_user_model()
    User.objects.filter(email__in=[i_email,s_email,s2_email]).delete()
    instructor, new = get_or_create_student(i_email,send_mail=False)
    instructor.is_staff = True
    instructor.save()

    self.session1.user = instructor
    self.session2.user = instructor
    self.session1.save()
    self.session2.save()

    # enroll student in 1 class
    student, new = get_or_create_student(s_email,send_mail=False)
    Enrollment.objects.create(user=student,session=self.session1)

    # enroll student2 in 2 classes
    student2,new = get_or_create_student(s2_email,send_mail=False)
    Enrollment.objects.create(user=student2,session=self.session1)
    Enrollment.objects.create(user=student2,session=self.session2)

    # send out reminders and check that they went out
    call_command("course_reminder")
    subjects = [
      u'Class tomorrow!', u'Class tomorrow!',
      u"You're teaching tomorrow at 1 p.m.", u"You're teaching tomorrow at 6 p.m."
    ]
    recipients = [[i_email], [i_email], [s2_email], [s_email]]
    self.assertTrue(check_subjects(subjects))
    self.assertTrue(check_recipients(recipients))

    # send out reminders again. Make sure none went out
    mail.outbox = []
    call_command("course_reminder")
    self.assertTrue(check_subjects([]))
    self.assertTrue(check_recipients([]))
예제 #9
0
    def test_discount(self):
        email = "*****@*****.**"
        get_user_model().objects.filter(email=email).delete()
        user = get_user_model().objects.create(username="******",
                                               email=email)
        user.level = Level.objects.filter(discount_percentage=10)[0]
        user.save()
        params = get_course_query(session=self.session1,
                                  quantities=[1],
                                  payer_email=email)
        paypal_post(self, params)

        # The above generates an enrollment error because someone over paid
        self.assertTrue(check_subjects(["Course enrollment confirmation"]))
예제 #10
0
  def test_discount(self):
    from paypal.standard.ipn.models import PayPalIPN
    email = "*****@*****.**"
    get_user_model().objects.filter(email=email).delete()
    user = get_user_model().objects.create(
      username="******",
      email=email
    )
    user.level = Level.objects.filter(discount_percentage=10)[0]
    user.save()
    client = Client()

    #login user
    client.post(reverse('login'),{'username': email,'password': email})

    # create cart with cart_item
    invoice = add_to_cart(client,self.session1.sessionproduct,1)

    params = get_course_query(session=self.session1,quantities=[1],payer_email=email,invoice=invoice)
    print params['mc_gross']
    paypal_post(self,params)

    # The above generates an enrollment error because someone over paid
    self.assertTrue(check_subjects(["Course enrollment confirmation"]))