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)
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)
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'))
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'))
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)
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)
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)
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)
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
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
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)
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)
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)
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
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))
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)
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)
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)
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_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
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
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
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
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)
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')
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)