Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cloudshell/rest/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion cloudshell/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '8.2.0.0'
__version__ = '8.2.1.0'
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 8.2.0.0
current_version = 8.2.1.0
commit = True
tag = False
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.(?P<build>\d+)
Expand Down
18 changes: 7 additions & 11 deletions tests/test_packaging_rest_api_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,36 +186,32 @@ 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')
mock_opener = Mock()
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')