summaryrefslogtreecommitdiffstats
path: root/ansible_collections/purestorage/fusion/tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-18 05:52:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-18 05:52:22 +0000
commit38b7c80217c4e72b1d8988eb1e60bb6e77334114 (patch)
tree356e9fd3762877d07cde52d21e77070aeff7e789 /ansible_collections/purestorage/fusion/tests
parentAdding upstream version 7.7.0+dfsg. (diff)
downloadansible-38b7c80217c4e72b1d8988eb1e60bb6e77334114.tar.xz
ansible-38b7c80217c4e72b1d8988eb1e60bb6e77334114.zip
Adding upstream version 9.4.0+dfsg.upstream/9.4.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/purestorage/fusion/tests')
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_api_client.py15
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_array.py25
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_az.py3
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_hap.py3
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_info.py1
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_nig.py5
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_pg.py5
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_pp.py21
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_ra.py2
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_region.py4
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_sc.py4
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_se.py5
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_ss.py4
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_tenant.py4
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_ts.py4
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/test_fusion_volume.py150
-rw-r--r--ansible_collections/purestorage/fusion/tests/functional/utils.py15
-rw-r--r--ansible_collections/purestorage/fusion/tests/helpers.py8
-rw-r--r--ansible_collections/purestorage/fusion/tests/unit/mocks/operation_mock.py14
-rw-r--r--ansible_collections/purestorage/fusion/tests/unit/module_utils/test_parsing.py47
-rw-r--r--ansible_collections/purestorage/fusion/tests/unit/modules/test_fusion_az.py10
21 files changed, 311 insertions, 38 deletions
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_api_client.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_api_client.py
index 77f753656..295c62bd6 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_api_client.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_api_client.py
@@ -147,7 +147,19 @@ def test_api_client_create(m_im_api, current_clients):
api_obj = MagicMock()
api_obj.list_api_clients = MagicMock(return_value=current_clients)
api_obj.get_api_client = MagicMock(side_effect=purefusion.rest.ApiException)
- api_obj.create_api_client = MagicMock()
+ api_obj.create_api_client = MagicMock(
+ return_value=FakeApiClient(
+ "321321",
+ "self_link_value",
+ "client_test",
+ "client_test",
+ "apikey:name:test",
+ "321321",
+ 321321,
+ 321321,
+ "321321",
+ )
+ )
api_obj.delete_api_client = MagicMock()
m_im_api.return_value = api_obj
@@ -156,6 +168,7 @@ def test_api_client_create(m_im_api, current_clients):
fusion_api_client.main()
assert exc.value.changed is True
+ assert exc.value.id == "321321"
# check api was called correctly
api_obj.list_api_clients.assert_called_once_with()
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_array.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_array.py
index 0343bb1dc..6af1e1136 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_array.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_array.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -46,6 +47,7 @@ def module_args():
"region": "region1",
"availability_zone": "az1",
"appliance_id": "23984573498573",
+ "apartment_id": "76586785687",
"host_name": "array_1",
"hardware_type": "flash-array-x",
"maintenance_mode": False,
@@ -65,7 +67,7 @@ def current_array(module_args):
"region": module_args["region"],
"availability_zone": module_args["availability_zone"],
"appliance_id": module_args["appliance_id"],
- "apartment_id": "76586785687",
+ "apartment_id": module_args["apartment_id"],
"host_name": module_args["host_name"],
"hardware_type": module_args["hardware_type"],
"maintenance_mode": module_args["maintenance_mode"],
@@ -332,7 +334,7 @@ def test_array_create(m_array_api, m_op_api, hw_type, main_m, unav_m, module_arg
"region": module_args["region"],
"availability_zone": module_args["availability_zone"],
"appliance_id": module_args["appliance_id"],
- "apartment_id": "76586785687",
+ "apartment_id": module_args["apartment_id"],
"host_name": module_args["host_name"],
"hardware_type": module_args["hardware_type"],
"maintenance_mode": not module_args[
@@ -364,6 +366,7 @@ def test_array_create(m_array_api, m_op_api, hw_type, main_m, unav_m, module_arg
fusion_array.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_array.assert_called_with(
@@ -378,6 +381,7 @@ def test_array_create(m_array_api, m_op_api, hw_type, main_m, unav_m, module_arg
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -429,7 +433,7 @@ def test_array_create_without_display_name(m_array_api, m_op_api, module_args):
"region": module_args["region"],
"availability_zone": module_args["availability_zone"],
"appliance_id": module_args["appliance_id"],
- "apartment_id": "76586785687",
+ "apartment_id": module_args["apartment_id"],
"host_name": module_args["host_name"],
"hardware_type": module_args["hardware_type"],
"maintenance_mode": not module_args["maintenance_mode"],
@@ -457,6 +461,7 @@ def test_array_create_without_display_name(m_array_api, m_op_api, module_args):
fusion_array.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_array.assert_called_with(
@@ -471,6 +476,7 @@ def test_array_create_without_display_name(m_array_api, m_op_api, module_args):
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -554,6 +560,7 @@ def test_array_create_exception(
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -583,7 +590,7 @@ def test_array_create_second_exception(
"region": module_args["region"],
"availability_zone": module_args["availability_zone"],
"appliance_id": module_args["appliance_id"],
- "apartment_id": "76586785687",
+ "apartment_id": module_args["apartment_id"],
"host_name": module_args["host_name"],
"hardware_type": module_args["hardware_type"],
"maintenance_mode": not module_args["maintenance_mode"],
@@ -623,6 +630,7 @@ def test_array_create_second_exception(
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -667,6 +675,7 @@ def test_array_create_op_fails(m_array_api, m_op_api, module_args):
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -687,7 +696,7 @@ def test_array_create_second_op_fails(m_array_api, m_op_api, module_args):
"region": module_args["region"],
"availability_zone": module_args["availability_zone"],
"appliance_id": module_args["appliance_id"],
- "apartment_id": "76586785687",
+ "apartment_id": module_args["apartment_id"],
"host_name": module_args["host_name"],
"hardware_type": module_args["hardware_type"],
"maintenance_mode": not module_args["maintenance_mode"],
@@ -729,6 +738,7 @@ def test_array_create_second_op_fails(m_array_api, m_op_api, module_args):
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -787,6 +797,7 @@ def test_array_create_op_exception(
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -816,7 +827,7 @@ def test_array_create_second_op_exception(
"region": module_args["region"],
"availability_zone": module_args["availability_zone"],
"appliance_id": module_args["appliance_id"],
- "apartment_id": "76586785687",
+ "apartment_id": module_args["apartment_id"],
"host_name": module_args["host_name"],
"hardware_type": module_args["hardware_type"],
"maintenance_mode": not module_args["maintenance_mode"],
@@ -858,6 +869,7 @@ def test_array_create_second_op_exception(
host_name=module_args["host_name"],
name=module_args["name"],
appliance_id=module_args["appliance_id"],
+ apartment_id=module_args["apartment_id"],
),
availability_zone_name=module_args["availability_zone"],
region_name=module_args["region"],
@@ -899,6 +911,7 @@ def test_array_update(m_array_api, m_op_api, module_args, current_array):
fusion_array.main()
assert exc.value.changed
+ assert exc.value.id == current_array["id"]
# check api was called correctly
api_obj.get_array.assert_called_with(
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_az.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_az.py
index c49f958a2..d19e41827 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_az.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_az.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -139,6 +140,7 @@ def test_az_create(m_az_api, m_op_api):
fusion_az.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
api_obj.get_region.get_availability_zone(
availability_zone_name=module_args["name"],
@@ -186,6 +188,7 @@ def test_az_create_without_display_name(m_az_api, m_op_api):
fusion_az.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
api_obj.get_region.get_availability_zone(
availability_zone_name=module_args["name"],
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_hap.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_hap.py
index 6491c71da..258ca2034 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_hap.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_hap.py
@@ -23,6 +23,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -295,6 +296,7 @@ def test_hap_create(m_hap_api, m_op_api, module_args, current_hap_list):
fusion_hap.main()
assert exc.value.changed is True
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.list_host_access_policies.assert_called_once_with()
@@ -341,6 +343,7 @@ def test_hap_create_without_display_name(
fusion_hap.main()
assert exc.value.changed is True
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.list_host_access_policies.assert_called_once_with()
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_info.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_info.py
index 784b550cd..c542cddc0 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_info.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_info.py
@@ -847,6 +847,7 @@ RESP_VS = purefusion.VolumeSnapshotList(
@patch.dict(os.environ, {"TZ": "UTC"})
+@patch.dict(os.environ, {"LC_TIME": "en_US.utf8"})
@patch("fusion.DefaultApi")
@patch("fusion.IdentityManagerApi")
@patch("fusion.ProtectionPoliciesApi")
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_nig.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_nig.py
index 3a7b7ca5c..e8a2eb0ac 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_nig.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_nig.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -236,6 +237,7 @@ def test_nig_create(m_nig_api, m_op_api):
fusion_nig.main()
assert exc.value.changed is True
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_network_interface_group.assert_called_once_with(
@@ -299,6 +301,7 @@ def test_nig_create_without_display_name(m_nig_api, m_op_api):
fusion_nig.main()
assert exc.value.changed is True
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_network_interface_group.assert_called_once_with(
@@ -362,6 +365,7 @@ def test_nig_create_without_gateway(m_nig_api, m_op_api):
fusion_nig.main()
assert exc.value.changed is True
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_network_interface_group.assert_called_once_with(
@@ -631,6 +635,7 @@ def test_nig_update(m_nig_api, m_op_api):
fusion_nig.main()
assert exc.value.changed is True
+ assert exc.value.id == current_nig.id
# check api was called correctly
api_obj.get_network_interface_group.assert_called_once_with(
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pg.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pg.py
index 2f0601e12..2a9419a8e 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pg.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pg.py
@@ -20,6 +20,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
AnsibleExitJson,
AnsibleFailJson,
OperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -221,6 +222,7 @@ def test_pg_create_ok(pg_api_init, op_api_init, module_args_present):
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_pg.main()
assert excinfo.value.changed
+ assert excinfo.value.id == FAKE_RESOURCE_ID
pg_mock.get_placement_group.assert_called_with(
tenant_name="tenant1",
@@ -265,6 +267,7 @@ def test_pg_create_without_display_name_ok(
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_pg.main()
assert excinfo.value.changed
+ assert excinfo.value.id == FAKE_RESOURCE_ID
pg_mock.get_placement_group.assert_called_with(
tenant_name="tenant1",
@@ -450,6 +453,7 @@ def test_pg_create_triggers_update_ok(pg_api_init, op_api_init):
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_pg.main()
assert excinfo.value.changed
+ assert excinfo.value.id == FAKE_RESOURCE_ID
pg_mock.get_placement_group.assert_has_calls(
[
@@ -946,6 +950,7 @@ def test_pg_update_ok(pg_api_init, op_api_init, test_case):
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_pg.main()
assert excinfo.value.changed
+ assert excinfo.value.id == test_case["current_state"].id
pg_mock.get_placement_group.assert_called_with(
tenant_name="tenant1",
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pp.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pp.py
index 519caea40..359d4ca7e 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pp.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_pp.py
@@ -20,6 +20,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
AnsibleExitJson,
AnsibleFailJson,
OperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -39,7 +40,7 @@ basic.AnsibleModule.fail_json = fail_json
def module_args_present():
return {
"name": "protection_policy1",
- "local_rpo": 43,
+ "local_rpo": "1H43M",
"local_retention": "2H",
"state": "present",
"issuer_id": "ABCD1234",
@@ -181,6 +182,7 @@ def test_pp_create_ok(pp_api_init, op_api_init, module_args_present):
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_pp.main()
assert excinfo.value.changed
+ assert excinfo.value.id == FAKE_RESOURCE_ID
pp_mock.get_protection_policy.assert_called_with(
protection_policy_name="protection_policy1"
@@ -190,7 +192,7 @@ def test_pp_create_ok(pp_api_init, op_api_init, module_args_present):
name="protection_policy1",
display_name="some_display_name",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -220,6 +222,7 @@ def test_pp_create_without_display_name_ok(
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_pp.main()
assert excinfo.value.changed
+ assert excinfo.value.id == FAKE_RESOURCE_ID
pp_mock.get_protection_policy.assert_called_with(
protection_policy_name="protection_policy1"
@@ -229,7 +232,7 @@ def test_pp_create_without_display_name_ok(
name="protection_policy1",
display_name="protection_policy1",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -274,7 +277,7 @@ def test_pp_create_exception(
name="protection_policy1",
display_name="protection_policy1",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -310,7 +313,7 @@ def test_pp_create_op_fails(pp_api_init, op_api_init, module_args_present):
name="protection_policy1",
display_name="protection_policy1",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -333,7 +336,7 @@ def test_pp_delete_ok(pp_api_init, op_api_init, module_args_absent):
display_name="protection_policy1_display_name",
self_link="test_self_link",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -385,7 +388,7 @@ def test_pp_delete_exception(
display_name="protection_policy1_display_name",
self_link="test_self_link",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -425,7 +428,7 @@ def test_pp_delete_op_fails(pp_api_init, op_api_init, module_args_absent):
display_name="protection_policy1_display_name",
self_link="test_self_link",
objectives=[
- purefusion.RPO(type="RPO", rpo="PT43M"),
+ purefusion.RPO(type="RPO", rpo="PT103M"),
purefusion.Retention(type="Retention", after="PT120M"),
],
)
@@ -459,7 +462,7 @@ def test_pp_present_not_changed(pp_api_init, op_api_init):
module_args = {
"name": "protection_policy1",
"display_name": "some_display_name",
- "local_rpo": 43,
+ "local_rpo": "43M",
"local_retention": "2H",
"state": "present",
"issuer_id": "ABCD1234",
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ra.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ra.py
index 6456fa7d7..d8cac74a5 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ra.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ra.py
@@ -20,6 +20,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
AnsibleExitJson,
AnsibleFailJson,
OperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -330,6 +331,7 @@ def test_ra_create_ok(ra_api_init, im_api_init, op_api_init, args_and_scope):
with pytest.raises(AnsibleExitJson) as excinfo:
fusion_ra.main()
assert excinfo.value.changed
+ assert excinfo.value.id == FAKE_RESOURCE_ID
ra_mock.list_role_assignments.assert_called_with(
role_name=module_args["role"], principal="principal1"
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_region.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_region.py
index 6b13adecf..42d14d56e 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_region.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_region.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -126,6 +127,7 @@ def test_region_create(m_region_api, m_op_api):
fusion_region.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_region.assert_called_once_with(region_name=module_args["name"])
@@ -168,6 +170,7 @@ def test_region_create_without_display_name(m_region_api, m_op_api):
fusion_region.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_region.assert_called_once_with(region_name=module_args["name"])
@@ -354,6 +357,7 @@ def test_region_update(m_region_api, m_op_api):
fusion_region.main()
assert exc.value.changed
+ assert exc.value.id == current_region["id"]
# check api was called correctly
api_obj.get_region.assert_called_once_with(region_name=module_args["name"])
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_sc.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_sc.py
index 1a2db191c..4d44e7fcb 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_sc.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_sc.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -167,6 +168,7 @@ def test_sc_create(
fusion_sc.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_class.assert_called_once_with(
@@ -224,6 +226,7 @@ def test_sc_create_without_display_name(m_sc_api, m_op_api):
fusion_sc.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_class.assert_called_once_with(
@@ -608,6 +611,7 @@ def test_sc_update(m_sc_api, m_op_api):
fusion_sc.main()
assert exc.value.changed
+ assert exc.value.id == current_sc["id"]
# check api was called correctly
api_obj.get_storage_class.assert_called_once_with(
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_se.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_se.py
index a071190db..9d9559c12 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_se.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_se.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -285,6 +286,7 @@ def test_se_create_iscsi(m_se_api, m_op_api, module_args):
fusion_se.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_endpoint.assert_called_once_with(
@@ -341,6 +343,7 @@ def test_se_create_cbs_azure_iscsi(m_se_api, m_op_api, module_args):
fusion_se.main()
assert exc.value.changed is True
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_endpoint.assert_called_once_with(
@@ -395,6 +398,7 @@ def test_se_create_without_display_name(m_se_api, m_op_api, module_args):
fusion_se.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_endpoint.assert_called_once_with(
@@ -610,6 +614,7 @@ def test_se_update(m_se_api, m_op_api, module_args, current_se):
fusion_se.main()
assert exc.value.changed
+ assert exc.value.id == current_se["id"]
# check api was called correctly
api_obj.get_storage_endpoint.assert_called_once_with(
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ss.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ss.py
index d784b1a52..f1514b8e6 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ss.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ss.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -139,6 +140,7 @@ def test_ss_create(m_ss_api, m_op_api):
fusion_ss.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_service.assert_called_once_with(
@@ -186,6 +188,7 @@ def test_ss_create_without_display_name(m_ss_api, m_op_api):
fusion_ss.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_storage_service.assert_called_once_with(
@@ -434,6 +437,7 @@ def test_ss_update(m_ss_api, m_op_api):
fusion_ss.main()
assert exc.value.changed
+ assert exc.value.id == current_ss["id"]
# check api was called correctly
api_obj.get_storage_service.assert_called_once_with(
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_tenant.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_tenant.py
index bb0521b01..11cd71171 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_tenant.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_tenant.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -126,6 +127,7 @@ def test_tenant_create(m_tenant_api, m_op_api):
fusion_tenant.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_tenant.assert_called_once_with(tenant_name=module_args["name"])
@@ -169,6 +171,7 @@ def test_tenant_create_without_display_name(m_tenant_api, m_op_api):
fusion_tenant.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_tenant.assert_called_once_with(tenant_name=module_args["name"])
@@ -359,6 +362,7 @@ def test_tenant_update(m_tenant_api, m_op_api):
fusion_tenant.main()
assert exc.value.changed
+ assert exc.value.id == current_tenant["id"]
# check api was called correctly
api_obj.get_tenant.assert_called_once_with(tenant_name=module_args["name"])
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ts.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ts.py
index 0d9cbb25a..0e1260858 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ts.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_ts.py
@@ -22,6 +22,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
FailedOperationMock,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -138,6 +139,7 @@ def test_ts_create(m_ts_api, m_op_api):
fusion_ts.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_tenant_space.assert_called_once_with(
@@ -186,6 +188,7 @@ def test_ts_create_without_display_name(m_ts_api, m_op_api):
fusion_ts.main()
assert exc.value.changed
+ assert exc.value.id == FAKE_RESOURCE_ID
# check api was called correctly
api_obj.get_tenant_space.assert_called_once_with(
@@ -399,6 +402,7 @@ def test_ts_update(m_ts_api, m_op_api):
fusion_ts.main()
assert exc.value.changed
+ assert exc.value.id == current_ts["id"]
# check api was called correctly
api_obj.get_tenant_space.assert_called_once_with(
diff --git a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_volume.py b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_volume.py
index 592bda32e..43f69666e 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/test_fusion_volume.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/test_fusion_volume.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
-from unittest.mock import MagicMock, patch
+from unittest.mock import MagicMock, call, patch
import fusion as purefusion
import pytest
@@ -23,6 +23,7 @@ from ansible_collections.purestorage.fusion.tests.functional.utils import (
AnsibleFailJson,
OperationMock,
SuccessfulOperationMock,
+ FAKE_RESOURCE_ID,
exit_json,
fail_json,
set_module_args,
@@ -126,7 +127,7 @@ def destroyed_volume(volume):
),
(
"size",
- "missing required arguments: size",
+ "Either `size`, `source_volume` or `source_snapshot` parameter is required when creating a volume.",
),
],
)
@@ -164,6 +165,18 @@ def test_module_fails_on_missing_parameters(
{"size": "1K"},
"Size is not within the required range",
),
+ (
+ {"source_volume": "vol_name"},
+ "parameters are mutually exclusive: source_volume|source_snapshot|size",
+ ),
+ (
+ {"source_snapshot": "snap_name"},
+ "parameters are mutually exclusive: source_volume|source_snapshot|size",
+ ),
+ (
+ {"source_volume_snapshot": "vol_snap_name"},
+ "parameters are required together: source_snapshot, source_volume_snapshot",
+ ),
],
)
def test_module_fails_on_incorrect_parameters(
@@ -216,6 +229,8 @@ def test_volume_create_successfully(mock_volumes_api, mock_operations_api, modul
with pytest.raises(AnsibleExitJson) as exception:
fusion_volume.main()
assert exception.value.changed is True
+ assert exception.value.id == FAKE_RESOURCE_ID
+
volumes_api.get_volume.assert_called_with(
volume_name=module_args["name"],
tenant_name=module_args["tenant"],
@@ -238,6 +253,90 @@ def test_volume_create_successfully(mock_volumes_api, mock_operations_api, modul
@patch("fusion.OperationsApi")
@patch("fusion.VolumesApi")
+def test_volume_create_from_volume_successfully(
+ mock_volumes_api, mock_operations_api, module_args
+):
+ del module_args["size"]
+ module_args["source_volume"] = "source_volume_name"
+
+ operations_api = purefusion.OperationsApi()
+ volumes_api = purefusion.VolumesApi()
+ volumes_api.get_volume = MagicMock(side_effect=purefusion.rest.ApiException)
+ volumes_api.create_volume = MagicMock(return_value=OperationMock(1))
+ operations_api.get_operation = MagicMock(return_value=SuccessfulOperationMock)
+ mock_volumes_api.return_value = volumes_api
+ mock_operations_api.return_value = operations_api
+ set_module_args(module_args)
+ # run module
+ with pytest.raises(AnsibleExitJson) as exception:
+ fusion_volume.main()
+ assert exception.value.changed is True
+ assert exception.value.id == FAKE_RESOURCE_ID
+ volumes_api.get_volume.assert_called_with(
+ volume_name=module_args["name"],
+ tenant_name=module_args["tenant"],
+ tenant_space_name=module_args["tenant_space"],
+ )
+ volumes_api.create_volume.assert_called_once_with(
+ purefusion.VolumePost(
+ source_link=f"/tenants/{module_args['tenant']}/tenant-spaces/{module_args['tenant_space']}/volumes/{module_args['source_volume']}",
+ storage_class=module_args["storage_class"],
+ placement_group=module_args["placement_group"],
+ name=module_args["name"],
+ display_name=module_args["display_name"],
+ protection_policy=module_args["protection_policy"],
+ ),
+ tenant_name=module_args["tenant"],
+ tenant_space_name=module_args["tenant_space"],
+ )
+ operations_api.get_operation.assert_called_once_with(1)
+
+
+@patch("fusion.OperationsApi")
+@patch("fusion.VolumesApi")
+def test_volume_create_from_volume_snapshot_successfully(
+ mock_volumes_api, mock_operations_api, module_args
+):
+ del module_args["size"]
+ module_args["source_snapshot"] = "source_snapshot_name"
+ module_args["source_volume_snapshot"] = "source_volume_snapshot_name"
+
+ operations_api = purefusion.OperationsApi()
+ volumes_api = purefusion.VolumesApi()
+ volumes_api.get_volume = MagicMock(side_effect=purefusion.rest.ApiException)
+ volumes_api.create_volume = MagicMock(return_value=OperationMock(1))
+ operations_api.get_operation = MagicMock(return_value=SuccessfulOperationMock)
+ mock_volumes_api.return_value = volumes_api
+ mock_operations_api.return_value = operations_api
+ set_module_args(module_args)
+ # run module
+ with pytest.raises(AnsibleExitJson) as exception:
+ fusion_volume.main()
+ assert exception.value.changed is True
+ assert exception.value.id == FAKE_RESOURCE_ID
+ volumes_api.get_volume.assert_called_with(
+ volume_name=module_args["name"],
+ tenant_name=module_args["tenant"],
+ tenant_space_name=module_args["tenant_space"],
+ )
+ volumes_api.create_volume.assert_called_once_with(
+ purefusion.VolumePost(
+ source_link=f"/tenants/{module_args['tenant']}/tenant-spaces/{module_args['tenant_space']}/snapshots/"
+ f"{module_args['source_snapshot']}/volume-snapshots/{module_args['source_volume_snapshot']}",
+ storage_class=module_args["storage_class"],
+ placement_group=module_args["placement_group"],
+ name=module_args["name"],
+ display_name=module_args["display_name"],
+ protection_policy=module_args["protection_policy"],
+ ),
+ tenant_name=module_args["tenant"],
+ tenant_space_name=module_args["tenant_space"],
+ )
+ operations_api.get_operation.assert_called_once_with(1)
+
+
+@patch("fusion.OperationsApi")
+@patch("fusion.VolumesApi")
def test_volume_create_without_display_name_successfully(
mock_volumes_api, mock_operations_api, module_args
):
@@ -254,6 +353,7 @@ def test_volume_create_without_display_name_successfully(
with pytest.raises(AnsibleExitJson) as exception:
fusion_volume.main()
assert exception.value.changed is True
+ assert exception.value.id == FAKE_RESOURCE_ID
volumes_api.get_volume.assert_called_with(
volume_name=module_args["name"],
tenant_name=module_args["tenant"],
@@ -399,6 +499,7 @@ def test_volume_update_with_state_present_executed_correctly(
with pytest.raises(AnsibleExitJson) as exception:
fusion_volume.main()
assert exception.value.changed is True
+ assert exception.value.id == volume["id"]
volumes_api.get_volume.assert_called_with(
volume_name=module_args["name"],
tenant_name=module_args["tenant"],
@@ -447,6 +548,7 @@ def test_volume_update_with_state_absent_executed_correctly(
with pytest.raises(AnsibleExitJson) as exception:
fusion_volume.main()
assert exception.value.changed is True
+ assert exception.value.id == volume["id"]
volumes_api.get_volume.assert_called_with(
volume_name=module_args["name"],
tenant_name=module_args["tenant"],
@@ -713,3 +815,47 @@ def test_volume_delete_operation_throws_exception(
tenant_space_name=absent_module_args["tenant_space"],
)
operations_api.get_operation.assert_called_once_with(2)
+
+
+@patch("fusion.OperationsApi")
+@patch("fusion.VolumesApi")
+def test_module_updates_on_empty_array_of_haps(
+ mock_volumes_api, mock_operations_api, module_args, volume
+):
+ volumes_api = purefusion.VolumesApi()
+ operations_api = purefusion.OperationsApi()
+ volumes_api.get_volume = MagicMock(return_value=purefusion.Volume(**volume))
+ volumes_api.update_volume = MagicMock(return_value=OperationMock(1))
+ operations_api.get_operation = MagicMock(return_value=SuccessfulOperationMock)
+ mock_operations_api.return_value = operations_api
+ mock_volumes_api.return_value = volumes_api
+ module_args.update({"state": "absent", "host_access_policies": []})
+ set_module_args(module_args)
+ # run module
+ with pytest.raises(AnsibleExitJson) as exception:
+ fusion_volume.main()
+ assert exception.value.changed is True
+ assert exception.value.id == volume["id"]
+ volumes_api.get_volume.assert_called_with(
+ volume_name=module_args["name"],
+ tenant_name=module_args["tenant"],
+ tenant_space_name=module_args["tenant_space"],
+ )
+ volumes_api.update_volume.assert_has_calls(
+ [
+ call(
+ purefusion.VolumePatch(
+ host_access_policies=purefusion.NullableString(",".join([]))
+ ),
+ volume_name=volume["name"],
+ tenant_name=volume["tenant"],
+ tenant_space_name=volume["tenant_space"],
+ ),
+ call(
+ purefusion.VolumePatch(destroyed=purefusion.NullableBoolean(True)),
+ volume_name=volume["name"],
+ tenant_name=volume["tenant"],
+ tenant_space_name=volume["tenant_space"],
+ ),
+ ]
+ )
diff --git a/ansible_collections/purestorage/fusion/tests/functional/utils.py b/ansible_collections/purestorage/fusion/tests/functional/utils.py
index 24d6f0328..53e501bc0 100644
--- a/ansible_collections/purestorage/fusion/tests/functional/utils.py
+++ b/ansible_collections/purestorage/fusion/tests/functional/utils.py
@@ -7,6 +7,11 @@ from dataclasses import dataclass
from ansible.module_utils import basic
from ansible.module_utils.common.text.converters import to_bytes
+from ansible_collections.purestorage.fusion.tests.helpers import (
+ OperationResultsDict,
+)
+
+FAKE_RESOURCE_ID = "fake-id-12345"
@dataclass
@@ -20,6 +25,9 @@ class OperationMock:
self.status = "Pending"
elif success:
self.status = "Succeeded"
+ self.result = OperationResultsDict(
+ {"resource": OperationResultsDict({"id": FAKE_RESOURCE_ID})}
+ )
else:
self.status = "Failed"
self.id = id
@@ -30,6 +38,9 @@ class SuccessfulOperationMock:
Mock object for successful operation. This object is returned by mocked Operation API if the operation was successful.
"""
+ result = OperationResultsDict(
+ {"resource": OperationResultsDict({"id": FAKE_RESOURCE_ID})}
+ )
status = "Succeeded"
@@ -65,6 +76,10 @@ class AnsibleExitJson(Exception):
return self.kwargs["changed"]
@property
+ def id(self):
+ return self.kwargs["id"]
+
+ @property
def fusion_info(self):
return self.kwargs["fusion_info"] if "fusion_info" in self.kwargs else None
diff --git a/ansible_collections/purestorage/fusion/tests/helpers.py b/ansible_collections/purestorage/fusion/tests/helpers.py
index 40d98cf0e..76d51b6f7 100644
--- a/ansible_collections/purestorage/fusion/tests/helpers.py
+++ b/ansible_collections/purestorage/fusion/tests/helpers.py
@@ -27,3 +27,11 @@ class ApiExceptionsMockGenerator:
def create_not_found():
status = HTTPStatus.NOT_FOUND
return purefusion.rest.ApiException(status=status, reason=status.phrase)
+
+
+class OperationResultsDict(dict):
+ """dot.notation access to dictionary attributes"""
+
+ __getattr__ = dict.get
+ __setattr__ = dict.__setitem__
+ __delattr__ = dict.__delitem__
diff --git a/ansible_collections/purestorage/fusion/tests/unit/mocks/operation_mock.py b/ansible_collections/purestorage/fusion/tests/unit/mocks/operation_mock.py
index 99487ddfa..a3a70c67d 100644
--- a/ansible_collections/purestorage/fusion/tests/unit/mocks/operation_mock.py
+++ b/ansible_collections/purestorage/fusion/tests/unit/mocks/operation_mock.py
@@ -8,6 +8,9 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
from enum import Enum
+from ansible_collections.purestorage.fusion.tests.helpers import (
+ OperationResultsDict,
+)
class OperationStatus(str, Enum):
@@ -18,7 +21,16 @@ class OperationStatus(str, Enum):
class OperationMock:
- def __init__(self, id, status, retry_in=1):
+ def __init__(
+ self,
+ id,
+ status,
+ result=OperationResultsDict(
+ {"resource": OperationResultsDict({"id": "fake-id"})}
+ ),
+ retry_in=1,
+ ):
self.id = id
self.status = status
self.retry_in = retry_in
+ self.result = result
diff --git a/ansible_collections/purestorage/fusion/tests/unit/module_utils/test_parsing.py b/ansible_collections/purestorage/fusion/tests/unit/module_utils/test_parsing.py
index 7e2a1cc78..230d0ff01 100644
--- a/ansible_collections/purestorage/fusion/tests/unit/module_utils/test_parsing.py
+++ b/ansible_collections/purestorage/fusion/tests/unit/module_utils/test_parsing.py
@@ -7,13 +7,12 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
+import pytest
from ansible_collections.purestorage.fusion.plugins.module_utils.parsing import (
- parse_number_with_metric_suffix,
parse_minutes,
+ parse_number_with_metric_suffix,
)
-import pytest
-
class MockException(Exception):
pass
@@ -83,17 +82,37 @@ def test_parsing_invalid_number():
def test_parsing_valid_time_period():
module = MockModule()
+ assert parse_minutes(module, "0") == 0
+ assert parse_minutes(module, "00") == 0
+ assert parse_minutes(module, "00M") == 0
assert parse_minutes(module, "10") == 10
- assert parse_minutes(module, "2h") == 120
- assert parse_minutes(module, "2H") == 120
+ assert parse_minutes(module, "015") == 15
+ assert parse_minutes(module, "0023") == 23
+ assert parse_minutes(module, "0H10M") == 10
+ assert parse_minutes(module, "2h") == 2 * 60
+ assert parse_minutes(module, "2H") == 2 * 60
+ assert parse_minutes(module, "02h") == 2 * 60
+ assert parse_minutes(module, "02H") == 2 * 60
+ assert parse_minutes(module, "002h") == 2 * 60
+ assert parse_minutes(module, "002H") == 2 * 60
+ assert parse_minutes(module, "0D10H10M") == 10 * 60 + 10
assert parse_minutes(module, "14D") == 14 * 24 * 60
+ assert parse_minutes(module, "014D") == 14 * 24 * 60
+ assert parse_minutes(module, "0000014D") == 14 * 24 * 60
assert parse_minutes(module, "1W") == 7 * 24 * 60
+ assert parse_minutes(module, "01W") == 7 * 24 * 60
+ assert parse_minutes(module, "01Y0H10M") == 365 * 24 * 60 + 10
assert parse_minutes(module, "12Y") == 12 * 365 * 24 * 60
+ assert parse_minutes(module, "012Y") == 12 * 365 * 24 * 60
assert (
parse_minutes(module, "10Y20W30D40H50M")
== 10 * 365 * 24 * 60 + 20 * 7 * 24 * 60 + 30 * 24 * 60 + 40 * 60 + 50
)
assert (
+ parse_minutes(module, "010Y20W30D40H50M")
+ == 10 * 365 * 24 * 60 + 20 * 7 * 24 * 60 + 30 * 24 * 60 + 40 * 60 + 50
+ )
+ assert (
parse_minutes(module, "10Y20W30D40H")
== 10 * 365 * 24 * 60 + 20 * 7 * 24 * 60 + 30 * 24 * 60 + 40 * 60
)
@@ -110,6 +129,10 @@ def test_parsing_valid_time_period():
assert parse_minutes(module, "40H50M") == 40 * 60 + 50
assert parse_minutes(module, "30D50M") == 30 * 24 * 60 + 50
assert parse_minutes(module, "20W40H") == 20 * 7 * 24 * 60 + 40 * 60
+ assert (
+ parse_minutes(module, "01W000010D10H10M")
+ == 7 * 24 * 60 + 10 * 24 * 60 + 10 * 60 + 10
+ )
def test_parsing_invalid_time_period():
@@ -123,16 +146,8 @@ def test_parsing_invalid_time_period():
with pytest.raises(MockException):
assert parse_minutes(module, "1V")
with pytest.raises(MockException):
- assert parse_minutes(module, "0M")
- with pytest.raises(MockException):
- assert parse_minutes(module, "0H10M")
- with pytest.raises(MockException):
- assert parse_minutes(module, "0H10M")
+ assert parse_minutes(module, "1v")
with pytest.raises(MockException):
- assert parse_minutes(module, "0D10H10M")
+ assert parse_minutes(module, "10M2H")
with pytest.raises(MockException):
- assert parse_minutes(module, "01W10D10H10M")
- with pytest.raises(MockException):
- assert parse_minutes(module, "01Y0H10M")
- with pytest.raises(MockException):
- assert parse_minutes(module, "1V")
+ assert parse_minutes(module, "0H10M01Y")
diff --git a/ansible_collections/purestorage/fusion/tests/unit/modules/test_fusion_az.py b/ansible_collections/purestorage/fusion/tests/unit/modules/test_fusion_az.py
index a384506d8..ee300638e 100644
--- a/ansible_collections/purestorage/fusion/tests/unit/modules/test_fusion_az.py
+++ b/ansible_collections/purestorage/fusion/tests/unit/modules/test_fusion_az.py
@@ -81,7 +81,9 @@ class TestCreateAZ:
azone, region_name=module_params["region"]
)
await_operation_mock.assert_called_once_with(fusion_mock, op)
- moduleMock.exit_json.assert_called_once_with(changed=True)
+ moduleMock.exit_json.assert_called_once_with(
+ changed=True, id=op.result.resource.id
+ )
@patch(f"{current_module}.fusion_az.purefusion.AvailabilityZonesApi.__new__")
@patch(f"{current_module}.fusion_az.await_operation")
@@ -113,7 +115,7 @@ class TestCreateAZ:
# Assertions
mock_az_api_obj.create_availability_zone.assert_not_called()
await_operation_mock.assert_not_called()
- moduleMock.exit_json.assert_called_once_with(changed=True)
+ moduleMock.exit_json.assert_called_once_with(changed=True, id=None)
@patch(f"{current_module}.fusion_az.purefusion.AvailabilityZonesApi.__new__")
@patch(f"{current_module}.fusion_az.await_operation")
@@ -151,7 +153,9 @@ class TestCreateAZ:
azone, region_name=module_params["region"]
)
await_operation_mock.assert_called_once_with(fusion_mock, op)
- moduleMock.exit_json.assert_called_once_with(changed=True)
+ moduleMock.exit_json.assert_called_once_with(
+ changed=True, id=op.result.resource.id
+ )
@patch(f"{current_module}.fusion_az.purefusion.AvailabilityZonesApi.__new__")
@patch(f"{current_module}.fusion_az.await_operation")