summaryrefslogtreecommitdiff
path: root/tests/unittests/cmd/test_cloud_id.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unittests/cmd/test_cloud_id.py')
-rw-r--r--tests/unittests/cmd/test_cloud_id.py72
1 files changed, 57 insertions, 15 deletions
diff --git a/tests/unittests/cmd/test_cloud_id.py b/tests/unittests/cmd/test_cloud_id.py
index 37f1df2c..80600555 100644
--- a/tests/unittests/cmd/test_cloud_id.py
+++ b/tests/unittests/cmd/test_cloud_id.py
@@ -5,11 +5,52 @@
import pytest
from cloudinit import util
-from cloudinit.cmd import cloud_id
+from cloudinit.cmd import cloud_id, status
+from cloudinit.helpers import Paths
from tests.unittests.helpers import mock
M_PATH = "cloudinit.cmd.cloud_id."
+STATUS_DETAILS_DONE = status.StatusDetails(
+ status.UXAppStatus.DONE,
+ status.UXAppBootStatusCode.UNKNOWN,
+ "DataSourceNoCloud somedetail",
+ [],
+ "",
+ "nocloud",
+)
+STATUS_DETAILS_DISABLED = status.StatusDetails(
+ status.UXAppStatus.DISABLED,
+ status.UXAppBootStatusCode.DISABLED_BY_GENERATOR,
+ "DataSourceNoCloud somedetail",
+ [],
+ "",
+ "",
+)
+STATUS_DETAILS_NOT_RUN = status.StatusDetails(
+ status.UXAppStatus.NOT_RUN,
+ status.UXAppBootStatusCode.UNKNOWN,
+ "",
+ [],
+ "",
+ "",
+)
+STATUS_DETAILS_RUNNING = status.StatusDetails(
+ status.UXAppStatus.RUNNING,
+ status.UXAppBootStatusCode.UNKNOWN,
+ "",
+ [],
+ "",
+ "",
+)
+
+
+@pytest.fixture(autouse=True)
+def setup_mocks(mocker):
+ mocker.patch(
+ "cloudinit.cmd.cloud_id.read_cfg_paths", return_value=Paths({})
+ )
+
class TestCloudId:
def test_cloud_id_arg_parser_defaults(self):
@@ -43,7 +84,7 @@ class TestCloudId:
self, get_status_details, tmpdir, capsys
):
"""Exit error when the provided instance-data.json does not exist."""
- get_status_details.return_value = cloud_id.UXAppStatus.DONE, "n/a", ""
+ get_status_details.return_value = STATUS_DETAILS_DONE
instance_data = tmpdir.join("instance-data.json")
cmd = ["cloud-id", "--instance-data", instance_data.strpath]
with mock.patch("sys.argv", cmd):
@@ -58,7 +99,7 @@ class TestCloudId:
self, get_status_details, tmpdir, capsys
):
"""Exit error when the provided instance-data.json is not json."""
- get_status_details.return_value = cloud_id.UXAppStatus.DONE, "n/a", ""
+ get_status_details.return_value = STATUS_DETAILS_DONE
instance_data = tmpdir.join("instance-data.json")
cmd = ["cloud-id", "--instance-data", instance_data.strpath]
instance_data.write("{")
@@ -78,7 +119,7 @@ class TestCloudId:
):
"""Report canonical cloud-id from cloud_name in instance-data."""
instance_data = tmpdir.join("instance-data.json")
- get_status_details.return_value = cloud_id.UXAppStatus.DONE, "n/a", ""
+ get_status_details.return_value = STATUS_DETAILS_DONE
instance_data.write(
'{"v1": {"cloud_name": "mycloud", "region": "somereg"}}',
)
@@ -95,7 +136,7 @@ class TestCloudId:
self, get_status_details, tmpdir, capsys
):
"""Report long cloud-id format from cloud_name and region."""
- get_status_details.return_value = cloud_id.UXAppStatus.DONE, "n/a", ""
+ get_status_details.return_value = STATUS_DETAILS_DONE
instance_data = tmpdir.join("instance-data.json")
instance_data.write(
'{"v1": {"cloud_name": "mycloud", "region": "somereg"}}',
@@ -113,7 +154,7 @@ class TestCloudId:
self, get_status_details, tmpdir, capsys
):
"""Report discovered canonical cloud_id when region lookup matches."""
- get_status_details.return_value = cloud_id.UXAppStatus.DONE, "n/a", ""
+ get_status_details.return_value = STATUS_DETAILS_DONE
instance_data = tmpdir.join("instance-data.json")
instance_data.write(
'{"v1": {"cloud_name": "aws", "region": "cn-north-1",'
@@ -132,7 +173,7 @@ class TestCloudId:
self, get_status_details, tmpdir, capsys
):
"""Report v1 instance-data content with cloud_id when --json set."""
- get_status_details.return_value = cloud_id.UXAppStatus.DONE, "n/a", ""
+ get_status_details.return_value = STATUS_DETAILS_DONE
instance_data = tmpdir.join("instance-data.json")
instance_data.write(
'{"v1": {"cloud_name": "unknown", "region": "dfw",'
@@ -151,26 +192,27 @@ class TestCloudId:
with mock.patch("sys.argv", cmd):
with pytest.raises(SystemExit) as context_manager:
cloud_id.main()
- out, _err = capsys.readouterr()
+ out, err = capsys.readouterr()
+ assert "DEPRECATED: Use: cloud-init query v1\n" == err
assert 0 == context_manager.value.code
assert expected + "\n" == out
@pytest.mark.parametrize(
- "status, exit_code",
+ "details, exit_code",
(
- (cloud_id.UXAppStatus.DISABLED, 2),
- (cloud_id.UXAppStatus.NOT_RUN, 3),
- (cloud_id.UXAppStatus.RUNNING, 0),
+ (STATUS_DETAILS_DISABLED, 2),
+ (STATUS_DETAILS_NOT_RUN, 3),
+ (STATUS_DETAILS_RUNNING, 0),
),
)
@mock.patch(M_PATH + "get_status_details")
def test_cloud_id_unique_exit_codes_for_status(
- self, get_status_details, status, exit_code, tmpdir, capsys
+ self, get_status_details, details, exit_code, tmpdir, capsys
):
"""cloud-id returns unique exit codes for status."""
- get_status_details.return_value = status, "n/a", ""
+ get_status_details.return_value = details
instance_data = tmpdir.join("instance-data.json")
- if status == cloud_id.UXAppStatus.RUNNING:
+ if details.status == cloud_id.UXAppStatus.RUNNING:
instance_data.write("{}")
cmd = ["cloud-id", "--instance-data", instance_data.strpath, "--json"]
with mock.patch("sys.argv", cmd):