From 007bdc1723c34e2470da578a2cb8303adbd4f5cb Mon Sep 17 00:00:00 2001 From: Wouter Westendorp Date: Thu, 2 May 2019 22:25:55 +0200 Subject: [PATCH 1/3] Compatibility with Hydra 1.0.0 --- .travis.yml | 4 ++-- hydra/oauth2.py | 23 ++++++++++------------- tests/conftest.py | 4 ++-- tests/test_oauth2.py | 36 ++++++++++++++++++------------------ 4 files changed, 32 insertions(+), 35 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3de600b..11f26c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,14 +23,14 @@ before_install: --name=hydra -e DATABASE_URL=memory --entrypoint=hydra - oryd/hydra:v1.0.0-rc.2_oryOS.9 + oryd/hydra:v1.0.0-rc.11 serve all --dangerous-force-http - sleep 10 - > docker run -it -e HYDRA_ADMIN_URL=http://hydra:4445 --link=hydra:hydra - oryd/hydra:v1.0.0-rc.2_oryOS.9 + oryd/hydra:v1.0.0-rc.11 clients create --skip-tls-verify --id client --secret secret diff --git a/hydra/oauth2.py b/hydra/oauth2.py index e44e0d6..91018b0 100644 --- a/hydra/oauth2.py +++ b/hydra/oauth2.py @@ -70,60 +70,58 @@ def revoke_token(self, token): def get_login_request(self, challenge): response = self.request( - 'GET', '/oauth2/auth/requests/login/{}'.format(challenge)) + 'GET', '/oauth2/auth/requests/login', params={'login_challenge': challenge}) if response.ok: return response.json() def get_consent_request(self, challenge): response = self.request( - 'GET', '/oauth2/auth/requests/consent/{}'.format(challenge)) + 'GET', '/oauth2/auth/requests/consent', params={'consent_challenge': challenge}) if response.ok: return response.json() def accept_login_request(self, challenge, accept_login_config): response = self.request( - 'PUT', '/oauth2/auth/requests/login/{}/accept'.format(challenge), + 'PUT', '/oauth2/auth/requests/login/accept', params={'login_challenge': challenge}, json=accept_login_config) if response.ok: return response.json() def accept_consent_request(self, challenge, accept_consent_config): response = self.request( - 'PUT', '/oauth2/auth/requests/consent/{}/accept'.format(challenge), + 'PUT', '/oauth2/auth/requests/consent/accept', params={'consent_challenge': challenge}, json=accept_consent_config) if response.ok: return response.json() def reject_login_request(self, challenge, reject_login_config): response = self.request( - 'PUT', '/oauth2/auth/requests/login/{}/reject'.format(challenge), + 'PUT', '/oauth2/auth/requests/login/reject', params={'login_challenge': challenge}, json=reject_login_config) if response.ok: return response.json() def reject_consent_request(self, challenge, reject_consent_config): response = self.request( - 'PUT', '/oauth2/auth/requests/consent/{}/reject'.format(challenge), + 'PUT', '/oauth2/auth/requests/consent/reject', params={'consent_challenge': challenge}, json=reject_consent_config) if response.ok: return response.json() def revokes_all_previous_consent_session_user(self, user): response = self.request( - 'DELETE', '/oauth2/auth/sessions/consent/{}' - .format(user)) + 'DELETE', '/oauth2/auth/sessions/consent', params={'subject': user}) if response.ok: response.json() def revokes_consent_sessions_oAuth2_client(self, user, client): response = self.request( - 'DELETE', '/oauth2/auth/sessions/consent/{}/{}' - .format(user, client)) + 'DELETE', '/oauth2/auth/sessions/consent', params={'subject': user, 'client': client}) return response.ok def lists_all_consent_sessions_user(self, user): response = self.request( - 'GET', '/oauth2/auth/sessions/consent/{}' .format(user)) + 'GET', '/oauth2/auth/sessions/consent', params={'subject': user}) if response.ok: return response.json() @@ -135,8 +133,7 @@ def logs_user_out_deleting_session_cookie(self): def invalidates_users_authentication_session(self, user): response = self.request( - 'DELETE', '/oauth2/auth/sessions/login/{}' .format(user)) - print(response) + 'DELETE', '/oauth2/auth/sessions/login', params={'subject': user}) if response.ok: return response diff --git a/tests/conftest.py b/tests/conftest.py index ba77c8a..a8f707e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -18,7 +18,7 @@ def hydra_fixture(): client = docker.from_env() container_hydra_server = client.containers.run( - 'oryd/hydra:v1.0.0-beta.9', + 'oryd/hydra:v1.0.0-rc.11', name='hydra_server', detach=True, environment={'DATABASE_URL': 'memory'}, @@ -32,7 +32,7 @@ def hydra_fixture(): break container_add_client = client.containers.run( - 'oryd/hydra:v1.0.0-beta.9', + 'oryd/hydra:v1.0.0-rc.11', environment={'HYDRA_ADMIN_URL': 'http://hydra:4445'}, detach=True, links={'hydra_server': 'hydra'}, diff --git a/tests/test_oauth2.py b/tests/test_oauth2.py index f5339d0..f006c67 100644 --- a/tests/test_oauth2.py +++ b/tests/test_oauth2.py @@ -108,8 +108,8 @@ def test_can_get_login_request(self, request): c.get_login_request(self.challenge) request.assert_called_with( 'GET', - 'http://localhost:4445/oauth2/auth/requests/login/{}' - .format(self.challenge)) + 'http://localhost:4445/oauth2/auth/requests/login', + params={'login_challenge': self.challenge}) @patch('requests.request') def test_can_accept_login_request(self, request): @@ -122,8 +122,8 @@ def test_can_accept_login_request(self, request): c.accept_login_request(self.challenge, accept_config) request.assert_called_with( 'PUT', - 'http://localhost:4445/oauth2/auth/requests/login/{}/accept' - .format(self.challenge), + 'http://localhost:4445/oauth2/auth/requests/login/accept', + params={'login_challenge': self.challenge}, json=accept_config) @patch('requests.request') @@ -132,8 +132,8 @@ def test_can_get_consent_request(self, request): c.get_consent_request(self.challenge) request.assert_called_with( 'GET', - 'http://localhost:4445/oauth2/auth/requests/consent/{}' - .format(self.challenge)) + 'http://localhost:4445/oauth2/auth/requests/consent', + params={'consent_challenge': self.challenge}) @patch('requests.request') def test_can_accept_consent_request(self, request): @@ -148,8 +148,8 @@ def test_can_accept_consent_request(self, request): c.accept_consent_request(self.challenge, accept_config) request.assert_called_with( 'PUT', - 'http://localhost:4445/oauth2/auth/requests/consent/{}/accept' - .format(self.challenge), + 'http://localhost:4445/oauth2/auth/requests/consent/accept', + params={'consent_challenge': self.challenge}, json=accept_config) @patch('requests.request') @@ -165,8 +165,8 @@ def test_can_reject_login_request(self, request): c.reject_login_request(self.challenge, reject_config) request.assert_called_once_with( 'PUT', - 'http://localhost:4445/oauth2/auth/requests/login/{}/reject' - .format(self.challenge), + 'http://localhost:4445/oauth2/auth/requests/login/reject', + params={'login_challenge': self.challenge}, json=reject_config) @patch('requests.request') @@ -182,8 +182,8 @@ def test_can_reject_consent_request(self, request): c.reject_consent_request(self.challenge, reject_config) request.assert_called_once_with( 'PUT', - 'http://localhost:4445/oauth2/auth/requests/consent/{}/reject' - .format(self.challenge), + 'http://localhost:4445/oauth2/auth/requests/consent/reject', + params={'consent_challenge': self.challenge}, json=reject_config) @patch('requests.request') @@ -193,8 +193,8 @@ def test_can_revokes_all_previous_consent_session_user(self, request): c.revokes_all_previous_consent_session_user(user) request.assert_called_once_with( 'DELETE', - 'http://localhost:4445/oauth2/auth/sessions/consent/{}' - .format(user) + 'http://localhost:4445/oauth2/auth/sessions/consent', + params={'subject': user} ) @patch('requests.request') @@ -205,8 +205,8 @@ def test_can_revoke_consent_sessions_oAuth2_client(self, request): c.revokes_consent_sessions_oAuth2_client(user, c.client) request.assert_called_with( 'DELETE', - 'http://localhost:4445/oauth2/auth/sessions/consent/{}/{}' - .format(user, client)) + 'http://localhost:4445/oauth2/auth/sessions/consent', + params={'subject': user, 'client': client}) @patch('requests.request') def test_can_lists_all_consent_sessions_user(self, request): @@ -215,8 +215,8 @@ def test_can_lists_all_consent_sessions_user(self, request): c.lists_all_consent_sessions_user(user) request.assert_called_once_with( 'GET', - 'http://localhost:4445/oauth2/auth/sessions/consent/{}' - .format(user)) + 'http://localhost:4445/oauth2/auth/sessions/consent', + params={'subject': user}) @patch('requests.request') def test_can_logs_user_out_deleting_session_cookie(self, request): From 1efaf3302ca27f4d5f51a9ac65a0b6479362bafb Mon Sep 17 00:00:00 2001 From: Wouter Westendorp Date: Fri, 3 May 2019 15:54:20 +0200 Subject: [PATCH 2/3] fix pep-8 errors --- hydra/oauth2.py | 24 ++++++++++++++++-------- setup.py | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/hydra/oauth2.py b/hydra/oauth2.py index 91018b0..a0898ee 100644 --- a/hydra/oauth2.py +++ b/hydra/oauth2.py @@ -70,53 +70,61 @@ def revoke_token(self, token): def get_login_request(self, challenge): response = self.request( - 'GET', '/oauth2/auth/requests/login', params={'login_challenge': challenge}) + 'GET', '/oauth2/auth/requests/login', + params={'login_challenge': challenge}) if response.ok: return response.json() def get_consent_request(self, challenge): response = self.request( - 'GET', '/oauth2/auth/requests/consent', params={'consent_challenge': challenge}) + 'GET', '/oauth2/auth/requests/consent', + params={'consent_challenge': challenge}) if response.ok: return response.json() def accept_login_request(self, challenge, accept_login_config): response = self.request( - 'PUT', '/oauth2/auth/requests/login/accept', params={'login_challenge': challenge}, + 'PUT', '/oauth2/auth/requests/login/accept', + params={'login_challenge': challenge}, json=accept_login_config) if response.ok: return response.json() def accept_consent_request(self, challenge, accept_consent_config): response = self.request( - 'PUT', '/oauth2/auth/requests/consent/accept', params={'consent_challenge': challenge}, + 'PUT', '/oauth2/auth/requests/consent/accept', + params={'consent_challenge': challenge}, json=accept_consent_config) if response.ok: return response.json() def reject_login_request(self, challenge, reject_login_config): response = self.request( - 'PUT', '/oauth2/auth/requests/login/reject', params={'login_challenge': challenge}, + 'PUT', '/oauth2/auth/requests/login/reject', + params={'login_challenge': challenge}, json=reject_login_config) if response.ok: return response.json() def reject_consent_request(self, challenge, reject_consent_config): response = self.request( - 'PUT', '/oauth2/auth/requests/consent/reject', params={'consent_challenge': challenge}, + 'PUT', '/oauth2/auth/requests/consent/reject', + params={'consent_challenge': challenge}, json=reject_consent_config) if response.ok: return response.json() def revokes_all_previous_consent_session_user(self, user): response = self.request( - 'DELETE', '/oauth2/auth/sessions/consent', params={'subject': user}) + 'DELETE', '/oauth2/auth/sessions/consent', + params={'subject': user}) if response.ok: response.json() def revokes_consent_sessions_oAuth2_client(self, user, client): response = self.request( - 'DELETE', '/oauth2/auth/sessions/consent', params={'subject': user, 'client': client}) + 'DELETE', '/oauth2/auth/sessions/consent', + params={'subject': user, 'client': client}) return response.ok def lists_all_consent_sessions_user(self, user): diff --git a/setup.py b/setup.py index cad0810..9e44e89 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ name='hydra-sdk', description='Go Hydra SDK for Python', keywords='hydra oauth2 openid go', - version='1.0.1', + version='1.0.2', packages=['hydra'], install_requires=[ 'requests==2.21.0', From 1a2875ee604c56b997037c2f7ff66ab8555f302e Mon Sep 17 00:00:00 2001 From: Wouter Westendorp Date: Fri, 3 May 2019 15:58:31 +0200 Subject: [PATCH 3/3] pep-8 --- hydra/oauth2.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hydra/oauth2.py b/hydra/oauth2.py index a0898ee..99c32da 100644 --- a/hydra/oauth2.py +++ b/hydra/oauth2.py @@ -70,21 +70,21 @@ def revoke_token(self, token): def get_login_request(self, challenge): response = self.request( - 'GET', '/oauth2/auth/requests/login', + 'GET', '/oauth2/auth/requests/login', params={'login_challenge': challenge}) if response.ok: return response.json() def get_consent_request(self, challenge): response = self.request( - 'GET', '/oauth2/auth/requests/consent', + 'GET', '/oauth2/auth/requests/consent', params={'consent_challenge': challenge}) if response.ok: return response.json() def accept_login_request(self, challenge, accept_login_config): response = self.request( - 'PUT', '/oauth2/auth/requests/login/accept', + 'PUT', '/oauth2/auth/requests/login/accept', params={'login_challenge': challenge}, json=accept_login_config) if response.ok: @@ -92,7 +92,7 @@ def accept_login_request(self, challenge, accept_login_config): def accept_consent_request(self, challenge, accept_consent_config): response = self.request( - 'PUT', '/oauth2/auth/requests/consent/accept', + 'PUT', '/oauth2/auth/requests/consent/accept', params={'consent_challenge': challenge}, json=accept_consent_config) if response.ok: @@ -100,7 +100,7 @@ def accept_consent_request(self, challenge, accept_consent_config): def reject_login_request(self, challenge, reject_login_config): response = self.request( - 'PUT', '/oauth2/auth/requests/login/reject', + 'PUT', '/oauth2/auth/requests/login/reject', params={'login_challenge': challenge}, json=reject_login_config) if response.ok: @@ -108,7 +108,7 @@ def reject_login_request(self, challenge, reject_login_config): def reject_consent_request(self, challenge, reject_consent_config): response = self.request( - 'PUT', '/oauth2/auth/requests/consent/reject', + 'PUT', '/oauth2/auth/requests/consent/reject', params={'consent_challenge': challenge}, json=reject_consent_config) if response.ok: @@ -116,14 +116,14 @@ def reject_consent_request(self, challenge, reject_consent_config): def revokes_all_previous_consent_session_user(self, user): response = self.request( - 'DELETE', '/oauth2/auth/sessions/consent', + 'DELETE', '/oauth2/auth/sessions/consent', params={'subject': user}) if response.ok: response.json() def revokes_consent_sessions_oAuth2_client(self, user, client): response = self.request( - 'DELETE', '/oauth2/auth/sessions/consent', + 'DELETE', '/oauth2/auth/sessions/consent', params={'subject': user, 'client': client}) return response.ok