-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Contains the Kount Python SDK, tests, and build/package routines.
.:information_source: :green_book: Please find the latest documentation on readthedocs.io
-
What is this repository for?
Contains sources, tests, and resources for the Kount Python SDK SDK version: 1.0.0 Python 3.5.3, 3.6.1
-
How do I get set up?
pip install kount_ris_sdk
- or
-
- Clone the repository
python setup.py install
-
- Dependencies
-
- requests
only for python 2.7.13, uncomment the 2 rows bellow in requirements.txt
- pathlib>=1.0.1
- mom>=0.1.3 # base85
install all dependencies from requirements.txt with
pip install -r requirements.txt
- How to build the SDK and run integration & unit tests in root directory?
pytest tests python3 -m tests.test_api_kount python2 -m tests.test_ris_test_suite python -m tests.test_basic_connectivity
The real configuration key can be set in local_settings.py:
configurationKey = b"replace with real key"
OR is set as environment variable K_KEY . In this case in settings.py uncomment this:
#~ uncomment this if you'd like to get the configurationKey from the environment #~ import os #~ try: #~ configurationKey = os.environ['K_KEY'] #~ except KeyError: #~ print("The default fake configurationKey set. Required actual one from Kount")
In case of correct configurationKey all tests will be executed:
~/Kount$ python3 -m pytest tests =============== test session starts ============================= platform linux -- Python 3.6.1, pytest-3.1.0, py-1.4.33, pluggy-0.4.0 metadata: {'Platform': 'Linux-4.10.0-21-generic-x86_64-with-Ubuntu-17.04-zesty', 'Plugins': {'html': '1.14.2', 'metadata': '1.5.0'}, 'Packages': {'py': '1.4.33', 'pytest': '3.1.0', 'pluggy': '0.4.0'}, 'Python': '3.6.1'} rootdir: /home/dani/Kount, inifile: plugins: metadata-1.5.0, html-1.14.2 collected 91 items tests/test_address.py ... tests/test_api_kount.py ....... tests/test_base85_encode_decode.py .... tests/test_basic_connectivity.py .......... tests/test_bed_examples.py .. tests/test_inquiry.py ... tests/test_khash.py ........... tests/test_payment.py ..... tests/test_ris_test_suite.py .......................... tests/test_ris_validation_exception.py ........ tests/test_ris_validator.py ... tests/test_validation_error.py ........ tests/test_xmlparser.py . ===========================================================91 passed in 71.87 seconds ==========
with incorrect / missing configurationKey the integration tests will raise a ValueError: Configured configurationKey is incorrect.
~/Kount$ python -m pytest tests =========================================================================================== test session starts ============================================================================================ platform linux2 -- Python 2.7.13, pytest-3.1.1, py-1.4.33, pluggy-0.4.0 metadata: {'Python': '2.7.13', 'Platform': 'Linux-4.10.0-22-generic-x86_64-with-Ubuntu-17.04-zesty', 'Packages': {'py': '1.4.33', 'pytest': '3.1.1', 'pluggy': '0.4.0'}, 'Plugins': {'html': '1.14.2', 'metadata': '1.5.0'}} rootdir: /home/dani/Kount, inifile: plugins: metadata-1.5.0, html-1.14.2 collected 27 items / 4 errors ================================================================================================== ERRORS ================================================================================================== _________________________________________________________________________________ ERROR collecting tests/test_api_kount.py _________________________________________________________________________________ tests/test_api_kount.py:14: in <module> import inittest tests/inittest.py:20: in <module> Khash.set_iv(iv) kount/util/khash.py:73: in set_iv cls.verify() kount/util/khash.py:63: in verify raise ValueError(mesg) E ValueError: Configured configurationKey is incorrect. --------------------------------------------------------------------------------------------- Captured stderr ---------------------------------------------------------------------------------------------- No handlers could be found for logger "kount.khash" ____________________________________________________________________________ ERROR collecting tests/test_basic_connectivity.py _____________________________________________________________________________ tests/test_basic_connectivity.py:16: in <module> import inittest tests/inittest.py:20: in <module> Khash.set_iv(iv) kount/util/khash.py:73: in set_iv cls.verify() kount/util/khash.py:63: in verify raise ValueError(mesg) E ValueError: Configured configurationKey is incorrect. ___________________________________________________________________________________ ERROR collecting tests/test_khash.py ___________________________________________________________________________________ tests/test_khash.py:9: in <module> import inittest tests/inittest.py:20: in <module> Khash.set_iv(iv) kount/util/khash.py:73: in set_iv cls.verify() kount/util/khash.py:63: in verify raise ValueError(mesg) E ValueError: Configured configurationKey is incorrect. ______________________________________________________________________________ ERROR collecting tests/test_ris_test_suite.py _______________________________________________________________________________ tests/test_ris_test_suite.py:9: in <module> from test_basic_connectivity import generate_unique_id, default_inquiry /usr/local/lib/python2.7/dist-packages/_pytest/assertion/rewrite.py:216: in load_module py.builtin.exec_(co, mod.__dict__) tests/test_basic_connectivity.py:16: in <module> import inittest tests/inittest.py:20: in <module> Khash.set_iv(iv) kount/util/khash.py:73: in set_iv cls.verify() kount/util/khash.py:63: in verify raise ValueError(mesg) E ValueError: Configured configurationKey is incorrect. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 4 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! =================================================== 4 error in 0.29 seconds =================================
Note: run tests with unittest (displayed info like logger errors from raised exceptions in tests):
- with verbosity
~Kount$ python3 -m unittest discover tests -v ... test_long request ... validation errors = ['max_length 8991 invalid for S2NM'] ...
- without verbosity
~Kount$ python3 -m unittest discover tests ...validation errors = ['Regex ^.+@.+\\..+$ invalid for S2EM'] ....validation errors = ['Regex ^.+@.+\\..+$ invalid for EMAL'] .validation errors = ['max_length 65 invalid for EMAL'] .....validation errors = ['Regex ^.+@.+\\..+$ invalid for EMAL'] .validation errors = ['max_length 8991 invalid for S2NM'] ValueError - Expecting value: line 1 column 1 (char 0) validation errors = ['max_length 56943 invalid for S2NM'] ValueError - Expecting value: line 1 column 1 (char 0) ....validation errors = ['Regex ^.+@.+\\..+$ invalid for EMAL'] .validation errors = ['max_length 8991 invalid for S2NM'] ValueError - Expecting value: line 1 column 1 (char 0) validation errors = ['max_length 56943 invalid for S2NM'] ValueError - Expecting value: line 1 column 1 (char 0) ...............................validation errors = ['Mode J invalid for MACK', 'Mode J invalid for SESS', 'Mode J invalid for SITE', 'Mode J invalid for PROD_QUANT[0]', 'Mode J invalid for PROD_ITEM[0]', 'Mode J invalid for PROD_PRICE[0]', 'Mode J invalid for PROD_TYPE[0]'] .............validation errors = ['Mode J invalid for MACK', 'Mode J invalid for SESS', 'Mode J invalid for SITE', 'Mode J invalid for PROD_QUANT[0]', 'Mode J invalid for PROD_ITEM[0]', 'Mode J invalid for PROD_PRICE[0]', 'Mode J invalid for PROD_TYPE[0]'] ...................... ---------------------------------------------------------------------- Ran 91 tests in 71.508s OK
The coverage can be measured with
~/Kount$ coverage run -m unittest discover tests ..................................................................................... ---------------------------------------------------------------------- Ran 91 tests in 79.799s ~/Kount$ coverage report --omit=*/local/*,*/.local/*
TOTAL - 92%
or generate detailed html coverage in folder ~htmlcov with:
~/Kount$ coverage html --omit=*/local/*,*/.local/*
- Setting up IDE projects
- Komodo IDE/Edit, Scite, Visual Studio - have automatic python integration
-
Who do I talk to?
- Repo owner or admin
- Other community or team contact