def test_verify_response_status_is_true(self, auth_mock, verify_mock): auth_json = { 'status': True, 'message': 'Authorization URL created', 'data': { 'authorization_url': 'https://checkout.paystack.com/9mzlnrn30akanzp', 'access_code': '9mzlnrn30akanzp', 'reference': 'yzlei4h480' } } verify_json = { "status": True, "message": "Verification successful", "data": { "amount": 27000, "currency": "NGN", "transaction_date": "2020-10-01T11:03:09.000Z", "status": "success", "reference": "yzlei4h480", "domain": "test", "metadata": 0, "gateway_response": "Successful", "message": None, "channel": "card" } } auth_mock.return_value.json.return_value = auth_json verify_mock.return_value.json.return_value = verify_json auth_response = authorize(self.passenger, 27000) reference = auth_response['data'].get("reference") verify_response = verify(self.passenger, reference) self.assertTrue(verify_response.get('status'))
def test_paystack_verification_response_keys(self): auth_response = authorize(self.passenger, 27000) auth_url = auth_response['data'].get('authorization_url') response = requests.get(auth_url) reference = auth_response['data'].get('reference') verify_response = verify(self.passenger, reference) verify_keys = verify_response.keys() with patch('main.paystack_api.requests.get') as verify_mock: verify_json = { "status": True, "message": "Verification successful", "data": { "amount": 27000, "currency": "NGN", "transaction_date": "2020-10-01T11:03:09.000Z", "status": "success", "reference": "DG4uishudoq9OLD", "domain": "test", "metadata": 0, "gateway_response": "Successful", "message": None, "channel": "card" } } verify_mock.return_value.json.return_value = verify_json mocked_keys = verify_json.keys() print(list(verify_keys)) print(list(mocked_keys)) self.assertListEqual(list(verify_keys), list(mocked_keys))
def get(self, request, *args, **kwargs): data = {} if 'reference' in request.query_params: reference = request.query_params.get('reference', "") response = verify(request.user, reference) if response.get('status', 'False'): # add 50 to the referral user if balance is above 200 try: if request.user.referral and request.user.account_balance >= 200 and request.user.referral_status == 'unpaid': referral_user = User.objects.filter( email=request.user.referral).first() referral_user.account_balance += 50 referral_user.save() request.user.referral_status = "paid" request.user.save() except: pass data['response'] = "success" data['detail'] = response.get('message') return Response(data=data, status=status.HTTP_202_ACCEPTED) else: data['response'] = "Error" data['detail'] = response.get('message') return Response(data=data, status=status.HTTP_400_BAD_REQUEST) else: data['response'] = "Error" data[ 'detail'] = "Improperly configured. No reference in verify. Please try again. If this continues, contact Dot360s" return Response(data=data, status=status.HTTP_400_BAD_REQUEST)
def get(self, request): if 'reference' in request.GET: reference = request.GET.get('reference', "") response = verify(request.user, reference) if response.get('status', 'False'): # add 50 to the referral user if balance is above 200 try: if request.user.referral and request.user.account_balance >= 200 and request.user.referral_status == 'unpaid': referral_user = User.objects.filter( email=request.user.referral).first() referral_user.account_balance += 50 referral_user.save() request.user.referral_status = "paid" request.user.save() except: pass messages.add_message(request, messages.SUCCESS, response.get('message')) return HttpResponseRedirect(reverse("home")) else: messages.add_message(request, messages.ERROR, response.get('message')) return HttpResponseRedirect(reverse("fund_account")) else: messages.add_message( request, messages.ERROR, "Improperly configured. No reference in verify. Please try again. If this continues, contact Dot360s" ) return HttpResponseRedirect(reverse('fund_account'))
def test_verify_returns_none_if_response_not_ok(self, verify_mock): verify_mock.return_value = Mock(ok=False) verify_response = verify(self.passenger, "some_reference") self.assertEqual(verify_response, None)
def test_verify_returns_none_if_unseccessful_request(self): verify_response = verify(self.passenger, "somecrapreference") self.assertEqual(verify_response, None)