コード例 #1
0
    def test_dwolla_connect_creates_new_account(self, dwolla_accounts_full,
                                                dwolla_oauth_get):
        """
        A successful connection for a new account shouldn't change any
        accounts attached to the old account.

        """
        account = DwollaOrganizationAccountFactory()
        oauth_tokens = {
            'access_token': 'ACCESS_TOKEN',
            'expires_in': 1234,
            'refresh_token': 'REFRESH_TOKEN',
            'refresh_expires_in': 1234,
            'scope': 'realscopereally',
        }
        account_info = {'Id': '123-345-567'}
        self.assertNotEqual(account.user_id, account_info['Id'])
        dwolla_oauth_get.return_value = oauth_tokens
        dwolla_accounts_full.return_value = account_info
        org1 = OrganizationFactory(dwolla_test_account=account)
        org2 = OrganizationFactory(dwolla_test_account=account)

        code = 'hahaha'
        next_url = "/hello/"
        api = 'test'
        view = DwollaConnectView()
        view.request = self.factory.get(
            '/', {
                'code': 'hahaha',
                'type': org1._meta.model_name,
                'id': org1.pk,
                'next_url': next_url,
                'api': api,
            })
        SessionMiddleware().process_request(view.request)
        MessageMiddleware().process_request(view.request)

        response = view.get(view.request)
        self.assertEqual(response.status_code, 302)
        redirect_url = dwolla_redirect_url(
            org1, api, view.request, next_url=view.request.GET.get('next_url'))
        dwolla_oauth_get.assert_called_once_with(code, redirect=redirect_url)
        dwolla_accounts_full.assert_called_once_with(
            oauth_tokens['access_token'])

        org1 = Organization.objects.get(pk=org1.pk)
        org2 = Organization.objects.get(pk=org2.pk)
        self.assertNotEqual(org2.dwolla_test_account.access_token,
                            oauth_tokens['access_token'])
        self.assertNotEqual(org2.dwolla_test_account, org1.dwolla_test_account)
        self.assertEqual(org1.dwolla_test_account.access_token,
                         oauth_tokens['access_token'])
        self.assertEqual(org1.dwolla_test_account.scopes,
                         oauth_tokens['scope'])
コード例 #2
0
    def test_comped__sends_email(self):
        """A successful completion with fully-comped items should send a receipt email and an alert email."""
        organization = OrganizationFactory()
        owner = PersonFactory()
        OrganizationMember.objects.create(
            person=owner,
            organization=organization,
            role=OrganizationMember.OWNER,
        )
        event = EventFactory(
            collect_housing_data=False,
            organization=organization,
        )
        order = OrderFactory(event=event)
        item = ItemFactory(event=event)
        item_option = ItemOptionFactory(price=100, item=item)
        discount = DiscountFactory(amount=100,
                                   discount_type='percent',
                                   event=event,
                                   item_options=[item_option])

        order.add_to_cart(item_option)
        order.add_to_cart(item_option)
        order.add_discount(discount)

        view = SummaryView()
        view.request = self.factory.post('/')
        view.request.user = AnonymousUser()
        view.event = event
        view.order = order

        self.assertEqual(len(mail.outbox), 0)
        response = view.post(view.request)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(len(mail.outbox), 2)
コード例 #3
0
    def test_payment__sends_email(self):
        """A successful payment should send a receipt email and an alert email."""
        organization = OrganizationFactory(check_payment_allowed=True)
        owner = PersonFactory()
        OrganizationMember.objects.create(
            person=owner,
            organization=organization,
            role=OrganizationMember.OWNER,
        )
        event = EventFactory(
            collect_housing_data=False,
            organization=organization,
            check_postmark_cutoff=timezone.now().date(),
        )
        order = OrderFactory(event=event)
        item = ItemFactory(event=event)
        item_option = ItemOptionFactory(price=100, item=item)

        order.add_to_cart(item_option)
        order.add_to_cart(item_option)

        view = SummaryView()
        view.request = self.factory.post('/', {'check': 1})
        view.request.user = AnonymousUser()
        view.event = event
        view.order = order

        self.assertEqual(len(mail.outbox), 0)
        response = view.post(view.request)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(len(mail.outbox), 2)
