def test_update_borrower_signing_in_progress(self, mock_borrower, mock_borrower_save): class ReturnedBorrower: id = 0000000 token = "aaaaaa" deed_token = "aaaaaa" dob = "02/02/1922" phonenumber = "07777777777" signing_in_progress = False mock_borrower.return_value = None mock_borrower_save.signing_in_progress = False with self.assertRaises(BorrowerNotFoundException): Borrower.update_borrower_signing_in_progress('bbbbbb') mock_borrower.return_value = BorrowerModelMock() mock_borrower.return_value.signing_in_progress = True self.assertEqual( Borrower.update_borrower_signing_in_progress('aaaaaa'), True)
def auth_sms(deed, borrower_pos, user_id, borrower_auth_code, borrower_token): # pragma: no cover application.app.logger.info("Calling dm-esec-client to verify OTP code and sign the deed") element_id = 'deedData' borrower_path = "/dm-application/operativeDeed/signatureSlots" parameters = { 'borrower-pos': borrower_pos, 'element-id': element_id, 'borrowers-path': borrower_path, 'user-id': user_id, 'otp-code': borrower_auth_code, 'service-id': 1 } extra_parameters = { 'borrower-token': borrower_token, 'datetime': datetime.datetime.now().strftime("%d %B %Y %I:%M%p"), 'deed-id': deed.token } application.app.logger.info("Calling esec_client to hit validateSMSOTP...") request_url = config.ESEC_CLIENT_BASE_HOST + "/esec/auth_sms" resp = requests.post(request_url, params=parameters, data=deed.deed_xml) if resp.status_code == status.HTTP_401_UNAUTHORIZED: application.app.logger.info("Response status = %s" % resp.status_code) return jsonify({"status": "SMS Invalid"}), resp.status_code elif resp.status_code == status.HTTP_200_OK: application.app.logger.info("Response status = %s" % resp.status_code) deed_xml_to_send = deed.deed_xml.decode('utf-8') application.app.logger.info("Hashing deed prior to sending message to queue...") tree = etree.fromstring(deed.deed_xml) deed_data_xml = tree.xpath('.//deedData')[0] deed.deed_hash = Deed().generate_hash(etree.tostring(deed_data_xml)) deed.save() application.app.logger.info("Preparing to send message to the queue...") try: url = broker_url(config.RABBIT_HOST, config.EXCHANGE_USER, config.EXCHANGE_PASS, 5672, config.RABBIT_VHOST) with Emitter(url, config.EXCHANGE_NAME, config.ROUTING_KEYS) as emitter: emitter.send_message({'params': parameters, 'extra-parameters': extra_parameters, 'data': deed_xml_to_send}) application.app.logger.info("Message sent to the queue...") Borrower.update_borrower_signing_in_progress(borrower_token) return jsonify({"status": "Message successfully sent to the queue"}), status.HTTP_200_OK except Exception as e: application.app.logger.info('Error returned when trying to place an item on the queue: %s' % e) raise Exception else: application.app.logger.error("ESecurity Client Exception when trying to verify the OTP code") abort(status.HTTP_500_INTERNAL_SERVER_ERROR)