diff --git a/pyracf/common/security_admin.py b/pyracf/common/security_admin.py
index 005343b..5dd4977 100644
--- a/pyracf/common/security_admin.py
+++ b/pyracf/common/security_admin.py
@@ -609,15 +609,19 @@ def __make_connection_traits(self, traits_dict: dict) -> dict:
}
template_dict = {}
if traits_dict["resumeDate"] is not None:
- resume_date = datetime.strptime(traits_dict["resumeDate"], "%y.%j").date()
- date = datetime.now()
+ resume_date = datetime.strptime(
+ traits_dict["resumeDate"], "%m/%d/%Y"
+ ).date()
+ date = datetime.today().date()
if resume_date <= date:
template_dict["base:resume"] = True
else:
template_dict["base:resume"] = resume_date.strftime("%m/%d/%y")
if traits_dict["revokeDate"] is not None:
- revoke_date = datetime.strptime(traits_dict["revokeDate"], "%y.%j").date()
- traits_dict["revokeDate"] = True
+ revoke_date = datetime.strptime(
+ traits_dict["revokeDate"], "%m/%d/%Y"
+ ).date()
+ date = datetime.today().date()
if revoke_date <= date:
template_dict["base:revoke"] = True
else:
diff --git a/tests/group/test_group_constants.py b/tests/group/test_group_constants.py
index 78b3050..105e00c 100644
--- a/tests/group/test_group_constants.py
+++ b/tests/group/test_group_constants.py
@@ -116,6 +116,30 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
},
},
]
+TEST_EXTRACT_GROUP_CONNECTION_TEMPLATE_PAST_DATES_TRAITS = [
+ {
+ "userid": "eswift",
+ "group": "testgrp0",
+ "traits": {
+ "base:revoke": True,
+ "base:resume": True,
+ "base:group_authority": "use",
+ "base:universal_access": None,
+ "base:special": True,
+ },
+ },
+ {
+ "userid": "leonard",
+ "group": "testgrp0",
+ "traits": {
+ "base:revoke": True,
+ "base:resume": True,
+ "base:group_authority": "use",
+ "base:universal_access": None,
+ "base:operations": True,
+ },
+ },
+]
# Delete Group
TEST_DELETE_GROUP_REQUEST_XML = get_sample("delete_group_request.xml")
diff --git a/tests/group/test_group_result_parser.py b/tests/group/test_group_result_parser.py
index 8e2072e..a8786b0 100644
--- a/tests/group/test_group_result_parser.py
+++ b/tests/group/test_group_result_parser.py
@@ -265,11 +265,28 @@ def test_group_admin_can_build_template_connection_success_xml(
call_racf_mock.return_value = (
TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
- template = self.group_admin.extract(
- "testgrp0", segments=["omvs"], connection_template=True
- )
- print(template)
self.assertEqual(
- template,
+ self.group_admin.extract(
+ "testgrp0", segments=["omvs"], connection_template=True
+ ),
TestGroupConstants.TEST_EXTRACT_GROUP_CONNECTION_TEMPLATE_TRAITS,
)
+
+ def test_group_admin_can_build_template_connection_success_with_past_dates_xml(
+ self,
+ call_racf_mock: Mock,
+ ):
+ extract_group_xml = (
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
+ )
+ extract_group_xml = extract_group_xml.replace(
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " REVOKE DATE=23.340 RESUME DATE=23.360",
+ )
+ call_racf_mock.return_value = extract_group_xml
+ self.assertEqual(
+ self.group_admin.extract(
+ "testgrp0", segments=["omvs"], connection_template=True
+ ),
+ TestGroupConstants.TEST_EXTRACT_GROUP_CONNECTION_TEMPLATE_PAST_DATES_TRAITS,
+ )
diff --git a/tests/user/test_user_constants.py b/tests/user/test_user_constants.py
index e19bc52..8f01b5f 100644
--- a/tests/user/test_user_constants.py
+++ b/tests/user/test_user_constants.py
@@ -269,6 +269,18 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
"traits": {"base:group_authority": "use", "base:owner": "leonard"},
}
]
+TEST_EXTRACT_USER_CONNECTION_TEMPLATE_FUTURE_DATES_TRAITS = [
+ {
+ "userid": "squidwrd",
+ "group": "SYS1",
+ "traits": {
+ "base:group_authority": "use",
+ "base:owner": "leonard",
+ "base:revoke": "05/30/50",
+ "base:resume": "07/19/50",
+ },
+ }
+]
# Delete User
TEST_DELETE_USER_REQUEST_XML = get_sample("delete_user_request.xml")
diff --git a/tests/user/test_user_result_parser.py b/tests/user/test_user_result_parser.py
index 1736c86..e1276ee 100644
--- a/tests/user/test_user_result_parser.py
+++ b/tests/user/test_user_result_parser.py
@@ -259,7 +259,6 @@ def test_user_admin_can_parse_extract_user_base_only_installation_data_success_x
TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_INST_DATA_SUCCESS_XML
)
result = self.user_admin.extract("squidwrd")
- print(result)
self.assertEqual(
result,
TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_INST_DATA_SUCCESS_JSON,
@@ -569,3 +568,22 @@ def test_user_admin_can_build_template_connection_success_xml(
),
TestUserConstants.TEST_EXTRACT_USER_CONNECTION_TEMPLATE_TRAITS,
)
+
+ def test_user_admin_can_build_template_connection_success_with_future_dates_xml(
+ self,
+ call_racf_mock: Mock,
+ ):
+ extract_user_xml = (
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_OMVS_TSO_REVOKE_RESUME_XML
+ )
+ extract_user_xml = extract_user_xml.replace(
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " REVOKE DATE=50.150 RESUME DATE=50.200",
+ )
+ call_racf_mock.return_value = extract_user_xml
+ self.assertEqual(
+ self.user_admin.extract(
+ "squidwrd", segments=["omvs", "tso"], connection_template=True
+ ),
+ TestUserConstants.TEST_EXTRACT_USER_CONNECTION_TEMPLATE_FUTURE_DATES_TRAITS,
+ )