Skip to content

Commit

Permalink
Merge branch 'TPA-1088-squashed' into 'master'
Browse files Browse the repository at this point in the history
Tpa 1088 squashed

See merge request kount/third_party/kount-ris-python-sdk!11
  • Loading branch information
dharp-kount committed Feb 23, 2022
2 parents 9864323 + d7b964c commit 3a68e40
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 156 deletions.
40 changes: 26 additions & 14 deletions .gitlab-ci.yml
@@ -1,24 +1,34 @@
include:
- project: kount/third_party/tpa-ci-shared
file: base/sq-scan.yml
ref: 2.4.0

# image: python:3.6-alpine - Remove dependecies
image: python:3.8-slim-buster
file:
- base/sq-scan.yml
- core/rules.yml
ref: 2.5.2

stages:
- test
- sonarqube scan
- deploy


before_script:
# - apk update && apk add gcc python3-dev musl-dev libffi-dev
- pip install --upgrade pip
- pip install twine
- pip install pytest
- python setup.py sdist bdist_wheel
.python:
image: python:3.8-slim-buster
before_script:
- pip install --upgrade pip
- python setup.py sdist bdist_wheel

test:
stage: test
extends: .python
rules:
- !reference [.rule-on-master]
- !reference [.rule-on-mr]
- !reference [.rule-on-tag]
script:
- pip install pytest
- pip install .
- pip install .[tests]
- pytest tests --merchant-id=${RIS_SDK_SANDBOX_MERCHANT_ID} --api-key=${RIS_SDK_SANDBOX_API_KEY} --conf-key=$(echo ${RIS_CONFIG_KEY_BASE64} | openssl base64 -d)

sonarqube scan:
extends: .sq-scan
stage: sonarqube scan
Expand All @@ -28,11 +38,13 @@ sonarqube scan:

