def test_provider_redirects_on_success_preauth_payment(
            self, mocked_request, mocked_redirect):
        provider = CyberSourceProvider(
            merchant_id=MERCHANT_ID, password=PASSWORD, org_id=ORG_ID,
            capture=False)
        transaction_id = 1234
        xid = 'abc'
        self.payment.attrs.xid = xid

        response = MagicMock()
        response.requestID = transaction_id
        response.reasonCode = ACCEPTED
        mocked_request.return_value = response

        request = MagicMock()
        request.POST = {'MD': xid}
        request.GET = {'token': signing.dumps({
            'expiration': {'year': 2020, 'month': 9},
            'name': 'John Doe',
            'number': '371449635398431',
            'cvv2': '123'
        })}
        provider.process_data(self.payment, request)
        self.assertEqual(self.payment.status, 'preauth')
        self.assertEqual(self.payment.captured_amount, 0)
        self.assertEqual(self.payment.transaction_id, transaction_id)
Example #2
0
    def test_provider_redirects_on_success_preauth_payment(
            self, mocked_request, mocked_redirect):
        provider = CyberSourceProvider(merchant_id=MERCHANT_ID,
                                       password=PASSWORD,
                                       org_id=ORG_ID,
                                       capture=False)
        transaction_id = 1234
        xid = 'abc'
        self.payment.attrs.xid = xid

        response = MagicMock()
        response.requestID = transaction_id
        response.reasonCode = ACCEPTED
        mocked_request.return_value = response

        request = MagicMock()
        request.POST = {'MD': xid}
        request.GET = {
            'token':
            signing.dumps({
                'expiration': {
                    'year': 2020,
                    'month': 9
                },
                'name': 'John Doe',
                'number': '371449635398431',
                'cvv2': '123'
            })
        }
        provider.process_data(self.payment, request)
        self.assertEqual(self.payment.status, PaymentStatus.PREAUTH)
        self.assertEqual(self.payment.captured_amount, 0)
        self.assertEqual(self.payment.transaction_id, transaction_id)
Example #3
0
    def test_provider_redirects_on_success_preauth_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type': 'test_token_type',
            'access_token': 'test_access_token',
            'payer': {'payer_info': 'test123'},
            'transactions': [
                {'related_resources': [{
                    'sale': {'links': ''},
                    'authorization': {'links': ''}}]}
            ]}
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        provider = PaypalProvider(
            secret=SECRET, client_id=CLIENT_ID, capture=False)
        provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, PaymentStatus.PREAUTH)
        self.assertEqual(self.payment.captured_amount, Decimal('0'))
Example #4
0
    def test_provider_redirects_on_failure(self, mocked_request,
                                           mocked_redirect):
        transaction_id = 1234
        xid = 'abc'
        self.payment.attrs.xid = xid

        response = MagicMock()
        response.requestID = transaction_id
        response.reasonCode = 'test code'
        mocked_request.return_value = response

        request = MagicMock()
        request.POST = {'MD': xid}
        request.GET = {
            'token':
            signing.dumps({
                'expiration': {
                    'year': 2020,
                    'month': 9
                },
                'name': 'John Doe',
                'number': '371449635398431',
                'cvv2': '123'
            })
        }
        self.provider.process_data(self.payment, request)
        self.assertEqual(self.payment.status, PaymentStatus.ERROR)
        self.assertEqual(self.payment.captured_amount, 0)
        self.assertEqual(self.payment.transaction_id, transaction_id)
    def test_provider_redirects_on_success_preauth_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type': 'test_token_type',
            'access_token': 'test_access_token',
            'payer': {'payer_info': 'test123'},
            'transactions': [
                {'related_resources': [{
                    'sale': {'links': ''},
                    'authorization': {'links': ''}}]}
            ]}
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        provider = PaypalProvider(
            secret=SECRET, client_id=CLIENT_ID, capture=False)
        provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, 'preauth')
        self.assertEqual(self.payment.captured_amount, Decimal('0'))
Example #6
0
    def test_provider_redirects_on_success_captured_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type':
            'test_token_type',
            'access_token':
            'test_access_token',
            'payer': {
                'payer_info': 'test123'
            },
            'transactions': [{
                'related_resources': [{
                    'sale': {
                        'links': ''
                    },
                    'authorization': {
                        'links': ''
                    }
                }]
            }]
        }
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        self.provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
        self.assertEqual(self.payment.captured_amount, self.payment.total)
 def test_process_data_returns_200_on_http_post_request(self):
     request = MagicMock()
     request.GET = {}
     response = self.provider.process_data(self.payment, request)
     self.assertTrue(isinstance(response, HttpResponse))
     self.assertEqual(response.status_code, 200)
     self.assertEqual(self.payment.captured_amount, Decimal('0'))
     self.assertEqual(self.payment.status, PaymentStatus.WAITING)