コード例 #4
0
ファイル: test_daily_digest.py プロジェクト: kahihia/django
    def test_full_send_and_timestamp(self):
        owner = PersonFactory(notify_new_purchases=Person.NOTIFY_DAILY)
        editor = PersonFactory(notify_new_purchases=Person.NOTIFY_DAILY)
        organization = OrganizationFactory()
        OrganizationMember.objects.create(
            person=owner,
            organization=organization,
            role=OrganizationMember.OWNER,
        )
        OrganizationMember.objects.create(
            person=editor,
            organization=organization,
            role=OrganizationMember.EDIT,
        )
        event = EventFactory(organization=organization)
        TransactionFactory(event=event, transaction_type=Transaction.PURCHASE)
        self.assertEqual(len(mail.outbox), 0)
        self.command.handle()
        self.assertEqual(len(mail.outbox), 2)

        self.assertEqual(mail.outbox[0].subject,
                         '[Dancerfly] New purchases for your events!')
        self.assertIn(event.name, mail.outbox[0].body)
        self.assertIn(event.name, mail.outbox[0].alternatives[0][0])
        self.assertEqual(mail.outbox[1].subject,
                         '[Dancerfly] New purchases for your events!')
        self.assertIn(event.name, mail.outbox[1].body)
        self.assertIn(event.name, mail.outbox[1].alternatives[0][0])

        owner = Person.objects.get(pk=owner.pk)
        self.assertIsNotNone(owner.last_new_purchases_digest_sent)
        editor = Person.objects.get(pk=editor.pk)
        self.assertIsNotNone(editor.last_new_purchases_digest_sent)
コード例 #5
0
ファイル: test_invites.py プロジェクト: kahihia/django
 def test_clean_invite_attendees__invalid(self):
     expected = ['*****@*****.**', 'test@democom']
     data = ','.join(expected)
     org = OrganizationFactory()
     form = EventRegistrationForm(None, org)
     form.cleaned_data = {'invite_attendees': data}
     with self.assertRaises(ValidationError):
         form.clean_invite_attendees()
コード例 #6
0
ファイル: test_invites.py プロジェクト: kahihia/django
 def test_clean_invite_attendees__strip_whitespace(self):
     expected = ['*****@*****.**', '*****@*****.**']
     data = ', '.join(expected)
     org = OrganizationFactory()
     form = EventRegistrationForm(None, org)
     form.cleaned_data = {'invite_attendees': data}
     cleaned = form.clean_invite_attendees()
     self.assertEqual(cleaned, expected)
コード例 #7
0
    def set_up_view(self, orderer=None, is_confirmed=False):
        organization = OrganizationFactory(check_payment_allowed=True)
        OrganizationMember.objects.create(
            person=PersonFactory(),
            organization=organization,
            role=OrganizationMember.OWNER,
        )
        event = EventFactory(
            collect_housing_data=False,
            organization=organization,
            check_postmark_cutoff=timezone.now().date() + timedelta(1),
        )
        item = ItemFactory(event=event)
        item_option = ItemOptionFactory(price=100, item=item)

        receiver = PersonFactory()
        order_kwargs = dict(event=event)
        if orderer:
            order_kwargs['person'] = orderer
        order = OrderFactory(**order_kwargs)
        order.add_to_cart(item_option)
        transaction = TransactionFactory(event=event,
                                         order=order,
                                         is_confirmed=is_confirmed)
        order.mark_cart_paid(transaction)

        # The BoughtItem should be in the correct state if we've set up this
        # test Order correctly.
        self.assertEqual(order.bought_items.first().status, BoughtItem.BOUGHT)

        view = TransferView()
        view.kwargs = dict(
            event_slug=event.slug,
            organization_slug=organization.slug,
        )
        view.request = self.factory.post(
            '/',
            dict(
                bought_item=order.bought_items.first().pk,
                email=receiver.email,
            ))
        view.request.user = orderer if orderer else AnonymousUser()
        view.event = event
        view.order = order
        view.workflow = RegistrationWorkflow(order=order, event=event)
        view.current_step = view.workflow.steps.get(view.current_step_slug)
        return view
