datary
Advanced tools
| Metadata-Version: 1.1 | ||
| Name: datary | ||
| Version: 0.1.27 | ||
| Version: 0.1.28 | ||
| Summary: Datary Python sdk lib | ||
@@ -5,0 +5,0 @@ Home-page: https://github.com/Datary/python-sdk |
+89
-15
@@ -94,4 +94,21 @@ # -*- coding: utf-8 -*- | ||
| def get_user_token(self, user=None, password=None): | ||
| def sign_in(self, member_uuid='me'): | ||
| """ | ||
| Sign-in and assert has a token in requests headers. | ||
| """ | ||
| if self.token: | ||
| self.attach_token_header() | ||
| elif self.username and self.password: | ||
| self.token = self.get_user_token(member_uuid='me') | ||
| self.attach_token_header() | ||
| else: | ||
| logger.error( | ||
| 'Can`t sign-in, useraname or password incorrect', | ||
| username=self.username, | ||
| password=self.password) | ||
| def get_user_token(self, user=None, password=None, member_uuid='me'): | ||
| """ | ||
| =========== ============= ================================ | ||
@@ -107,3 +124,18 @@ Parameter Type Description | ||
| """ | ||
| return self.get_member_session(user, password, member_uuid) | ||
| def get_member_session(self, user=None, password=None, member_uuid='me'): | ||
| """ | ||
| =========== ============= ================================ | ||
| Parameter Type Description | ||
| =========== ============= ================================ | ||
| user str Datary username | ||
| password str Datary password | ||
| member_uuid str Datary Member uuid (default: "me") | ||
| =========== ============= ================================ | ||
| Returns: | ||
| (str) User's token given a username, password and member_uuid. | ||
| """ | ||
| payload = { | ||
@@ -114,4 +146,4 @@ "username": user or self.username, | ||
| url = urljoin(self.URL_BASE, "/connection/signIn") | ||
| self.headers = {"Content-Type": "application/x-www-form-urlencoded"} | ||
| url = urljoin( | ||
| self.URL_BASE, "/members/{}/sessions".format(member_uuid)) | ||
@@ -121,3 +153,2 @@ response = self.request( | ||
| # Devuelve el token del usuario. | ||
| user_token = str(response.headers.get("x-set-token", '')) | ||
@@ -127,21 +158,64 @@ | ||
| def sign_in(self): | ||
| def sign_out(self, member_uuid='me'): | ||
| """ | ||
| Sign-in and assert has a token in requests headers. | ||
| Sign-out and invalidate the actual token. | ||
| """ | ||
| self.delete_member_session(member_uuid=member_uuid) | ||
| if self.token: | ||
| self.attach_token_header() | ||
| def delete_member_session(self, member_uuid='me'): | ||
| """ | ||
| Sign-out and invalidate the actual token. | ||
| elif self.username and self.password: | ||
| self.token = self.get_user_token() | ||
| self.attach_token_header() | ||
| """ | ||
| url = urljoin( | ||
| self.URL_BASE, "/members/{}/sessions".format(member_uuid)) | ||
| # Make sign_out request. | ||
| response = self.request(url, 'DELETE', **{'headers': self.headers}) | ||
| if response: | ||
| self.token = None | ||
| logger.info('Sign Out Succesfull!') | ||
| else: | ||
| logger.error( | ||
| 'Can`t sign-in, useraname or password incorrect', | ||
| username=self.username, | ||
| password=self.password) | ||
| "Fail to make Sign Out succesfully :(", | ||
| response=response) | ||
| def sign_out(self): | ||
| # ############################################################################# | ||
| # DEPRECATED | ||
| # ############################################################################# | ||
| def get_connection_sign_in(self, user=None, password=None): | ||
| """ | ||
| ...DEPRECATED... | ||
| =========== ============= ================================ | ||
| Parameter Type Description | ||
| =========== ============= ================================ | ||
| user str Datary username | ||
| password str Datary password | ||
| =========== ============= ================================ | ||
| Returns: | ||
| (str) User's token given a username and password. | ||
| """ | ||
| payload = { | ||
| "username": user or self.username, | ||
| "password": password or self.password, | ||
| } | ||
| url = urljoin(self.URL_BASE, "/connection/signIn") | ||
| self.headers = {"Content-Type": "application/x-www-form-urlencoded"} | ||
| response = self.request( | ||
| url, 'POST', **{'headers': self.headers, 'data': payload}) | ||
| # Devuelve el token del usuario. | ||
| user_token = str(response.headers.get("x-set-token", '')) | ||
| return user_token | ||
| def get_connection_sign_out(self): | ||
| """ | ||
@@ -148,0 +222,0 @@ Sign-out and invalidate the actual token. |
@@ -16,38 +16,14 @@ # -*- coding: utf-8 -*- | ||
| """ | ||
| @mock.patch('datary.requests.requests.requests.post') | ||
| def test_get_user_token(self, mock_request): | ||
| """ | ||
| Test datary auth get_user_token | ||
| """ | ||
| # Assert init class data & token introduced by args | ||
| self.assertEqual(self.datary.username, self.test_username) | ||
| self.assertEqual(self.datary.password, self.test_password) | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
| self.assertEqual(mock_request.call_count, 0) | ||
| def setUp(self): | ||
| self.test_token = '123' | ||
| self.test_username = 'pepe' | ||
| self.test_password = 'pass' | ||
| self.test_commit_limit = 30 | ||
| # Assert get token in __init__ | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': self.test_token}) | ||
| self.datary = Datary(**{'username': 'pepe', 'password': 'pass'}) | ||
| self.assertEqual(mock_request.call_count, 1) | ||
| self.test_token2 = '456' | ||
| self.test_username2 = 'manolo' | ||
| self.test_password2 = 'ssap' | ||
| self.test_commit_limit2 = 12 | ||
| # Assert get token by the method without args. | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': self.test_token}) | ||
| token1 = self.datary.get_user_token() | ||
| self.assertEqual(token1, self.test_token) | ||
| # Assert get token by method with args. | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': '456'}) | ||
| token2 = self.datary.get_user_token('maria', 'pass2') | ||
| self.assertEqual(token2, '456') | ||
| mock_request.return_value = MockRequestResponse("", headers={}) | ||
| token3 = self.datary.get_user_token('maria', 'pass2') | ||
| self.assertEqual(token3, '') | ||
| self.assertEqual(mock_request.call_count, 4) | ||
| @mock.patch('datary.requests.requests.requests.post') | ||
@@ -59,35 +35,25 @@ def test_properties(self, mock_request): | ||
| test_token = '123' | ||
| test_username = 'pepe' | ||
| test_password = 'pass' | ||
| test_commit_limit = 30 | ||
| test_token2 = '456' | ||
| test_username2 = 'manolo' | ||
| test_password2 = 'ssap' | ||
| test_commit_limit2 = 30 | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': test_token}) | ||
| "", headers={'x-set-token': self.test_token}) | ||
| self.datary = Datary(**{ | ||
| 'username': test_username, | ||
| 'password': test_password}) | ||
| 'username': self.test_username, | ||
| 'password': self.test_password}) | ||
| self.assertEqual(mock_request.call_count, 1) | ||
| self.assertEqual(self.datary.username, test_username) | ||
| self.assertEqual(self.datary.password, test_password) | ||
| self.assertEqual(self.datary.token, test_token) | ||
| self.assertEqual(self.datary.commit_limit, test_commit_limit) | ||
| self.assertEqual(self.datary.username, self.test_username) | ||
| self.assertEqual(self.datary.password, self.test_password) | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
| self.assertEqual(self.datary.commit_limit, self.test_commit_limit) | ||
| self.assertIn( | ||
| self.datary.token, self.datary.headers.get('Authorization')) | ||
| self.datary.username = test_username2 | ||
| self.datary.password = test_password2 | ||
| self.datary.token = test_token2 | ||
| self.datary.commit_limit = test_commit_limit2 | ||
| self.datary.username = self.test_username2 | ||
| self.datary.password = self.test_password2 | ||
| self.datary.token = self.test_token2 | ||
| self.datary.commit_limit = self.test_commit_limit2 | ||
| self.assertEqual(self.datary.username, test_username2) | ||
| self.assertEqual(self.datary.password, test_password2) | ||
| self.assertEqual(self.datary.token, test_token2) | ||
| self.assertEqual(self.datary.commit_limit, test_commit_limit2) | ||
| self.assertEqual(self.datary.username, self.test_username2) | ||
| self.assertEqual(self.datary.password, self.test_password2) | ||
| self.assertEqual(self.datary.token, self.test_token2) | ||
| self.assertEqual(self.datary.commit_limit, self.test_commit_limit2) | ||
| self.assertIn( | ||
@@ -109,4 +75,77 @@ self.datary.token, self.datary.headers.get('Authorization')) | ||
| @mock.patch('datary.auth.DataryAuth.delete_member_session') | ||
| def test_sign_out(self, mock_delete_member_session): | ||
| self.datary.sign_out() | ||
| self.assertEqual(mock_delete_member_session.call_count, 1) | ||
| @mock.patch('datary.requests.requests.requests.delete') | ||
| def test_delete_member_session(self, mock_request): | ||
| # Fail sign out | ||
| mock_request.return_value = MockRequestResponse( | ||
| "Err", status_code=500) | ||
| self.datary.delete_member_session() | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
| self.assertEqual(mock_request.call_count, 1) | ||
| # reset mock | ||
| mock_request.reset_mock() | ||
| # Succes sign out | ||
| mock_request.return_value = MockRequestResponse( | ||
| "OK", status_code=200) | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
| self.datary.delete_member_session() | ||
| self.assertEqual(self.datary.token, None) | ||
| self.assertEqual(mock_request.call_count, 1) | ||
| # ########################################################################## | ||
| # DEPRECATED | ||
| # ########################################################################## | ||
| @mock.patch('datary.requests.requests.requests.post') | ||
| def test_get_connection_sign_in(self, mock_request): | ||
| """ | ||
| Test datary auth get_user_token | ||
| """ | ||
| # init datary | ||
| self.datary = Datary(**{ | ||
| 'username': self.test_username, | ||
| 'password': self.test_password, | ||
| 'token': self.test_token}) | ||
| # Assert init class data & token introduced by args | ||
| self.assertEqual(self.datary.username, self.test_username) | ||
| self.assertEqual(self.datary.password, self.test_password) | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
| self.assertEqual(mock_request.call_count, 0) | ||
| # Assert get token in __init__ | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': self.test_token}) | ||
| self.datary = Datary(**{'username': 'pepe', 'password': 'pass'}) | ||
| self.assertEqual(mock_request.call_count, 1) | ||
| # Assert get token by the method without args. | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': self.test_token}) | ||
| token1 = self.datary.get_connection_sign_in() | ||
| self.assertEqual(token1, self.test_token) | ||
| # Assert get token by method with args. | ||
| mock_request.return_value = MockRequestResponse( | ||
| "", headers={'x-set-token': '456'}) | ||
| token2 = self.datary.get_connection_sign_in('maria', 'pass2') | ||
| self.assertEqual(token2, '456') | ||
| mock_request.return_value = MockRequestResponse("", headers={}) | ||
| token3 = self.datary.get_connection_sign_in('maria', 'pass2') | ||
| self.assertEqual(token3, '') | ||
| self.assertEqual(mock_request.call_count, 4) | ||
| @mock.patch('datary.requests.requests.requests.get') | ||
| def test_sign_out(self, mock_request): | ||
| def test_get_connection_sign_out(self, mock_request): | ||
| """ | ||
@@ -116,6 +155,12 @@ Test datary auth sign_out | ||
| # init datary | ||
| self.datary = Datary(**{ | ||
| 'username': self.test_username, | ||
| 'password': self.test_password, | ||
| 'token': self.test_token}) | ||
| # Fail sign out | ||
| mock_request.return_value = MockRequestResponse( | ||
| "Err", status_code=500) | ||
| self.datary.sign_out() | ||
| self.datary.get_connection_sign_out() | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
@@ -132,4 +177,4 @@ self.assertEqual(mock_request.call_count, 1) | ||
| self.assertEqual(self.datary.token, self.test_token) | ||
| self.datary.sign_out() | ||
| self.datary.get_connection_sign_out() | ||
| self.assertEqual(self.datary.token, None) | ||
| self.assertEqual(mock_request.call_count, 1) |
@@ -77,4 +77,6 @@ # -*- coding: utf-8 -*- | ||
| else: | ||
| msg = "Fail Request to datary done with code {}" | ||
| logger.error( | ||
| "Fail Request to datary done with code {}".format(content.status_code), | ||
| msg.format(content.status_code), | ||
| url=url, http_method=http_method, | ||
@@ -81,0 +83,0 @@ code=content.status_code, |
@@ -33,2 +33,4 @@ # -*- coding: utf-8 -*- | ||
| "ok", headers={'x-set-token': self.test_token}) | ||
| mock_requests.put.return_value = MockRequestResponse( | ||
| "ok", headers={'x-set-token': self.test_token}) | ||
| mock_requests.delete.return_value = MockRequestResponse( | ||
@@ -45,6 +47,10 @@ "ok", headers={'x-set-token': self.test_token}) | ||
| # test deleted | ||
| result3 = self.datary.request(self.url, 'DELETE') | ||
| # test PUT | ||
| result3 = self.datary.request(self.url, 'PUT') | ||
| self.assertEqual(result3.text, 'ok') | ||
| # test DELETED | ||
| result4 = self.datary.request(self.url, 'DELETE') | ||
| self.assertEqual(result4.text, 'ok') | ||
| # test UNKNOWK http method | ||
@@ -57,11 +63,11 @@ with self.assertRaises(Exception): | ||
| "err", status_code=500) | ||
| result4 = self.datary.request(self.url, 'GET') | ||
| self.assertEqual(result4, None) | ||
| mock_requests.get.side_effect = requests.RequestException('err') | ||
| result5 = self.datary.request(self.url, 'GET') | ||
| self.assertEqual(result5, None) | ||
| mock_requests.get.side_effect = requests.RequestException('err') | ||
| result6 = self.datary.request(self.url, 'GET') | ||
| self.assertEqual(result6, None) | ||
| self.assertEqual(mock_requests.get.call_count, 3) | ||
| self.assertEqual(mock_requests.post.call_count, 1) | ||
| self.assertEqual(mock_requests.delete.call_count, 1) |
@@ -5,2 +5,2 @@ #!/usr/bin/env python | ||
| """ | ||
| __version__ = "0.1.27" | ||
| __version__ = "0.1.28" |
+1
-1
| Metadata-Version: 1.1 | ||
| Name: datary | ||
| Version: 0.1.27 | ||
| Version: 0.1.28 | ||
| Summary: Datary Python sdk lib | ||
@@ -5,0 +5,0 @@ Home-page: https://github.com/Datary/python-sdk |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
145036
3.46%3314
3.08%