Example #8
0
 def test_incorrect_process_data(self):
     """GpwebpayProvider.process_data() checks GET signature"""
     self.assertEqual(self.payment3.status, PaymentStatus.WAITING)
     request = MagicMock()
     request.GET = get_getdata_with_sha1(self.signature, self.payment3)
     request.GET['DIGEST'] = 'INVALID'
     provider = GpwebpayProvider(**GPWEBPAY_CREDENTIALS)
     response = provider.process_data(self.payment3, request)
     self.assertEqual(type(response), HttpResponseForbidden)
Example #9
0
 def test_provider_redirects_on_failure(
         self, mocked_redirect, mocked_post, mocked_parser):
     transaction_id = '1234'
     request = MagicMock()
     request.GET = {'trans': transaction_id}
     mocked_parser.return_value = {}
     self.provider.process_data(self.payment, request)
     self.assertEqual(self.payment.status, 'rejected')
     self.assertEqual(self.payment.captured_amount, 0)
     self.assertEqual(self.payment.transaction_id, transaction_id)
Example #10
0
 def test_provider_redirects_on_failure(
         self, mocked_redirect, mocked_post, mocked_parser):
     transaction_id = '1234'
     request = MagicMock()
     request.GET = {'trans': transaction_id}
     mocked_parser.return_value = {}
     self.provider.process_data(self.payment, request)
     self.assertEqual(self.payment.status, PaymentStatus.REJECTED)
     self.assertEqual(self.payment.captured_amount, 0)
     self.assertEqual(self.payment.transaction_id, transaction_id)
Example #11
0
 def request(self, lti_launch={"custom_canvas_api_domain": TEST_DOMAIN},
             get_params={}):
     request = MagicMock()
     session = {"oauth_return_uri": self.TEST_DOMAIN}
     if lti_launch:
         session["LTI_LAUNCH"] = lti_launch
     request.session = session
     request.GET = get_params
     request.user.oauthtoken.updated_on = TEST_TIME
     return request
Example #12
0
    def mock_request(self, request_group):
        """Build a mock request (for self.s_admin).

        Args:
            request_group: The group that the user is requesting access to.
        """
        request = MagicMock()
        request.resolver_match.kwargs = {}
        request.GET = {}
        request.GET['group'] = request_group
        return request
Example #13
0
    def test_phone_number_that_has_the_COUNTRY_PHONE_CODE_finds_the_investigator_unit(self, mock_investigator_not_registered):
        mobile_number = '123'+COUNTRY_PHONE_CODE+'456'
        Interviewer.objects.create(name='Inv1', ea=self.ea, mobile_number=mobile_number, backend=self.backend)
        self.ussd_params['msisdn']= COUNTRY_PHONE_CODE + mobile_number

        request = MagicMock()
        request.GET = self.ussd_params

        ussd(request)

        self.assertFalse(mock_investigator_not_registered.called)
Example #14
0
 def test_process_data_payment_accepted(self):
     """GpwebpayProvider.process_data() returns a correct HTTP response"""
     self.assertEqual(self.payment.status, PaymentStatus.WAITING)
     request = MagicMock()
     request.GET = get_getdata_with_sha1(self.signature,
                                         self.payment,
                                         OPERATION='CREATE_ORDER')
     provider = GpwebpayProvider(**GPWEBPAY_CREDENTIALS)
     response = provider.process_data(self.payment, request)
     self.assertEqual(type(response), HttpResponse)
     self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
Example #15
0
    def mock_request(self, request_group):
        """Build a mock request (for self.s_admin).

        Args:
            request_group: The group that the user is requesting access to.
        """
        request = MagicMock()
        request.resolver_match.kwargs = {}
        request.GET = {}
        request.GET['group'] = request_group
        return request
Example #16
0
 def test_process_data_payment_rejected(self):
     """GpwebpayProvider.process_data() returns a correct HTTP response"""
     self.assertEqual(self.payment2.status, PaymentStatus.WAITING)
     request = MagicMock()
     request.GET = get_getdata_with_sha1(
         self.signature,
         self.payment2,
         PRCODE='5'  # Missing required field
     )
     provider = GpwebpayProvider(**GPWEBPAY_CREDENTIALS)
     response = provider.process_data(self.payment2, request)
     self.assertEqual(type(response), HttpResponse)
     self.assertEqual(self.payment2.status, PaymentStatus.REJECTED)