コード例 #8
0
ファイル: test_invites.py プロジェクト: kahihia/django
 def test_subject__organization_view_apostrophe(self):
     event = EventFactory(organization=OrganizationFactory(
         name="Conan's Show"))
     request = self.factory.get('/')
     request.user = PersonFactory(first_name="Conan", last_name="O'Brien")
     invite, created = OrganizationViewInvite.get_or_create(
         request=request,
         email='*****@*****.**',
         content=event.organization,
     )
     self.assertEqual(len(mail.outbox), 0)
     invite.send()
     self.assertEqual(len(mail.outbox), 1)
     self.assertEqual(
         mail.outbox[0].subject,
         "{} has invited you to help manage {}".format(
             request.user.get_full_name(), event.organization.name))
コード例 #9
0
ファイル: test_daily_digest.py プロジェクト: kahihia/django
 def test_send_digest__owner__transactions_older_than_one_day(self):
     owner = PersonFactory(notify_new_purchases=Person.NOTIFY_DAILY)
     organization = OrganizationFactory()
     OrganizationMember.objects.create(
         person=owner,
         organization=organization,
         role=OrganizationMember.OWNER,
     )
     event = EventFactory(organization=organization)
     TransactionFactory(
         event=event,
         transaction_type=Transaction.PURCHASE,
         timestamp=timezone.now() - timedelta(days=2),
     )
     self.assertEqual(len(mail.outbox), 0)
     self.command.send_digest(owner)
     self.assertEqual(len(mail.outbox), 0)
コード例 #10
0
ファイル: test_daily_digest.py プロジェクト: kahihia/django
 def test_send_digest__owner__no_transactions(self):
     owner = PersonFactory(notify_new_purchases=Person.NOTIFY_DAILY)
     organization = OrganizationFactory()
     OrganizationMember.objects.create(
         person=owner,
         organization=organization,
         role=OrganizationMember.OWNER,
     )
     event = EventFactory(organization=organization)
     TransactionFactory(event=event, transaction_type=Transaction.PURCHASE)
     self.assertEqual(len(mail.outbox), 0)
     self.command.send_digest(owner)
     self.assertEqual(len(mail.outbox), 1)
     self.assertEqual(mail.outbox[0].subject,
                      '[Dancerfly] New purchases for your events!')
     self.assertIn(event.name, mail.outbox[0].body)
     self.assertIn(event.name, mail.outbox[0].alternatives[0][0])
コード例 #11
0
    def setUp(self):
        self.factory = RequestFactory()
        self.organization = OrganizationFactory()
        self.owner = PersonFactory()
        self.owner_member = OrganizationMember.objects.create(
            organization=self.organization,
            person=self.owner,
            role=OrganizationMember.OWNER,
        )
        self.editor = PersonFactory()
        self.editor_member = OrganizationMember.objects.create(
            organization=self.organization,
            person=self.editor,
            role=OrganizationMember.EDIT,
        )
        self.request = self.factory.get('/')
        self.request.user = self.owner
        SessionMiddleware().process_request(self.request)
        MessageMiddleware().process_request(self.request)

        self.view = OrganizationRemoveMemberView()
コード例 #12
0
ファイル: test_daily_digest.py プロジェクト: kahihia/django
 def test_full_send_handles_errors(self, send_digest):
     send_digest.side_effect = Exception
     self.command.stderr = MagicMock()
     owner = PersonFactory(notify_new_purchases=Person.NOTIFY_DAILY)
     editor = PersonFactory(notify_new_purchases=Person.NOTIFY_DAILY)
     organization = OrganizationFactory()
     OrganizationMember.objects.create(
         person=owner,
         organization=organization,
         role=OrganizationMember.OWNER,
     )
     OrganizationMember.objects.create(
         person=editor,
         organization=organization,
         role=OrganizationMember.EDIT,
     )
     event = EventFactory(organization=organization)
     TransactionFactory(event=event, transaction_type=Transaction.PURCHASE)
     self.assertEqual(len(mail.outbox), 0)
     self.command.handle()
     # stderr.write called four times: message & traceback per error.
     self.assertEqual(self.command.stderr.write.call_count, 4)
     self.assertEqual(len(mail.outbox), 0)
コード例 #13
0
 def _get_fake_content(self):
     return OrganizationFactory.build()
コード例 #14
0
 def _get_fake_content(self):
     return OrganizationFactory.build()