Files
deb-python-dcos/cli/tests/unit/test_node.py
Cody Maloney 3f26840087 improve tox config: TeamCity test output, flake8-import-sort, pep8-naming (#780)
* Subprocess().Popen() -> Subprocess().popen() per PEP-8 conventions
* Move cosmos_error out of class because it isn't a member function per PEP-8
* Add pep8-naming plugin to flake8 so PEP-8 errors are caught during syntax checks
2016-10-05 11:58:02 -07:00

192 lines
5.7 KiB
Python

import mock
import pytest
import dcoscli.node.main as main
from dcos.errors import DCOSException
@mock.patch('dcos.cosmospackage.Cosmos')
def test_check_version_fail(mock_cosmos):
"""
Test _check_3dt_version(), should throw DCOSException exception.
"""
mock_cosmos().enabled.return_value = True
mock_cosmos().has_capability.return_value = False
with pytest.raises(DCOSException) as excinfo:
main._check_3dt_version()
assert str(excinfo.value) == (
'DC/OS backend does not support diagnostics capabilities in this '
'version. Must be DC/OS >= 1.8')
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcos.http.get')
def test_check_version_success(mock_get, mock_cosmos):
"""
Test _check_3dt_version(), should not fail.
"""
mock_cosmos().enabled.return_value = True
m = mock.MagicMock()
m.json.return_value = {
'capabilities': [{'name': 'SUPPORT_CLUSTER_REPORT'}]
}
mock_get.return_value = m
main._check_3dt_version()
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcos.http.get')
@mock.patch('dcoscli.node.main._do_diagnostics_request')
def test_node_diagnostics_create(mock_do_diagnostics_request, mock_get,
mock_cosmos):
"""
Test _bundle_create(), should not fail.
"""
mock_cosmos().enabled.return_value = True
m = mock.MagicMock()
m.json.return_value = {
'capabilities': [{'name': 'SUPPORT_CLUSTER_REPORT'}]
}
mock_get.return_value = m
mock_do_diagnostics_request.return_value = {
'status': 'OK',
'extra': {
'bundle_name': 'bundle.zip'
}
}
main._bundle_create(['10.10.0.1'])
mock_do_diagnostics_request.assert_called_once_with(
'/system/health/v1/report/diagnostics/create',
'POST',
json={'nodes': ['10.10.0.1']})
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcos.http.get')
@mock.patch('dcoscli.node.main._do_diagnostics_request')
def test_node_diagnostics_delete(mock_do_diagnostics_request, mock_get,
mock_cosmos):
"""
Test _bundle_delete(), should not fail
"""
mock_cosmos().enabled.return_value = True
m = mock.MagicMock()
m.json.return_value = {
'capabilities': [{'name': 'SUPPORT_CLUSTER_REPORT'}]
}
mock_get.return_value = m
mock_do_diagnostics_request.return_value = {
'status': 'OK'
}
main._bundle_delete('bundle.zip')
mock_do_diagnostics_request.assert_called_once_with(
'/system/health/v1/report/diagnostics/delete/bundle.zip',
'POST'
)
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcos.http.get')
@mock.patch('dcoscli.node.main._do_diagnostics_request')
def test_node_diagnostics_list(mock_do_diagnostics_request, mock_get,
mock_cosmos):
"""
Test _bundle_manage(), should not fail
"""
mock_cosmos().enabled.return_value = True
m = mock.MagicMock()
m.json.return_value = {
'capabilities': [{'name': 'SUPPORT_CLUSTER_REPORT'}]
}
mock_get.return_value = m
mock_do_diagnostics_request.return_value = {
'127.0.0.1': [
{
'file_name': 'bundle.zip',
'file_size': 123
}
]
}
# _bundle_manage(list_bundles, status, cancel, json)
main._bundle_manage(True, False, False, False)
mock_do_diagnostics_request.assert_called_once_with(
'/system/health/v1/report/diagnostics/list/all',
'GET'
)
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcos.http.get')
@mock.patch('dcoscli.node.main._do_diagnostics_request')
def test_node_diagnostics_status(mock_do_diagnostics_request, mock_get,
mock_cosmos):
"""
Test _bundle_manage(), should not fail
"""
mock_cosmos().enabled.return_value = True
m = mock.MagicMock()
m.json.return_value = {
'capabilities': [{'name': 'SUPPORT_CLUSTER_REPORT'}]
}
mock_get.return_value = m
mock_do_diagnostics_request.return_value = {
'host1': {
'prop1': 'value1'
}
}
# _bundle_manage(list_bundles, status, cancel, json)
main._bundle_manage(False, True, False, False)
mock_do_diagnostics_request.assert_called_once_with(
'/system/health/v1/report/diagnostics/status/all',
'GET'
)
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcos.http.get')
@mock.patch('dcoscli.node.main._do_diagnostics_request')
def test_node_diagnostics_cancel(mock_do_diagnostics_request, mock_get,
mock_cosmos):
"""
Test _bundle_manage(), should not fail
"""
mock_cosmos().enabled.return_value = True
m = mock.MagicMock()
m.json.return_value = {
'capabilities': [{'name': 'SUPPORT_CLUSTER_REPORT'}]
}
mock_get.return_value = m
mock_do_diagnostics_request.return_value = {
'status': 'success'
}
# _bundle_manage(list_bundles, status, cancel, json)
main._bundle_manage(False, False, True, False)
mock_do_diagnostics_request.assert_called_once_with(
'/system/health/v1/report/diagnostics/cancel',
'POST'
)
@mock.patch('dcos.cosmospackage.Cosmos')
@mock.patch('dcoscli.node.main._do_request')
@mock.patch('dcoscli.node.main._get_bundle_list')
def test_node_diagnostics_download(mock_get_diagnostics_list, mock_do_request,
mock_cosmos):
mock_cosmos().enabled.return_value = True
mock_get_diagnostics_list.return_value = [('bundle.zip', 123)]
main._bundle_download('bundle.zip', None)
mock_do_request.assert_called_with(
'/system/health/v1/report/diagnostics/serve/bundle.zip', 'GET',
stream=True)