Example #17
0
 def _build_mock_request(self, user=None, get=None, post=None):
     request = MagicMock()
     if user:
         request.user = user
         request.user.is_authenticated = MagicMock(return_value=True)
     else:
         request.user = AnonymousUser()
     request.GET = {}
     request.POST = {}
     request.resolver_match.kwargs = {}
     if get is not None:
         request.GET.update(get)
     if post is not None:
         request.POST.update(post)
     return request
Example #18
0
    def test_phone_number_that_has_the_COUNTRY_PHONE_CODE_finds_the_investigator_unit(
            self, mock_investigator_not_registered):
        mobile_number = '123' + COUNTRY_PHONE_CODE + '456'
        Investigator.objects.create(name='Inv1',
                                    ea=self.ea,
                                    mobile_number=mobile_number,
                                    backend=self.backend)
        self.ussd_params['msisdn'] = COUNTRY_PHONE_CODE + mobile_number

        request = MagicMock()
        request.GET = self.ussd_params

        ussd(request)

        self.assertFalse(mock_investigator_not_registered.called)
 def test_process_data_handles_payment_info(self, mocked_get_payment):
     request = MagicMock()
     request.GET = {'data.id': '123456', 'type': 'payment'}
     mocked_get_payment.return_value = {
         'status': 200,
         'response': {
             'status': 'approved'
         }
     }
     response = self.provider.process_data(self.payment, request)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(self.payment.captured_amount, self.payment.total)
     self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
     self.assertEqual(self.payment.transaction_id, '123456')
     self.assertEqual(self.payment.extra_data,
                      json.dumps(mocked_get_payment.return_value))
Example #20
0
 def test_provider_redirects_on_success(
         self, mocked_redirect, mocked_post, mocked_parser):
     transaction_id = '1234'
     request = MagicMock()
     request.GET = {'trans': transaction_id}
     mocked_parser.return_value = {
         'transactions': {
             'transaction_details': {
                 'status': 'ok',
                 'sender': {
                     'holder': 'John Doe',
                     'country_code': 'EN'}}}}
     self.provider.process_data(self.payment, request)
     self.assertEqual(self.payment.status, PaymentStatus.CONFIRMED)
     self.assertEqual(self.payment.captured_amount, self.payment.total)
     self.assertEqual(self.payment.transaction_id, transaction_id)
Example #21
0
 def test_provider_redirects_on_success(
         self, mocked_redirect, mocked_post, mocked_parser):
     transaction_id = '1234'
     request = MagicMock()
     request.GET = {'trans': transaction_id}
     mocked_parser.return_value = {
         'transactions': {
             'transaction_details': {
                 'status': 'ok',
                 'sender': {
                     'holder': 'John Doe',
                     'country_code': 'EN'}}}}
     self.provider.process_data(self.payment, request)
     self.assertEqual(self.payment.status, 'confirmed')
     self.assertEqual(self.payment.captured_amount, self.payment.total)
     self.assertEqual(self.payment.transaction_id, transaction_id)
Example #22
0
    def test_oauth(self):
        # Test GET to ensure a provider name is returned for dynamically naming oauth login.
        oauth_name = "provider"
        client_id = "name"
        redirect_uri = "http://test.dev/callback"
        response_type = "code"
        scope = "profile"
        authorization_url = "http://remote.dev/authorize"
        referer = "/status/12345"

        with self.settings(OAUTH_NAME=oauth_name):
            response = self.client.get(reverse('oauth'),{'query':'name'})
            return_name = response.json().get('name')
            self.assertEqual(return_name, oauth_name)
            self.assertEqual(response.status_code, 200)

        # Test post to ensure that a valid redirect is returned.
        with self.settings(OAUTH_CLIENT_ID=client_id,
                           OAUTH_REDIRECT_URI=redirect_uri,
                           OAUTH_RESPONSE_TYPE=response_type,
                           OAUTH_SCOPE=scope,
                           OAUTH_NAME=oauth_name):
            response = self.client.post(reverse('oauth'))
            params = urllib.parse.urlencode((
                ('client_id', client_id),
                ('redirect_uri', redirect_uri),
                ('response_type', response_type),
                ('scope', scope)
            ))
            self.assertRedirects(response, '{url}?{params}'.format(url=authorization_url.rstrip('/'),
                                                                  params=params),
                                 fetch_redirect_response=False)

            mock_request = MagicMock()
            mock_request.META = {'HTTP_REFERER': referer}
            mock_request.GET = {'query': None}
            response = oauth(mock_request)
            params = urllib.parse.urlencode((
                ('client_id', client_id),
                ('redirect_uri', redirect_uri),
                ('response_type', response_type),
                ('scope', scope),
                ('state', base64.b64encode(referer.encode()))
            ))
            self.assertRedirects(response, '{url}?{params}'.format(url=authorization_url.rstrip('/'),
                                                                   params=params),
                                 fetch_redirect_response=False)
 def test_process_data_handles_no_payment_post_requests(
         self, mocked_get_payment):
     request = MagicMock()
     request.GET = {
         'another_post_request': 'no_data',
         'another_data': 'other_data'
     }
     mocked_get_payment.return_value = {
         'status': 200,
         'response': {
             'status': 'approved'
         }
     }
     response = self.provider.process_data(self.payment, request)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(self.payment.captured_amount, Decimal('0'))
     self.assertEqual(self.payment.status, PaymentStatus.WAITING)
