コード例 #1
0
ファイル: test_waivers.py プロジェクト: DavidCain/mitoc-trips
    def test_initiate_waiver_from_name_email(self):
        with mock.patch.object(requests, 'post') as requests_post:
            result = waivers.initiate_waiver(
                participant=None,
                releasor=waivers.Person(name='Tim Beaver', email='*****@*****.**'),
                guardian=None,
            )
        requests_post.assert_called_once()
        kwargs = requests_post.call_args[1]
        self.assertEqual(
            kwargs['json'],
            {
                'status': 'sent',
                'templateId': self.mocked_settings.DOCUSIGN_WAIVER_TEMPLATE_ID,
                'templateRoles': [
                    {
                        'roleName': 'Releasor',
                        'name': 'Tim Beaver',
                        'email': '*****@*****.**',
                    },
                    {
                        'roleName': 'MITOC Desk',
                        'name': 'MITOC Desk',
                        'email': '*****@*****.**',
                    },
                ],
                'eventNotification': self.EXPECTED_EVENT_NOTIFICATION,
            },
        )

        self.assertEqual(
            result, waivers.InitiatedWaiverResult(email='*****@*****.**', url=None)
        )
コード例 #2
0
 def send_waiver(
     self,
     releasor: Optional[waivers.Person],
     guardian: Optional[waivers.Person],
 ):
     email, embedded_url = waivers.initiate_waiver(
         participant=self.request.participant,  # type:ignore
         releasor=releasor,
         guardian=guardian,
     )
     if not embedded_url:  # Will be sent by email
         messages.success(self.request, f"Waiver sent to {email}")
     return redirect(embedded_url or self.get_success_url())
コード例 #3
0
 def send_waiver(self, **kwargs):
     email, embedded_url = initiate_waiver(**kwargs)
     if not embedded_url:  # Will be sent by email
         messages.success(self.request, "Waiver sent to {}".format(email))
     return redirect(embedded_url or self.get_success_url())
コード例 #4
0
ファイル: membership.py プロジェクト: DavidCain/mitoc-trips
 def send_waiver(self, **kwargs):
     email, embedded_url = initiate_waiver(**kwargs)
     if not embedded_url:  # Will be sent by email
         messages.success(self.request, "Waiver sent to {}".format(email))
     return redirect(embedded_url or self.get_success_url())
コード例 #5
0
ファイル: test_waivers.py プロジェクト: DavidCain/mitoc-trips
 def test_must_provide_participant_or_releasor(self):
     """We need a name & and an email address somehow to complete a waiver."""
     with self.assertRaises(ValueError):
         waivers.initiate_waiver(participant=None, releasor=None, guardian=None)
コード例 #6
0
ファイル: test_waivers.py プロジェクト: DavidCain/mitoc-trips
    def test_guardian(self):
        participant = factories.ParticipantFactory.create(
            name='Tim Beaver', email='*****@*****.**'
        )

        with self._mock_posts() as requests_post:
            waivers.initiate_waiver(
                participant,
                # Specifying releasor is redundant, but allowed
                releasor=waivers.Person(name='Tim Beaver', email='*****@*****.**'),
                guardian=waivers.Person(
                    name='Timothy Beaver, Sr', email='*****@*****.**'
                ),
            )

        self.assertEqual(len(requests_post.call_args_list), 2)

        # The first call is to create a new waiver ("envelope")
        env_args, env_kwargs = requests_post.call_args_list[0]
        self.assertEqual(
            env_args,
            ('https://demo.docusign.net/restapi/v2/accounts/123456/envelopes',),
        )

        self.assertEqual(
            env_kwargs['json'],
            {
                'status': 'sent',
                'templateId': self.mocked_settings.DOCUSIGN_WAIVER_TEMPLATE_ID,
                'templateRoles': [
                    {
                        'roleName': 'Releasor',
                        'name': 'Tim Beaver',
                        'email': '*****@*****.**',
                        'clientUserId': participant.pk,
                        'tabs': waivers.prefilled_tabs(participant),  # Tested earlier
                    },
                    {
                        'roleName': 'Parent or Guardian',
                        'name': 'Timothy Beaver, Sr',
                        'email': '*****@*****.**',
                    },
                    {
                        'roleName': 'MITOC Desk',
                        'name': 'MITOC Desk',
                        'email': '*****@*****.**',
                    },
                ],
                'eventNotification': self.EXPECTED_EVENT_NOTIFICATION,
            },
        )

        # The second call is to get a URL for the waiver
        embedded_args, embedded_kwargs = requests_post.call_args_list[1]
        self.assertEqual(
            embedded_args,
            (
                'https://demo.docusign.net/restapi/v2/accounts/123456/envelopes/some-envelope-id/views/recipient',
            ),
        )

        # The participant must sign first, then the guardian can
        self.assertEqual(
            embedded_kwargs['json'],
            {
                'userName': '******',
                'email': '*****@*****.**',
                'clientUserId': participant.pk,
                'authenticationMethod': 'email',
                'returnUrl': 'https://mitoc-trips.mit.edu',
            },
        )
コード例 #7
0
ファイル: test_waivers.py プロジェクト: DavidCain/mitoc-trips
    def test_no_guardian(self):
        """When a participant submits the form, we start an embedded flow for them."""
        participant = factories.ParticipantFactory.create(
            name='Tim Beaver', email='*****@*****.**'
        )

        with self._mock_posts() as requests_post:
            waivers.initiate_waiver(participant, releasor=None, guardian=None)

        self.assertEqual(len(requests_post.call_args_list), 2)

        # The first call is to create a new waiver ("envelope")
        env_args, env_kwargs = requests_post.call_args_list[0]
        self.assertEqual(
            env_args,
            ('https://demo.docusign.net/restapi/v2/accounts/123456/envelopes',),
        )
        self.assertEqual(
            env_kwargs['headers'],
            {
                'Accept': 'application/json',
                'X-DocuSign-Authentication': self.expected_creds,
            },
        )

        self.assertEqual(
            env_kwargs['json'],
            {
                'status': 'sent',
                'templateId': self.mocked_settings.DOCUSIGN_WAIVER_TEMPLATE_ID,
                'templateRoles': [
                    {
                        'roleName': 'Releasor',
                        'name': 'Tim Beaver',
                        'email': '*****@*****.**',
                        'clientUserId': participant.pk,
                        'tabs': waivers.prefilled_tabs(participant),  # Tested earlier
                    },
                    {
                        'roleName': 'MITOC Desk',
                        'name': 'MITOC Desk',
                        'email': '*****@*****.**',
                    },
                ],
                'eventNotification': self.EXPECTED_EVENT_NOTIFICATION,
            },
        )

        # The second call is to get a URL for the waiver
        embedded_args, embedded_kwargs = requests_post.call_args_list[1]
        self.assertEqual(
            embedded_args,
            (
                'https://demo.docusign.net/restapi/v2/accounts/123456/envelopes/some-envelope-id/views/recipient',
            ),
        )

        self.assertEqual(
            embedded_kwargs['headers'],
            {
                'Accept': 'application/json',
                'X-DocuSign-Authentication': self.expected_creds,
            },
        )
        self.assertEqual(
            embedded_kwargs['json'],
            {
                'userName': '******',
                'email': '*****@*****.**',
                'clientUserId': participant.pk,
                'authenticationMethod': 'email',
                'returnUrl': 'https://mitoc-trips.mit.edu',
            },
        )