From f7756308fbc1a13949969ba411dae8a0760d8502 Mon Sep 17 00:00:00 2001 From: matang Date: Sun, 14 Jul 2019 15:47:45 +0300 Subject: [PATCH 1/5] SN-612 Moving the config file into the securenative package --- securenative/__init__.py | 1 + config.py => securenative/config.py | 2 +- securenative/http_client.py | 2 +- securenative/http_client_test.py | 2 +- securenative/{integration_test.py => integration_test_skip.py} | 0 securenative/sdk.py | 2 +- setup.py | 2 +- 7 files changed, 6 insertions(+), 5 deletions(-) rename config.py => securenative/config.py (52%) rename securenative/{integration_test.py => integration_test_skip.py} (100%) diff --git a/securenative/__init__.py b/securenative/__init__.py index 9f0c7d6..67ce729 100644 --- a/securenative/__init__.py +++ b/securenative/__init__.py @@ -1,3 +1,4 @@ +from securenative.config import sdk_version import securenative.event_types from securenative.sdk import SecureNative, SecureNativeOptions from securenative.event_options import Event, User, CustomParam diff --git a/config.py b/securenative/config.py similarity index 52% rename from config.py rename to securenative/config.py index 3fd9ea5..870e26c 100644 --- a/config.py +++ b/securenative/config.py @@ -1,2 +1,2 @@ -sdk_version = '0.1' +sdk_version = '0.1.1' _max_allowed_params = 6 diff --git a/securenative/http_client.py b/securenative/http_client.py index fa2d3cc..70e24a3 100644 --- a/securenative/http_client.py +++ b/securenative/http_client.py @@ -1,6 +1,6 @@ import requests -from config import sdk_version +from securenative.config import sdk_version class HttpClient: diff --git a/securenative/http_client_test.py b/securenative/http_client_test.py index d8e8a84..6f95b37 100644 --- a/securenative/http_client_test.py +++ b/securenative/http_client_test.py @@ -1,7 +1,7 @@ import json import unittest -from config import sdk_version +from securenative.config import sdk_version from securenative.http_client import HttpClient diff --git a/securenative/integration_test.py b/securenative/integration_test_skip.py similarity index 100% rename from securenative/integration_test.py rename to securenative/integration_test_skip.py diff --git a/securenative/sdk.py b/securenative/sdk.py index 49e63c6..3f153ed 100644 --- a/securenative/sdk.py +++ b/securenative/sdk.py @@ -1,6 +1,6 @@ import json -from config import _max_allowed_params +from securenative.config import _max_allowed_params from securenative.event_manager import EventManager from securenative.sdk_options import SecureNativeOptions from securenative.utils import verify_signature diff --git a/setup.py b/setup.py index 3b82164..8d84903 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from distutils.core import setup -from config import sdk_version +from securenative.config import sdk_version setup( name='securenative', From 04d20da618dc854a53c18b19bc5077c80247045e Mon Sep 17 00:00:00 2001 From: matang Date: Sun, 14 Jul 2019 15:47:59 +0300 Subject: [PATCH 2/5] SN-612 Moving the config file into the securenative package --- securenative/{integration_test_skip.py => integration_test.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename securenative/{integration_test_skip.py => integration_test.py} (100%) diff --git a/securenative/integration_test_skip.py b/securenative/integration_test.py similarity index 100% rename from securenative/integration_test_skip.py rename to securenative/integration_test.py From 884ad3a10b1ad001ab60de2b1ee70efba847222d Mon Sep 17 00:00:00 2001 From: matang Date: Sun, 14 Jul 2019 16:30:17 +0300 Subject: [PATCH 3/5] SN-612 Bug fix when event.params is None the as_dict() method crashes --- securenative/config.py | 2 +- securenative/event_options.py | 3 +++ securenative/sdk.py | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/securenative/config.py b/securenative/config.py index 870e26c..2aa2793 100644 --- a/securenative/config.py +++ b/securenative/config.py @@ -1,2 +1,2 @@ -sdk_version = '0.1.1' +sdk_version = '0.1.3' _max_allowed_params = 6 diff --git a/securenative/event_options.py b/securenative/event_options.py index b5e49ad..bbb73ba 100644 --- a/securenative/event_options.py +++ b/securenative/event_options.py @@ -34,6 +34,9 @@ def __init__(self, event_type, user=User(), ip=u'127.0.0.1', remote_ip=u'127.0.0 self.params = params + if self.params is None: + self.params = list() + if sn_cookie_value is not None: self.cid, self.fp = _parse_cookie(sn_cookie_value) diff --git a/securenative/sdk.py b/securenative/sdk.py index 3f153ed..ba20ab7 100644 --- a/securenative/sdk.py +++ b/securenative/sdk.py @@ -36,5 +36,6 @@ def flush(self): def _validate_event(event): - if len(event.params) > _max_allowed_params: - event.params = event.params[:_max_allowed_params] + if event.params is not None: + if len(event.params) > _max_allowed_params: + event.params = event.params[:_max_allowed_params] From d26148e81bfd714e4fb5b1d017f8d8dc9454092a Mon Sep 17 00:00:00 2001 From: matang Date: Tue, 16 Jul 2019 10:38:37 +0300 Subject: [PATCH 4/5] SN-612 Adding verify event type, reflecting the changes on docs --- README.md | 5 ++--- securenative/config.py | 2 +- securenative/event_types.py | 1 + securenative/integration_test.py | 15 +++++++++------ setup.py | 6 ++++++ 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f2e97be..e992ca3 100644 --- a/README.md +++ b/README.md @@ -22,14 +22,13 @@ if __name__=='__main__': Once the SDK has been initialized, you can start sending new events with the `track` function: ```python import securenative -from securenative.event_types import login from securenative.event_options import Event, User def my_login_function(): # Many lines of code ... event = Event( # Build the event from the request's context - event_type=login, + event_type=securenative.event_types.login, ip='35.199.23.1', remote_ip='35.199.23.2', user_agent='Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36', @@ -59,7 +58,7 @@ def my_change_password_function(): # Many lines of code... event = Event( # Build the event from the request's context - event_type='', + event_type=securenative.event_types.verification, ip='35.199.23.1', remote_ip='35.199.23.2', user_agent='Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36', diff --git a/securenative/config.py b/securenative/config.py index 2aa2793..79af1ef 100644 --- a/securenative/config.py +++ b/securenative/config.py @@ -1,2 +1,2 @@ -sdk_version = '0.1.3' +sdk_version = '0.1.4' _max_allowed_params = 6 diff --git a/securenative/event_types.py b/securenative/event_types.py index 2ac34a2..3c3b6fc 100644 --- a/securenative/event_types.py +++ b/securenative/event_types.py @@ -16,3 +16,4 @@ role_update = "sn.user.role.update" profile_update = "sn.user.profile.update" page_view = "sn.user.page.view" +verify = "sn.verify" diff --git a/securenative/integration_test.py b/securenative/integration_test.py index 4541d33..1af0445 100644 --- a/securenative/integration_test.py +++ b/securenative/integration_test.py @@ -11,19 +11,22 @@ class IntegrationTest(unittest.TestCase): def test_integration_with_server(self): api_key = os.environ.get('TEST_API_KEY') - id = str(uuid.uuid4()) + user_id = str(uuid.uuid4()) options = SecureNativeOptions(auto_send=False) securenative.init(api_key, options) - securenative.track(self.build_event(id, '52.23.233.3')) + securenative.track(self.build_event(user_id, securenative.event_types.login, '52.23.233.3')) securenative.flush() sleep(10) - result = securenative.verify(self.build_event(id, '31.168.11.138')) + result = securenative.verify(self.build_event(user_id, securenative.event_types.verify, '31.168.11.138')) - - def build_event(self, id, ip): - return Event(event_type=securenative.event_types.login, + self.assertEqual(result['riskLevel'], 'high') + self.assertEqual(result['score'], 0.64) + self.assertIsNotNone(result['triggers']) + + def build_event(self, id, type, ip): + return Event(event_type=type, ip=ip, user=User(user_id=id, user_email='python-sdk@securenative.com', user_name='python sdk'), params=[CustomParam('key', 'val')] diff --git a/setup.py b/setup.py index 8d84903..358ad84 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,11 @@ +import pathlib from distutils.core import setup from securenative.config import sdk_version +HERE = pathlib.Path(__file__).parent +README = (HERE / "README.md").read_text() + setup( name='securenative', packages=['securenative'], @@ -13,6 +17,8 @@ url='http://www.securenative.com', download_url='https://github.com/securenative/securenative-python/archive/0.1.tar.gz', keywords=["securenative", 'cyber-security'], + long_description=README, + long_description_content_type="text/markdown", install_requires=[ "requests", ], From fc9732c0f426fa8d2bf482e63746dbf9840495ff Mon Sep 17 00:00:00 2001 From: matang Date: Tue, 16 Jul 2019 10:44:53 +0300 Subject: [PATCH 5/5] SN-612 Adding markdown readme support for PyPi page --- README.md | 2 +- securenative/config.py | 2 +- setup.cfg | 2 -- setup.py | 9 ++++----- 4 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 setup.cfg diff --git a/README.md b/README.md index e992ca3..d7e0344 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ def my_change_password_function(): # Many lines of code... event = Event( # Build the event from the request's context - event_type=securenative.event_types.verification, + event_type=securenative.event_types.verify, ip='35.199.23.1', remote_ip='35.199.23.2', user_agent='Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36', diff --git a/securenative/config.py b/securenative/config.py index 79af1ef..88c8519 100644 --- a/securenative/config.py +++ b/securenative/config.py @@ -1,2 +1,2 @@ -sdk_version = '0.1.4' +sdk_version = '0.1.5' _max_allowed_params = 6 diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 224a779..0000000 --- a/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[metadata] -description-file = README.md \ No newline at end of file diff --git a/setup.py b/setup.py index 358ad84..9e9090e 100644 --- a/setup.py +++ b/setup.py @@ -1,10 +1,9 @@ -import pathlib -from distutils.core import setup +from setuptools import setup, Extension from securenative.config import sdk_version -HERE = pathlib.Path(__file__).parent -README = (HERE / "README.md").read_text() +with open("README.md", "r") as fh: + long_description = fh.read() setup( name='securenative', @@ -17,7 +16,7 @@ url='http://www.securenative.com', download_url='https://github.com/securenative/securenative-python/archive/0.1.tar.gz', keywords=["securenative", 'cyber-security'], - long_description=README, + long_description=long_description, long_description_content_type="text/markdown", install_requires=[ "requests",