Example #24
0
    def test_oauth(self):
        # Test GET to ensure a provider name is returned for dynamically naming oauth login.
        oauth_name = "provider"
        client_id = "name"
        redirect_uri = "http://test.dev/callback"
        response_type = "code"
        scope = "profile"
        authorization_url = "http://remote.dev/authorize"
        referer = "/status/12345"

        with self.settings(OAUTH_NAME=oauth_name):
            response = self.client.get(reverse('oauth'), {'query': 'name'})
            return_name = response.json().get('name')
            self.assertEqual(return_name, oauth_name)
            self.assertEqual(response.status_code, 200)

        # Test post to ensure that a valid redirect is returned.
        with self.settings(OAUTH_CLIENT_ID=client_id,
                           OAUTH_REDIRECT_URI=redirect_uri,
                           OAUTH_RESPONSE_TYPE=response_type,
                           OAUTH_SCOPE=scope,
                           OAUTH_NAME=oauth_name):
            response = self.client.post(reverse('oauth'))
            params = urllib.parse.urlencode(
                (('client_id', client_id), ('redirect_uri', redirect_uri),
                 ('response_type', response_type), ('scope', scope)))
            self.assertRedirects(response,
                                 '{url}?{params}'.format(
                                     url=authorization_url.rstrip('/'),
                                     params=params),
                                 fetch_redirect_response=False)

            mock_request = MagicMock()
            mock_request.META = {'HTTP_REFERER': referer}
            mock_request.GET = {'query': None}
            response = oauth(mock_request)
            params = urllib.parse.urlencode(
                (('client_id', client_id), ('redirect_uri', redirect_uri),
                 ('response_type', response_type), ('scope', scope),
                 ('state', base64.b64encode(referer.encode()))))
            self.assertRedirects(response,
                                 '{url}?{params}'.format(
                                     url=authorization_url.rstrip('/'),
                                     params=params),
                                 fetch_redirect_response=False)
Example #25
0
def test_jsonp_returns_with_callback():
    f = MagicMock()
    f.__name__ = 'Wrapped View'

    # Setup the mock request
    request = MagicMock()
    request.GET = dict(callback='init')

    # Setup the mock response.
    json = {"id": 1, "status": 200}
    response = MagicMock(content=json, status_code=200)

    f.return_value = response
    decorated_f = jsonp(f)

    result = decorated_f(request)

    expected = 'init({0})'.format(json)
    assert expected == result.content
Example #26
0
 def _build_mock_request(self, user=None, get=None, post=None):
     request = MagicMock()
     if user:
         request.user = user
         if django.VERSION[:2] >= (1, 10):
             # Django 1.10 made `User.is_authenticated` into a property for
             # some reason.
             request.user.is_authenticated.__get__ = MagicMock(return_value=True)  # nopep8
         else:
             request.user.is_authenticated = MagicMock(return_value=True)
     else:
         request.user = AnonymousUser()
     request.GET = {}
     request.POST = {}
     request.resolver_match.kwargs = {}
     if get is not None:
         request.GET.update(get)
     if post is not None:
         request.POST.update(post)
     return request
Example #27
0
def test_jsonp_request_does_not_have_callback():
    """Test the outcome when the input request does not contain a
    callback.
    """
    f = MagicMock()
    f.__name__ = 'Wrapped View'

    request = MagicMock()
    # No query strings are added.
    request.GET = dict()

    json = {"id": 1, "status": 200}
    response = MagicMock(content=json, status_code=200)

    f.return_value = response
    decorated_f = jsonp(f)

    result = decorated_f(request)
    # Here we assert the the content was not altered
    # since we did not provide a callback.
    assert json == result.content
