From 95d77c0eecbd8c0a498387cc6571a5bc70632c12 Mon Sep 17 00:00:00 2001 From: johnathanvidu Date: Tue, 10 Oct 2017 12:22:28 +0300 Subject: [PATCH 1/2] fixing get_shell to raise FeatureUnavailable on when CS return http status 405 (Method Not Allowed) --- cloudshell/rest/api.py | 2 +- tests/test_packaging_rest_api_client.py | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/cloudshell/rest/api.py b/cloudshell/rest/api.py index bdb7e24..0e3a8fc 100644 --- a/cloudshell/rest/api.py +++ b/cloudshell/rest/api.py @@ -89,7 +89,7 @@ def get_shell(self, shell_name): response = get(url, headers={'Authorization': 'Basic ' + self.token}) - if response.status_code == 404: # Feature unavailable (probably due to cloudshell version below 8.2) + if response.status_code == 404 or response.status_code == 405: # Feature unavailable (probably due to cloudshell version below 8.2) raise FeatureUnavailable() if response.status_code == 400: # means shell not found diff --git a/tests/test_packaging_rest_api_client.py b/tests/test_packaging_rest_api_client.py index 5da9564..41f0ba0 100644 --- a/tests/test_packaging_rest_api_client.py +++ b/tests/test_packaging_rest_api_client.py @@ -186,7 +186,7 @@ def test_get_shell_feature_unavailable_raises_error(self, mock_get, mock_build_o @patch('cloudshell.rest.api.urllib2.build_opener') @patch('cloudshell.rest.api.get') - def test_get_shell_shell_not_found_raises_error(self, mock_get, mock_build_opener): + def test_get_shell_feature_unavailable_http_status_405_raises_error(self, mock_get, mock_build_opener): # Arrange mock_url = Mock() mock_url.read = Mock(return_value='TOKEN') @@ -194,28 +194,24 @@ def test_get_shell_shell_not_found_raises_error(self, mock_get, mock_build_opene mock_opener.open = Mock(return_value=mock_url) mock_build_opener.return_value = mock_opener mock_get.return_value = Response() - mock_get.return_value.status_code = 400 # Bad Request + mock_get.return_value.status_code = 405 # Method Not Allowed # Act Assert client = PackagingRestApiClient('SERVER', 9000, 'USER', 'PASS', 'Global') - self.assertRaises(ShellNotFoundException, client.get_shell, 'shell') + self.assertRaises(FeatureUnavailable, client.get_shell, 'shell') @patch('cloudshell.rest.api.urllib2.build_opener') @patch('cloudshell.rest.api.get') - def test_get_shell_unexpected_error_raises_error(self, mock_get, mock_build_opener): + def test_get_shell_shell_not_found_raises_error(self, mock_get, mock_build_opener): # Arrange mock_url = Mock() mock_url.read = Mock(return_value='TOKEN') mock_opener = Mock() mock_opener.open = Mock(return_value=mock_url) mock_build_opener.return_value = mock_opener - response_obj = type('', (Response,), {"text": 'amazing error'})() - mock_get.return_value = response_obj - mock_get.return_value.status_code = 405 # Method Not Allowed + mock_get.return_value = Response() + mock_get.return_value.status_code = 400 # Bad Request # Act Assert client = PackagingRestApiClient('SERVER', 9000, 'USER', 'PASS', 'Global') - try: - client.get_shell('shell') - except Exception as e: - self.assertEqual(e.message, 'amazing error') + self.assertRaises(ShellNotFoundException, client.get_shell, 'shell') \ No newline at end of file From 0c56e27c23b848f92d46ad8dd5d4caa6cdc1fd31 Mon Sep 17 00:00:00 2001 From: johnathanvidu Date: Tue, 10 Oct 2017 12:22:43 +0300 Subject: [PATCH 2/2] =?UTF-8?q?Bump=20version:=208.2.0.0=20=E2=86=92=208.2?= =?UTF-8?q?.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloudshell/version.py | 2 +- setup.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cloudshell/version.py b/cloudshell/version.py index 94786e7..db5e569 100644 --- a/cloudshell/version.py +++ b/cloudshell/version.py @@ -1 +1 @@ -__version__ = '8.2.0.0' +__version__ = '8.2.1.0' diff --git a/setup.cfg b/setup.cfg index 86c2220..5f7df04 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 8.2.0.0 +current_version = 8.2.1.0 commit = True tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)\.(?P\d+)