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)
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)
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()
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')
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([]))
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([]))
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([]))
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([]))
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"]))
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"]))