示例#1
0
 def test_active_user_can_see_pin(self):
     user = UserFactory()
     user.is_active = True
     user.save()
     self.client.login(username=user.email, password='******', follow=True)
     response = self.client.get(self.update_url)
     self.assertNotEqual(response.context_data['pin'], None)
示例#2
0
 def test_deactivated_user_has_None_pin(self):
     user = UserFactory()
     user.is_active = True
     user.save()
     self.assertNotEqual(user.pin, None)
     user.is_active = False
     user.save()
     self.assertEqual(user.pin, None)
示例#3
0
class BudgetPaymentTest(TransactionTestCase):
    def setUp(self):
        self.user = UserFactory(is_active=True)
        self.budget_url = factories.PaymentFactory.get_budget_payment_url()
        self.list_url = factories.ReservationFactory.get_reservation_list_url()

    def test_anonymous_user_cannot_access_budget_payment_page(self):
        response = self.client.get(self.budget_url)
        self.assertRedirects(response, UserFactory.get_login_url(next='/reservation/payment/budget/'))

    def test_user_cannot_access_budget_page_without_staged_payment(self):
        self.client.login(username=self.user.email, password='******')
        response = self.client.get(self.budget_url)
        self.assertEqual(response.status_code, client.FORBIDDEN)

    def test_user_can_access_budget_page_with_staged_payment(self):
        self.client.login(username=self.user.email, password='******')
        reservation = factories.ReservationFactory(user=self.user)
        payment = factories.PaymentFactory(user=self.user, type=models.Payment.STAGED)
        payment.reservation_set.add(reservation)

        response = self.client.get(self.budget_url)
        self.assertEqual(response.status_code, client.OK)

    def test_user_cannot_pay_with_budget_with_invalid_password(self):
        self.client.login(username=self.user.email, password='******')
        reservation = factories.ReservationFactory(user=self.user)
        payment = factories.PaymentFactory(user=self.user, type=models.Payment.STAGED)
        payment.reservation_set.add(reservation)

        response = self.client.post(self.budget_url, {'password': '******'})
        self.assertEqual(response.status_code, client.OK)

        staged_payment = models.Payment.objects.filter(user=self.user, type=models.Payment.BUDGET)
        self.assertFalse(staged_payment.exists())

    def test_user_cannot_pay_with_budget_with_not_enough_money(self):
        self.client.login(username=self.user.email, password='******')
        factories.ReservationFactory.create_batch(3, user=self.user)

        response = self.client.get(self.list_url)
        self.assertEqual(response.status_code, client.OK)

        response = self.client.post(self.budget_url, {'password': '******'})
        self.assertRedirects(response, '/reservation/list/')

    def test_user_can_pay_with_budget_with_enough_money(self):
        self.client.login(username=self.user.email, password='******')
        reservations = factories.ReservationFactory.create_batch(3, user=self.user)
        amount = sum(reservation.price for reservation in reservations)
        self.user.budget = amount
        self.user.save()

        response = self.client.get(self.list_url)
        self.assertEqual(response.status_code, client.OK)

        response = self.client.post(self.budget_url, {'password': '******'})
        self.assertRedirects(response, '/')
        self.assertEqual(user_models.User.objects.get(id=self.user.id).budget, 0)

        staged_payment = models.Payment.objects.filter(user=self.user, type=models.Payment.BUDGET)
        self.assertTrue(staged_payment.exists())
示例#4
0
 def test_active_user_has_pin(self):
     user = UserFactory()
     user.is_active = True
     user.save()
     self.assertNotEqual(user.pin, None)
示例#5
0
class BudgetPaymentTest(TransactionTestCase):
    def setUp(self):
        self.user = UserFactory(is_active=True)
        self.budget_url = factories.PaymentFactory.get_budget_payment_url()
        self.list_url = factories.ReservationFactory.get_reservation_list_url()

    def test_anonymous_user_cannot_access_budget_payment_page(self):
        response = self.client.get(self.budget_url)
        self.assertRedirects(
            response,
            UserFactory.get_login_url(next='/reservation/payment/budget/'))

    def test_user_cannot_access_budget_page_without_staged_payment(self):
        self.client.login(username=self.user.email, password='******')
        response = self.client.get(self.budget_url)
        self.assertEqual(response.status_code, client.FORBIDDEN)

    def test_user_can_access_budget_page_with_staged_payment(self):
        self.client.login(username=self.user.email, password='******')
        reservation = factories.ReservationFactory(user=self.user)
        payment = factories.PaymentFactory(user=self.user,
                                           type=models.Payment.STAGED)
        payment.reservation_set.add(reservation)

        response = self.client.get(self.budget_url)
        self.assertEqual(response.status_code, client.OK)

    def test_user_cannot_pay_with_budget_with_invalid_password(self):
        self.client.login(username=self.user.email, password='******')
        reservation = factories.ReservationFactory(user=self.user)
        payment = factories.PaymentFactory(user=self.user,
                                           type=models.Payment.STAGED)
        payment.reservation_set.add(reservation)

        response = self.client.post(self.budget_url, {'password': '******'})
        self.assertEqual(response.status_code, client.OK)

        staged_payment = models.Payment.objects.filter(
            user=self.user, type=models.Payment.BUDGET)
        self.assertFalse(staged_payment.exists())

    def test_user_cannot_pay_with_budget_with_not_enough_money(self):
        self.client.login(username=self.user.email, password='******')
        factories.ReservationFactory.create_batch(3, user=self.user)

        response = self.client.get(self.list_url)
        self.assertEqual(response.status_code, client.OK)

        response = self.client.post(self.budget_url, {'password': '******'})
        self.assertRedirects(response, '/reservation/list/')

    def test_user_can_pay_with_budget_with_enough_money(self):
        self.client.login(username=self.user.email, password='******')
        reservations = factories.ReservationFactory.create_batch(
            3, user=self.user)
        amount = sum(reservation.price for reservation in reservations)
        self.user.budget = amount
        self.user.save()

        response = self.client.get(self.list_url)
        self.assertEqual(response.status_code, client.OK)

        response = self.client.post(self.budget_url, {'password': '******'})
        self.assertRedirects(response, '/')
        self.assertEqual(
            user_models.User.objects.get(id=self.user.id).budget, 0)

        staged_payment = models.Payment.objects.filter(
            user=self.user, type=models.Payment.BUDGET)
        self.assertTrue(staged_payment.exists())