From 03e91e1bdd4a98d4c5fc8d6cad49d6aeaa0e7ab5 Mon Sep 17 00:00:00 2001 From: Shabir Mohamed Abdul Samadh <7249208+Shabirmean@users.noreply.github.com> Date: Tue, 11 Jan 2022 11:59:53 -0500 Subject: [PATCH] fix: catch decimal error and return fail (#548) * fix: catch decimal error and return fail * test: temporarily point to runcible runner * test: update pylintrc * lint: make snake case * fix: remove invalid test * test: point to new ci Co-authored-by: Olivier Bourgeois <3271352+bourgeoisor@users.noreply.github.com> Co-authored-by: Christine Kim <35876108+ckim328@users.noreply.github.com> --- .../ui-tests/cypress/integration/transfer_spec.js | 10 ---------- .pylintrc | 2 +- src/frontend/frontend.py | 9 +++++++-- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ui-tests/cypress/integration/transfer_spec.js b/.github/workflows/ui-tests/cypress/integration/transfer_spec.js index 1c00cc5ac..218a2dc58 100644 --- a/.github/workflows/ui-tests/cypress/integration/transfer_spec.js +++ b/.github/workflows/ui-tests/cypress/integration/transfer_spec.js @@ -191,16 +191,6 @@ describe('Transfer is unsuccessful with invalid data', function () { cy.get('.invalid-feedback').contains(invalidFeedback.payment) }) - // TODO: [issue-182] - it.skip('cannot contain more than 2 decimal digits', function () { - const invalidPayment = `5\.02\.35\.459` - - cy.transfer(recipient, invalidPayment) - cy.get('.invalid-feedback').should('be.visible') - cy.get('.invalid-feedback').contains(invalidFeedback.payment) - - }) - it('cannot reference invalid account', function () { const invalidRecipient = { accountNum: randomInt(100,10000000), diff --git a/.pylintrc b/.pylintrc index a9cd878e7..0823b3b86 100644 --- a/.pylintrc +++ b/.pylintrc @@ -9,4 +9,4 @@ disable=F0401, # import loading R1732, # consider-using-with W1514, # unspecified-encoding C0209, # consider-using-f-string - R1734 # use-list-literal \ No newline at end of file + R1734 # use-list-literal diff --git a/src/frontend/frontend.py b/src/frontend/frontend.py index 194087de2..bb12c5ca3 100644 --- a/src/frontend/frontend.py +++ b/src/frontend/frontend.py @@ -20,7 +20,7 @@ import logging import os import socket -from decimal import Decimal +from decimal import Decimal, DecimalException import requests from requests.exceptions import HTTPError, RequestException @@ -206,11 +206,13 @@ def payment(): app.config['LOCAL_ROUTING'], False) + user_input = request.form['amount'] + payment_amount = int(Decimal(user_input) * 100) transaction_data = {"fromAccountNum": account_id, "fromRoutingNum": app.config['LOCAL_ROUTING'], "toAccountNum": recipient, "toRoutingNum": app.config['LOCAL_ROUTING'], - "amount": int(Decimal(request.form['amount']) * 100), + "amount": payment_amount, "uuid": request.form['uuid']} _submit_transaction(transaction_data) app.logger.info('Payment initiated successfully.') @@ -228,6 +230,9 @@ def payment(): msg=msg, _external=True, _scheme=app.config['SCHEME'])) + except (ValueError, DecimalException) as num_err: + app.logger.error('Error submitting payment: %s', str(num_err)) + msg = 'Payment failed: {} is not a valid number'.format(user_input) return redirect(url_for('home', msg='Payment failed',