deploy_production:
stage: deploy
extends: .python
rules:
- !reference [.rule-on-tag]
variables:
TWINE_USERNAME: $PYPI_USERNAME
TWINE_PASSWORD: $PYPI_PASSWORD
script:
- pip install twine
- twine upload dist/*
only:
- tags

5 changes: 1 addition & 4 deletions src/kount/settings.py
Expand Up @@ -5,7 +5,4 @@
SDK_AUTHOR = "Kount SDK"
SDK_MAINTAINER = "Kount SDK"
MAINTAINER_EMAIL = "sdkadmin@kount.com"
DEFAULT_TIMEOUT = None
TEST_API_URL = "API_URL" # provided by kount
TEST_API_KEY = "API_KEY" # kount API Key
TEST_MERCHANT_ID = MERCHANT_ID # provided by kount
DEFAULT_TIMEOUT = None
16 changes: 6 additions & 10 deletions tests/conftest.py
Expand Up @@ -2,21 +2,17 @@
import pytest

from kount import config
from kount.settings import TEST_API_KEY, TEST_API_URL, TEST_MERCHANT_ID

TEST_API_URL = TEST_API_URL

TEST_API_KEY = TEST_API_KEY

TEST_MERCHANT = TEST_MERCHANT_ID


def pytest_addoption(parser):
parser.addoption('--conf-key', action='store',
default=os.environ.get('CONF_KEY', ''))
parser.addoption('--api-key', action='store', default=TEST_API_KEY)
parser.addoption('--merchant-id', action='store', default=TEST_MERCHANT)
parser.addoption('--api-url', action='store', default=TEST_API_URL)
parser.addoption('--api-key', action='store',
default=os.environ.get('RIS_SDK_SANDBOX_API_KEY', ''))
parser.addoption('--merchant-id', action='store',
default=os.environ.get('RIS_SDK_SANDBOX_MERCHANT_ID', ''))
parser.addoption('--api-url', action='store',
default=os.environ.get('RIS_SDK_SANDBOX_URL', 'https://risk.test.kount.net'))


@pytest.fixture(scope='session', autouse=True)
Expand Down
31 changes: 12 additions & 19 deletions tests/test_api_kount.py
Expand Up @@ -10,12 +10,10 @@
import pytest

from kount.client import Client
from kount.ris_validator import RisValidationException
from kount.version import VERSION

from json_test import example_data_products
from .json_test import example_data_products
from kount.config import SDKConfig
from kount.settings import TEST_API_KEY, TEST_API_URL, TEST_MERCHANT_ID

__author__ = SDKConfig.SDK_AUTHOR
__version__ = VERSION
Expand All @@ -29,15 +27,15 @@
'AUTO': 'R',
'BRND': None,
'BROWSER': None,
'CARDS': '5',
'CARDS': '1',
'COOKIES': None,
'COUNTERS_TRIGGERED': 0,
'COUNTRY': None,
'DDFS': None,
'DEVICES': '1',
'DEVICE_LAYERS': '....',
'DSR': None,
'EMAILS': '21',
'EMAILS': '1',
'FINGERPRINT': None,
'FLASH': None,
'GEOX': 'US',
Expand Down Expand Up @@ -75,7 +73,8 @@
'REGN': None,
'RULES_TRIGGERED': 1,
'RULE_DESCRIPTION_0': 'Review if order total > $1000 USD',
'SCOR': '99',
'SCOR': '34',
'OMNISCORE':61.2,
'SESS': 'F8E874A38B7B4B6DBB71492A584A969D',
'SITE': 'DEFAULT',
'TIMEZONE': None,
Expand Down Expand Up @@ -150,13 +149,6 @@ class TestAPIRIS(unittest.TestCase):
"""
maxDiff = None

"""
Need to set api_url, api_key and merchant id value in setting.py file.
"""
api_url = TEST_API_URL
api_key = TEST_API_KEY
merchant_id = TEST_MERCHANT_ID
timeout = 5

def _expected_response(self):
Expand Down Expand Up @@ -193,17 +185,18 @@ def test_api_kount(self):
"IP_IPAD": None,
"IP_LAT": None, "IP_LON": None, "IP_COUNTRY": None,
"IP_REGION": None,
"IP_CITY": None, "IP_ORG": None, "WARNING_COUNT": 0}
"IP_CITY": None, "IP_ORG": None, "WARNING_COUNT": 0,"OMNISCORE":None}
for raise_errors in [True, False]:
actual = self._client(raise_errors=raise_errors)._execute(data)
added, removed, modified, _ = dict_compare(actual, expected)
self.assertEqual(added, set())
self.assertEqual(removed, set())
modified_exp = {'CARDS': ('196', '1'),
'RULE_ID_0': ('6822', '1024842'),
'TRAN': ('P04S03M57HSP', 'PTPN0Z04P8Y6'),
'SCOR': ('99', '29'),
'EMAILS': ('20', '1')}
modified_exp = {
'REGN': (actual['REGN'], expected['REGN']),
'TRAN': (actual['TRAN'], expected['TRAN']),
'SCOR': (actual['SCOR'], expected['SCOR']),
'OMNISCORE': (actual['OMNISCORE'], expected['OMNISCORE'])
}
self.assertEqual(sorted(modified), sorted(modified_exp))

def test_api_kount_2_items(self):
Expand Down
28 changes: 12 additions & 16 deletions tests/test_basic_connectivity.py
Expand Up @@ -11,15 +11,13 @@
import unittest
import pytest

from kount.ris_validator import RisValidationException
from kount.client import Client
from kount.util.payment import CardPayment
from kount.version import VERSION

from test_inquiry import generate_unique_id, default_inquiry
from .test_inquiry import generate_unique_id, default_inquiry

from kount.config import SDKConfig
from kount.settings import TEST_API_KEY, TEST_API_URL, TEST_MERCHANT_ID

__author__ = SDKConfig.SDK_AUTHOR
__version__ = VERSION
Expand All @@ -37,13 +35,6 @@ class TestBasicConnectivity(unittest.TestCase):
"""Test Basic Connectivity"""
maxDiff = None

"""
Need to set api_url, api_key and merchant id value in setting.py file.
"""
merchant_id = TEST_MERCHANT_ID
api_key = TEST_API_KEY
api_url = TEST_API_URL

def _client(self, **kwargs):
kwargs['api_url'] = self.api_url
kwargs['api_key'] = self.api_key
Expand All @@ -66,14 +57,14 @@ def test_12_expected_score(self):
self.inq.params["UDF[~K!_SCOR]"] = '42'
res = self._process(self.inq)
self.assertIsNotNone(res)
self.assertEqual("42", res['SCOR'])
self.assertEqual('42', res.get_score())

def test_13_expected_decision(self):
"""test_13_expected_decision"""
self.inq.params["UDF[~K!_AUTO]"] = 'R'
res = self._process(self.inq)
self.assertIsNotNone(res)
self.assertEqual("R", res["AUTO"])
self.assertEqual("R", res.get_auto())

def test_16_expected_geox(self):
"""test_16_expected_geox"""
Expand All @@ -82,9 +73,9 @@ def test_16_expected_geox(self):
self.inq.params["UDF[~K!_GEOX]"] = 'NG'
res = self._process(self.inq)
self.assertIsNotNone(res)
self.assertEqual("D", res["AUTO"])
self.assertEqual("NG", res["GEOX"])
self.assertEqual("42", res['SCOR'])
self.assertEqual("D", res.get_auto())
self.assertEqual("NG", res.get_geox())
self.assertEqual("42", res.get_score())

def test_cyrillic(self):
"""test_cyrillic"""
Expand All @@ -98,7 +89,12 @@ def test_cyrillic(self):
self.assertEqual({
u'ERRO': 321,
u'ERROR_0': actual,
u'ERROR_COUNT': 1, u'MODE': u'E', u'WARNING_COUNT': 0}, res)
u'ERROR_COUNT': 1, u'MODE': u'E', u'WARNING_COUNT': 0},
{u'ERRO':res.get_error_code(),
u'ERROR_0': res.get_errors()[0],
u'ERROR_COUNT': len(res.get_errors()),
u'MODE': res.get_mode(),
u'WARNING_COUNT': len(res.get_warnings())})

def test_long(self):
"""test_long request"""
Expand Down
13 changes: 3 additions & 10 deletions tests/test_bed_examples.py
Expand Up @@ -20,8 +20,7 @@
from kount.util.address import Address
from kount.version import VERSION

from test_inquiry import generate_unique_id
from kount.settings import TEST_API_KEY, TEST_API_URL, TEST_MERCHANT_ID
from .test_inquiry import generate_unique_id

__author__ = SDKConfig.SDK_AUTHOR
__version__ = VERSION
Expand Down Expand Up @@ -105,20 +104,14 @@ def user_inquiry(session_id, merchant_id, email_client, payment):
'SITE': 'DEFAULT',
'TOTL': 3500,
# 'UNIQ': '4F7132C2FE8547928CD9',
'VERS': '0700'}
'VERS': '0710'}


@pytest.mark.usefixtures("api_url", "api_key", "merchant_id")
class TestBed(unittest.TestCase):
"""Test Bed for use-cases, with & without Khash"""
maxDiff = None

""" Need to set api_url, api_key and merchant id value in setting.py file. """

merchant_id = TEST_MERCHANT_ID
api_key = TEST_API_KEY
api_url = TEST_API_URL

def setUp(self):
self.session_id = generate_unique_id()[:32]
self.email_client = EMAIL
Expand Down Expand Up @@ -151,7 +144,7 @@ def compare(self, expected_dict):
"""common method for both tests"""
res = Client(self.api_url, self.api_key).process(self.inq)
self.assertIsNotNone(res)
self.assertNotIn('ERRO', res)
self.assertNotIn('ERRO', repr(res))
actual = self.inq.params.copy()
remove = ['SDK_VERSION', 'SESS', 'UNIQ', 'ORDR']
for k in remove:
Expand Down
6 changes: 0 additions & 6 deletions tests/test_inquiry.py
Expand Up @@ -17,7 +17,6 @@
from kount.util.address import Address
from kount.config import SDKConfig
from kount.version import VERSION
from kount.settings import TEST_API_KEY, TEST_API_URL, TEST_MERCHANT_ID

__author__ = SDKConfig.SDK_AUTHOR
__version__ = VERSION
Expand Down Expand Up @@ -133,11 +132,6 @@ class TestInquiry(unittest.TestCase):
"""Inquiry class tests"""
maxDiff = None

""" Need to set api_url, api_key and merchant id value in setting.py file. """
merchant_id = TEST_MERCHANT_ID
api_key = TEST_API_KEY
api_url = TEST_API_URL

def setUp(self):
self.session_id = str(generate_unique_id())
self.client = Client(self.api_url, self.api_key)
Expand Down
12 changes: 1 addition & 11 deletions tests/test_ris_test_suite.py
Expand Up @@ -14,14 +14,12 @@
from kount.util.khash import Khash
from kount.client import Client
from kount.util.cartitem import CartItem
from kount.ris_validator import RisValidationException
from kount.util.payment import CardPayment
from kount.version import VERSION

from test_basic_connectivity import generate_unique_id, default_inquiry
from .test_basic_connectivity import generate_unique_id, default_inquiry

from kount.config import SDKConfig
from kount.settings import TEST_API_KEY, TEST_API_URL, TEST_MERCHANT_ID

__author__ = SDKConfig.SDK_AUTHOR
__version__ = VERSION
Expand All @@ -45,11 +43,6 @@ class TestRisTestSuite(unittest.TestCase):
timeout=TIMEOUT, RAISE_ERRORS=True)
"""

"""Need to set api_url, api_key and merchant id value in setting.py file."""
merchant_id = TEST_MERCHANT_ID
api_key = TEST_API_KEY
api_url = TEST_API_URL

maxDiff = None

def setUp(self):
Expand Down Expand Up @@ -227,9 +220,6 @@ def test_8_ris_j_1_kount_central_rule_decline(self):
kc_events = res.get_kc_events()
self.assertEqual(1, len(kc_events), )
self.assertEqual(kc_events[0].code, "orderTotalDecline")
else:
self.assertRaises(RisValidationException,
self.client.process, inq)

def test_9_mode_u_after_mode_q(self):
"""test_9_mode_u_after_mode_q"""
Expand Down

0 comments on commit 3a68e40

Please sign in to comment.