Example #28
0
 def _build_mock_request(self, user=None, get=None, post=None):
     request = MagicMock()
     if user:
         request.user = user
         if django.VERSION[:2] >= (1, 10):
             # Django 1.10 made `User.is_authenticated` into a property for
             # some reason.
             request.user.is_authenticated.__get__ = MagicMock(
                 return_value=True)  # nopep8
         else:
             request.user.is_authenticated = MagicMock(return_value=True)
     else:
         request.user = AnonymousUser()
     request.GET = {}
     request.POST = {}
     request.resolver_match.kwargs = {}
     if get is not None:
         request.GET.update(get)
     if post is not None:
         request.POST.update(post)
     return request
Example #29
0
    def test_search_view(self, mock_all, mock_pub, mock_files, mock_cms):
        self.assertTrue(True)

        mock_request = MagicMock()
        mock_request.GET = {
            'query_string': 'test_query',
        }
        mock_all.return_value.execute.return_value.hits.total = 0
        mock_all.return_value.count.return_value = 0
        mock_pub.return_value.count.return_value = 0
        mock_files.return_value.count.return_value = 0
        mock_cms.return_value.count.return_value = 0

        res = SearchView().get(mock_request)
        res_dict = json.loads(res.content)

        self.assertEqual(res_dict['all_total'], 0)
        self.assertEqual(res_dict['total_hits'], 0)
        self.assertEqual(res_dict['public_files_total'], 0)
        self.assertEqual(res_dict['published_total'], 0)
        self.assertEqual(res_dict['cms_total'], 0)

        print json.loads(res.content)['all_total']
    def test_provider_redirects_on_success_captured_payment(
            self, mocked_redirect, mocked_post):
        data = MagicMock()
        data.return_value = {
            'token_type': 'test_token_type',
            'access_token': 'test_access_token',
            'payer': {'payer_info': 'test123'},
            'transactions': [
                {'related_resources': [{
                    'sale': {'links': ''},
                    'authorization': {'links': ''}}]}
            ]}
        post = MagicMock()
        post.json = data
        post.status_code = 200
        mocked_post.return_value = post

        request = MagicMock()
        request.GET = {'token': 'test', 'PayerID': '1234'}
        self.provider.process_data(self.payment, request)

        self.assertEqual(self.payment.status, 'confirmed')
        self.assertEqual(self.payment.captured_amount, self.payment.total)
    def test_provider_redirects_on_failure(
            self, mocked_request, mocked_redirect):
        transaction_id = 1234
        xid = 'abc'
        self.payment.attrs.xid = xid

        response = MagicMock()
        response.requestID = transaction_id
        response.reasonCode = 'test code'
        mocked_request.return_value = response

        request = MagicMock()
        request.POST = {'MD': xid}
        request.GET = {'token': signing.dumps({
            'expiration': {'year': 2020, 'month': 9},
            'name': 'John Doe',
            'number': '371449635398431',
            'cvv2': '123'
        })}
        self.provider.process_data(self.payment, request)
        self.assertEqual(self.payment.status, 'error')
        self.assertEqual(self.payment.captured_amount, 0)
        self.assertEqual(self.payment.transaction_id, transaction_id)
Example #32
0
    def _build_mock_request(self, user=None, get=None, post=None):
        request = MagicMock()
        if user:
            request.user = user
            if django.VERSION[0] == 1:
                request.user.is_authenticated.__get__ = MagicMock(
                    return_value=True)
            elif django.VERSION[0] >= 2:
                request.user.__dict__['is_authenticated'] = True
        else:
            request.user = AnonymousUser()

        csrf = _salt_cipher_secret(_get_new_csrf_string())
        request.GET = {}
        request.POST = {}
        request.META = {"SCRIPT_NAME": "/"}
        request.COOKIES = {settings.CSRF_COOKIE_NAME: csrf}
        request.resolver_match.kwargs = {}
        if get is not None:
            request.GET.update(get)
        if post is not None:
            request.POST.update(post)
        return request
 def test_provider_request_without_payerid_redirects_on_failure(
         self, mocked_redirect):
     request = MagicMock()
     request.GET = {'token': 'test', 'PayerID': None}
     self.provider.process_data(self.payment, request)
     self.assertEqual(self.payment.status, 'rejected')
Example #34
0
 def test_provider_request_without_payerid_redirects_on_failure(
         self, mocked_redirect):
     request = MagicMock()
     request.GET = {'token': 'test', 'PayerID': None}
     self.provider.process_data(self.payment, request)
     self.assertEqual(self.payment.status, PaymentStatus.REJECTED)