diff --git a/pyracf/__init__.py b/pyracf/__init__.py
index 44409d47..7c686b12 100644
--- a/pyracf/__init__.py
+++ b/pyracf/__init__.py
@@ -1,5 +1,6 @@
"""Make security admin subclasses available from package root."""
from .access.access_admin import AccessAdmin
+from .common.add_operation_error import AddOperationError
from .common.alter_operation_error import AlterOperationError
from .common.invalid_segment_name_error import InvalidSegmentNameError
from .common.invalid_segment_trait_error import InvalidSegmentTraitError
diff --git a/pyracf/common/add_operation_error.py b/pyracf/common/add_operation_error.py
new file mode 100644
index 00000000..57d7db15
--- /dev/null
+++ b/pyracf/common/add_operation_error.py
@@ -0,0 +1,24 @@
+"""Exception to use when Add operation would alter an existing profile."""
+
+
+class AddOperationError(Exception):
+ """
+ Raised when a profile passed into an Add is successfully extracted.
+ """
+
+ def __init__(self, profile_name: str, class_name: str) -> None:
+ self.message = "Security request made to IRRSMO00 failed."
+ admin_types = ["USER", "GROUP", "DATASET"]
+ if class_name not in admin_types:
+ self.message += (
+ "\n\nTarget profile "
+ + f"'{profile_name}' already exists as a profile in the {class_name} class."
+ )
+ else:
+ self.message += (
+ "\n\nTarget profile "
+ + f"'{profile_name}' already exists as a {class_name} profile."
+ )
+
+ def __str__(self) -> str:
+ return self.message
diff --git a/pyracf/common/logger.py b/pyracf/common/logger.py
index ed1f3dc8..07a491ae 100644
--- a/pyracf/common/logger.py
+++ b/pyracf/common/logger.py
@@ -166,7 +166,7 @@ def redact_result_xml(
match = re.search(rf"{racf_key.upper()} +\(", xml_string)
if not match:
continue
- xml_string = self.__redact_string(xml_string, match.end(), ") ")
+ xml_string = self.__redact_string(xml_string, match.end(), ")")
return xml_string
def __colorize_json(self, json_text: str) -> str:
diff --git a/pyracf/common/security_admin.py b/pyracf/common/security_admin.py
index 677de6d3..bc47eeb0 100644
--- a/pyracf/common/security_admin.py
+++ b/pyracf/common/security_admin.py
@@ -70,7 +70,7 @@ def __init__(
self.__preserved_segment_traits = {}
self._trait_map = {}
self.__debug = debug
- self.__generate_requests_only = generate_requests_only
+ self._generate_requests_only = generate_requests_only
if update_existing_segment_traits is not None:
self.__update_valid_segment_traits(update_existing_segment_traits)
if replace_existing_segment_traits is not None:
@@ -123,7 +123,7 @@ def _extract_and_check_result(
) -> dict:
"""Extract a RACF profile."""
result = self._make_request(security_request)
- if self.__generate_requests_only:
+ if self._generate_requests_only:
return result
self._format_profile(result)
if self.__debug:
@@ -155,7 +155,7 @@ def _make_request(
security_request.dump_request_xml(encoding="utf-8"),
secret_traits=self.__secret_traits,
)
- if self.__generate_requests_only:
+ if self._generate_requests_only:
request_xml = self.__logger.redact_request_xml(
security_request.dump_request_xml(encoding="utf-8"),
secret_traits=self.__secret_traits,
@@ -202,7 +202,7 @@ def _to_steps(self, results: Union[List[dict], dict, bytes]) -> Union[dict, byte
"""
if isinstance(results, dict) or isinstance(results, bytes):
results = [results]
- if self.__generate_requests_only:
+ if self._generate_requests_only:
concatenated_xml = b""
for request_xml in results:
if request_xml:
@@ -320,8 +320,8 @@ def _get_profile(
self, result: Union[dict, bytes], index: int = 0
) -> Union[dict, bytes]:
"""Extract the profile section from a result dictionary."""
- if self.__generate_requests_only:
- # Allows this function to work with "self.__generate_requests_only" mode.
+ if self._generate_requests_only:
+ # Allows this function to work with "self._generate_requests_only" mode.
return result
return result["securityResult"][self.__profile_type]["commands"][0]["profiles"][
index
@@ -331,8 +331,8 @@ def _get_field(
self, profile: Union[dict, bytes], segment: str, field: str
) -> Union[bytes, Any, None]:
"""Extract the value of a field from a segment in a profile."""
- if self.__generate_requests_only:
- # Allows this function to work with "self.__generate_requests_only" mode.
+ if self._generate_requests_only:
+ # Allows this function to work with "self._generate_requests_only" mode.
return profile
try:
return profile[segment][field]
diff --git a/pyracf/common/security_request_error.py b/pyracf/common/security_request_error.py
index d197a48b..97e61b7a 100644
--- a/pyracf/common/security_request_error.py
+++ b/pyracf/common/security_request_error.py
@@ -17,3 +17,15 @@ def __init__(self, result: dict) -> None:
def __str__(self) -> str:
return self.message
+
+ def scan_for_error(self, security_definition_tag: str, error_id: str):
+ commands = self.result["securityResult"][security_definition_tag].get(
+ "commands"
+ )
+ if not isinstance(commands, list):
+ return False
+ messages = commands[0].get("messages", [])
+ if error_id in "".join(messages):
+ return True
+ else:
+ return False
diff --git a/pyracf/setropts/setropts_admin.py b/pyracf/setropts/setropts_admin.py
index 677fefe7..bbcc17d2 100644
--- a/pyracf/setropts/setropts_admin.py
+++ b/pyracf/setropts/setropts_admin.py
@@ -136,7 +136,7 @@ def get_class_attributes(self, class_name: str) -> Union[list, bytes]:
"""Get RACF get attributes."""
profile = self.list_racf_options(options_only=True)
if not isinstance(profile, dict):
- # Allows this function to work with "self.__generate_requests_only" mode.
+ # Allows this function to work with "self._generate_requests_only" mode.
return profile
return [
class_type
diff --git a/pyracf/user/user_admin.py b/pyracf/user/user_admin.py
index 2860a817..f29c8aec 100644
--- a/pyracf/user/user_admin.py
+++ b/pyracf/user/user_admin.py
@@ -2,6 +2,7 @@
from typing import List, Union
+from pyracf.common.add_operation_error import AddOperationError
from pyracf.common.alter_operation_error import AlterOperationError
from pyracf.common.security_admin import SecurityAdmin
from pyracf.common.security_request_error import SecurityRequestError
@@ -399,13 +400,29 @@ def set_omvs_program(
# ============================================================================
def add(self, userid: str, traits: dict = {}) -> Union[dict, bytes]:
"""Create a new user."""
- self._build_segment_dictionaries(traits)
- user_request = UserRequest(userid, "set")
- self._build_xml_segments(user_request)
- return self._make_request(user_request)
+ if self._generate_requests_only:
+ self._build_segment_dictionaries(traits)
+ user_request = UserRequest(userid, "set")
+ self._build_xml_segments(user_request)
+ return self._make_request(user_request)
+ try:
+ self.extract(userid)
+ except SecurityRequestError as exception:
+ if not exception.scan_for_error("user", "ICH30001I"):
+ raise exception
+ self._build_segment_dictionaries(traits)
+ user_request = UserRequest(userid, "set")
+ self._build_xml_segments(user_request)
+ return self._make_request(user_request)
+ raise AddOperationError(userid, "USER")
def alter(self, userid: str, traits: dict = {}) -> Union[dict, bytes]:
"""Alter an existing user."""
+ if self._generate_requests_only:
+ self._build_segment_dictionaries(traits)
+ user_request = UserRequest(userid, "set")
+ self._build_xml_segments(user_request, alter=True)
+ return self._make_request(user_request, irrsmo00_precheck=True)
try:
self.extract(userid)
except SecurityRequestError:
diff --git a/tests/group/group_result_samples/extract_group_result_base_only_no_omvs_success.json b/tests/group/group_result_samples/extract_group_result_base_only_success.json
similarity index 100%
rename from tests/group/group_result_samples/extract_group_result_base_only_no_omvs_success.json
rename to tests/group/group_result_samples/extract_group_result_base_only_success.json
diff --git a/tests/group/group_result_samples/extract_group_result_base_only_no_omvs_success.xml b/tests/group/group_result_samples/extract_group_result_base_only_success.xml
similarity index 100%
rename from tests/group/group_result_samples/extract_group_result_base_only_no_omvs_success.xml
rename to tests/group/group_result_samples/extract_group_result_base_only_success.xml
diff --git a/tests/group/test_group_constants.py b/tests/group/test_group_constants.py
index 671ba3fc..9da4f7d6 100644
--- a/tests/group/test_group_constants.py
+++ b/tests/group/test_group_constants.py
@@ -42,11 +42,11 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
TEST_EXTRACT_GROUP_RESULT_BASE_OMVS_ERROR_DICTIONARY = get_sample(
"extract_group_result_base_omvs_error.json"
)
-TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML = get_sample(
- "extract_group_result_base_only_no_omvs_success.xml"
+TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML = get_sample(
+ "extract_group_result_base_only_success.xml"
)
-TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_JSON = get_sample(
- "extract_group_result_base_only_no_omvs_success.json"
+TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_JSON = get_sample(
+ "extract_group_result_base_only_success.json"
)
# Delete Group
diff --git a/tests/group/test_group_getters.py b/tests/group/test_group_getters.py
index a8e42493..25177201 100644
--- a/tests/group/test_group_getters.py
+++ b/tests/group/test_group_getters.py
@@ -27,7 +27,7 @@ def test_group_admin_has_group_special_authority_returns_true_when_group_special
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertTrue(
self.group_admin.has_group_special_authority("TESTGRP0", "ESWIFT")
@@ -63,7 +63,7 @@ def test_group_admin_has_group_operations_authority_returns_true_when_group_oper
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertTrue(
self.group_admin.has_group_operations_authority("TESTGRP0", "LEONARD")
@@ -99,7 +99,7 @@ def test_group_admin_has_group_auditor_authority_returns_true_when_group_auditor
call_racf_mock: Mock,
):
group_extract_auditor = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
group_extract_auditor = group_extract_auditor.replace(
" CONNECT ATTRIBUTES=SPECIAL",
@@ -115,7 +115,7 @@ def test_group_admin_has_group_auditor_authority_returns_false_when_not_group_au
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertFalse(
self.group_admin.has_group_auditor_authority("TESTGRP0", "ESWIFT")
@@ -140,7 +140,7 @@ def test_group_admin_has_group_access_attribute_returns_true_when_grpacc(
call_racf_mock: Mock,
):
group_extract_grpacc = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
group_extract_grpacc = group_extract_grpacc.replace(
" CONNECT ATTRIBUTES=OPERATIONS",
@@ -156,7 +156,7 @@ def test_group_admin_has_group_access_attribute_returns_false_when_not_grpacc(
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertFalse(
self.group_admin.has_group_access_attribute("TESTGRP0", "LEONARD")
@@ -201,7 +201,7 @@ def test_group_admin_get_omvs_gid_returns_none_when_no_omvs_segment_exists(
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertIsNone(self.group_admin.get_omvs_gid("TESTGRP0"))
@@ -237,6 +237,6 @@ def test_group_admin_get_ovm_gid_returns_none_when_no_ovm_segment_exists(
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertIsNone(self.group_admin.get_ovm_gid("TESTGRP0"))
diff --git a/tests/group/test_group_result_parser.py b/tests/group/test_group_result_parser.py
index 650ed110..5762beb7 100644
--- a/tests/group/test_group_result_parser.py
+++ b/tests/group/test_group_result_parser.py
@@ -59,7 +59,7 @@ def test_group_admin_can_parse_alter_group_success_xml(
call_racf_mock: Mock,
):
call_racf_mock.side_effect = [
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML,
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML,
TestGroupConstants.TEST_ALTER_GROUP_RESULT_SUCCESS_XML,
]
self.assertEqual(
@@ -96,7 +96,7 @@ def test_group_admin_can_parse_alter_group_error_xml(
call_racf_mock: Mock,
):
call_racf_mock.side_effect = [
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML,
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML,
TestGroupConstants.TEST_ALTER_GROUP_RESULT_ERROR_XML,
]
with self.assertRaises(SecurityRequestError) as exception:
@@ -124,16 +124,16 @@ def test_group_admin_can_parse_extract_group_base_omvs_success_xml(
TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_OMVS_SUCCESS_DICTIONARY,
)
- def test_group_admin_can_parse_extract_group_base_only_no_omvs_success_xml(
+ def test_group_admin_can_parse_extract_group_base_only_success_xml(
self,
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertEqual(
self.group_admin.extract("TESTGRP0"),
- TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_JSON,
+ TestGroupConstants.TEST_EXTRACT_GROUP_RESULT_BASE_ONLY_SUCCESS_JSON,
)
# Error in environment, TESTGRP0 already deleted/not added
diff --git a/tests/user/test_user_constants.py b/tests/user/test_user_constants.py
index ac9bc6b3..8819cc92 100644
--- a/tests/user/test_user_constants.py
+++ b/tests/user/test_user_constants.py
@@ -20,48 +20,51 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
TEST_ADD_USER_RESULT_SUCCESS_DICTIONARY = get_sample("add_user_result_success.json")
TEST_ADD_USER_RESULT_ERROR_XML = get_sample("add_user_result_error.xml")
TEST_ADD_USER_RESULT_ERROR_DICTIONARY = get_sample("add_user_result_error.json")
-TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_XML = get_sample(
- "add_user_result_password_success.xml"
+
+# Alter User
+TEST_ALTER_USER_RESULT_SUCCESS_XML = get_sample("alter_user_result_success.xml")
+TEST_ALTER_USER_RESULT_SUCCESS_DICTIONARY = get_sample("alter_user_result_success.json")
+TEST_ALTER_USER_RESULT_ERROR_XML = get_sample("alter_user_result_error.xml")
+TEST_ALTER_USER_RESULT_ERROR_DICTIONARY = get_sample("alter_user_result_error.json")
+TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_XML = get_sample(
+ "alter_user_result_password_success.xml"
)
-TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_DICTIONARY = get_sample(
- "add_user_result_password_success.json"
+TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_DICTIONARY = get_sample(
+ "alter_user_result_password_success.json"
)
-TEST_ADD_USER_PASSWORD_RESULT_ERROR_XML = get_sample(
- "add_user_result_password_error.xml"
+TEST_ALTER_USER_PASSWORD_RESULT_ERROR_XML = get_sample(
+ "alter_user_result_password_error.xml"
)
-TEST_ADD_USER_PASSWORD_RESULT_ERROR_DICTIONARY = get_sample(
- "add_user_result_password_error.json"
+TEST_ALTER_USER_PASSWORD_RESULT_ERROR_DICTIONARY = get_sample(
+ "alter_user_result_password_error.json"
)
-TEST_ADD_USER_PASSPHRASE_RESULT_SUCCESS_XML = get_sample(
- "add_user_result_passphrase_success.xml"
+TEST_ALTER_USER_PASSPHRASE_RESULT_SUCCESS_XML = get_sample(
+ "alter_user_result_passphrase_success.xml"
)
-TEST_ADD_USER_PASSPHRASE_RESULT_SUCCESS_DICTIONARY = get_sample(
- "add_user_result_passphrase_success.json"
+TEST_ALTER_USER_PASSPHRASE_RESULT_SUCCESS_DICTIONARY = get_sample(
+ "alter_user_result_passphrase_success.json"
)
-TEST_ADD_USER_PASSPHRASE_RESULT_ERROR_XML = get_sample(
- "add_user_result_passphrase_error.xml"
+TEST_ALTER_USER_PASSPHRASE_RESULT_ERROR_XML = get_sample(
+ "alter_user_result_passphrase_error.xml"
)
-TEST_ADD_USER_PASSPHRASE_RESULT_ERROR_DICTIONARY = get_sample(
- "add_user_result_passphrase_error.json"
+TEST_ALTER_USER_PASSPHRASE_RESULT_ERROR_DICTIONARY = get_sample(
+ "alter_user_result_passphrase_error.json"
)
-TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_XML = get_sample(
- "add_user_result_passphrase_and_password_success.xml"
+TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_XML = get_sample(
+ "alter_user_result_passphrase_and_password_success.xml"
)
-TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_DICTIONARY = get_sample(
- "add_user_result_passphrase_and_password_success.json"
+TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_DICTIONARY = get_sample(
+ "alter_user_result_passphrase_and_password_success.json"
)
-TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_XML = get_sample(
- "add_user_result_passphrase_and_password_error.xml"
+TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_XML = get_sample(
+ "alter_user_result_passphrase_and_password_error.xml"
)
-TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_DICTIONARY = get_sample(
- "add_user_result_passphrase_and_password_error.json"
+TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_DICTIONARY = get_sample(
+ "alter_user_result_passphrase_and_password_error.json"
+)
+TEST_ALTER_USER_RESULT_EXTENDED_SUCCESS_XML = get_sample(
+ "alter_user_result_extended_success.xml"
)
-
-# Alter User
-TEST_ALTER_USER_RESULT_SUCCESS_XML = get_sample("alter_user_result_success.xml")
-TEST_ALTER_USER_RESULT_SUCCESS_DICTIONARY = get_sample("alter_user_result_success.json")
-TEST_ALTER_USER_RESULT_ERROR_XML = get_sample("alter_user_result_error.xml")
-TEST_ALTER_USER_RESULT_ERROR_DICTIONARY = get_sample("alter_user_result_error.json")
# Extract User
TEST_EXTRACT_USER_RESULT_BASE_OMVS_SUCCESS_XML = get_sample(
@@ -76,11 +79,17 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
TEST_EXTRACT_USER_RESULT_BASE_OMVS_ERROR_DICTIONARY = get_sample(
"extract_user_result_base_omvs_error.json"
)
-TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML = get_sample(
- "extract_user_result_base_only_no_omvs_success.xml"
+TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML = get_sample(
+ "extract_user_result_base_only_success.xml"
+)
+TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_JSON = get_sample(
+ "extract_user_result_base_only_success.json"
)
-TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_JSON = get_sample(
- "extract_user_result_base_only_no_omvs_success.json"
+TEST_EXTRACT_USER_RESULT_BASE_ONLY_ERROR_XML = get_sample(
+ "extract_user_result_base_only_error.xml"
+)
+TEST_EXTRACT_USER_RESULT_BASE_ONLY_ERROR_JSON = get_sample(
+ "extract_user_result_base_only_error.json"
)
TEST_EXTRACT_USER_RESULT_WITH_CLASS_AUTHORIZATIONS = get_sample(
"extract_user_result_with_class_authorizations.xml"
@@ -88,6 +97,12 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
TEST_EXTRACT_USER_RESULT_WITH_COMMAND_AUDIT_TRAIL_XML = get_sample(
"extract_user_result_with_command_audit_trail.xml"
)
+TEST_EXTRACT_USER_RESULT_INVALID_ATTRIBUTE_XML = get_sample(
+ "extract_user_result_invattr_error.xml"
+)
+TEST_EXTRACT_USER_RESULT_INVALID_ATTRIBUTE_JSON = get_sample(
+ "extract_user_result_invattr_error.json"
+)
# Delete User
TEST_DELETE_USER_RESULT_SUCCESS_XML = get_sample("delete_user_result_success.xml")
@@ -116,19 +131,6 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
"omvs:home": "/u/squidwrd",
"omvs:program": "/bin/sh",
}
-TEST_ADD_USER_REQUEST_TRAITS_PASSWORD = dict(TEST_ADD_USER_REQUEST_TRAITS)
-TEST_ADD_USER_REQUEST_TRAITS_PASSWORD["base:password"] = "GIyTTqdF"
-TEST_ADD_USER_REQUEST_TRAITS_PASSWORD_SIMPLE = dict(TEST_ADD_USER_REQUEST_TRAITS)
-TEST_ADD_USER_REQUEST_TRAITS_PASSWORD_SIMPLE["base:password"] = "PASSWORD"
-TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE = dict(TEST_ADD_USER_REQUEST_TRAITS)
-TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE["base:passphrase"] = "PassPhrasesAreCool!"
-TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD = dict(
- TEST_ADD_USER_REQUEST_TRAITS
-)
-TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD["base:password"] = "GIyTTqdF"
-TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD[
- "base:passphrase"
-] = "PassPhrasesAreCool!"
TEST_ADD_USER_REQUEST_INVALID_TRAITS = dict(TEST_ADD_USER_REQUEST_TRAITS)
TEST_ADD_USER_REQUEST_INVALID_TRAITS["omvs:invalid_trait"] = "TESTING VALUE"
@@ -139,6 +141,33 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
"omvs:home": "/u/clarinet",
"omvs:program": False,
}
+TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED = {
+ "base:name": "Squidward",
+ "base:owner": "leonard",
+ "base:special": True,
+ "omvs:uid": "2424",
+ "omvs:home": "/u/squidwrd",
+ "omvs:program": "/bin/sh",
+}
+TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD = dict(TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED)
+TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD["base:password"] = "GIyTTqdF"
+TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD_SIMPLE = dict(
+ TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED
+)
+TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD_SIMPLE["base:password"] = "PASSWORD"
+TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE = dict(
+ TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED
+)
+TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE["base:passphrase"] = "PassPhrasesAreCool!"
+TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD = dict(
+ TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED
+)
+TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD["base:password"] = "GIyTTqdF"
+TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD[
+ "base:passphrase"
+] = "PassPhrasesAreCool!"
+TEST_ALTER_USER_REQUEST_TRAITS_UID_ERROR = dict(TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED)
+TEST_ALTER_USER_REQUEST_TRAITS_UID_ERROR["omvs:uid"] = 90000000000
# Extract User
TEST_EXTRACT_USER_REQUEST_BASE_OMVS_XML = get_sample(
@@ -198,27 +227,27 @@ def get_sample(sample_file: str) -> Union[str, bytes]:
# Debug Logging
# ============================================================================
-TEST_ADD_USER_SUCCESS_LOG = get_sample("add_user_success.log")
-TEST_ADD_USER_ERROR_LOG = get_sample("add_user_error.log")
+TEST_ALTER_USER_SUCCESS_LOG = get_sample("alter_user_success.log")
+TEST_ALTER_USER_ERROR_LOG = get_sample("alter_user_error.log")
-TEST_ADD_USER_ADDITIONAL_SECRET_ADDED_SUCCESS_LOG = get_sample(
- "add_user_additional_secret_added_success.log"
+TEST_ALTER_USER_ADDITIONAL_SECRET_ADDED_SUCCESS_LOG = get_sample(
+ "alter_user_additional_secret_added_success.log"
)
-TEST_ADD_USER_ADDITIONAL_SECRET_ADDED_ERROR_LOG = get_sample(
- "add_user_additional_secret_added_error.log"
+TEST_ALTER_USER_ADDITIONAL_SECRET_ADDED_ERROR_LOG = get_sample(
+ "alter_user_additional_secret_added_error.log"
)
-TEST_ADD_USER_PASSWORD_SUCCESS_LOG = get_sample("add_user_password_success.log")
-TEST_ADD_USER_PASSWORD_ERROR_LOG = get_sample("add_user_password_error.log")
+TEST_ALTER_USER_PASSWORD_SUCCESS_LOG = get_sample("alter_user_password_success.log")
+TEST_ALTER_USER_PASSWORD_ERROR_LOG = get_sample("alter_user_password_error.log")
-TEST_ADD_USER_PASSPHRASE_SUCCESS_LOG = get_sample("add_user_passphrase_success.log")
-TEST_ADD_USER_PASSPHRASE_ERROR_LOG = get_sample("add_user_passphrase_error.log")
+TEST_ALTER_USER_PASSPHRASE_SUCCESS_LOG = get_sample("alter_user_passphrase_success.log")
+TEST_ALTER_USER_PASSPHRASE_ERROR_LOG = get_sample("alter_user_passphrase_error.log")
-TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_SUCCESS_LOG = get_sample(
- "add_user_passphrase_and_password_success.log"
+TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_SUCCESS_LOG = get_sample(
+ "alter_user_passphrase_and_password_success.log"
)
-TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_ERROR_LOG = get_sample(
- "add_user_passphrase_and_password_error.log"
+TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_ERROR_LOG = get_sample(
+ "alter_user_passphrase_and_password_error.log"
)
TEST_EXTRACT_USER_BASE_OMVS_SUCCESS_LOG = get_sample(
diff --git a/tests/user/test_user_debug_logging.py b/tests/user/test_user_debug_logging.py
index 615959fa..c845a9c2 100644
--- a/tests/user/test_user_debug_logging.py
+++ b/tests/user/test_user_debug_logging.py
@@ -27,252 +27,304 @@ class TestUserDebugLogging(unittest.TestCase):
simple_password = "PASSWORD"
# ============================================================================
- # Add User
+ # Alter User
# ============================================================================
- def test_add_user_request_debug_log_works_on_success(
+ def test_alter_user_request_debug_log_works_on_success(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = TestUserConstants.TEST_ADD_USER_RESULT_SUCCESS_XML
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_RESULT_SUCCESS_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
- self.user_admin.add(
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS,
)
success_log = self.ansi_escape.sub("", stdout.getvalue())
- self.assertEqual(success_log, TestUserConstants.TEST_ADD_USER_SUCCESS_LOG)
+ self.assertEqual(success_log, TestUserConstants.TEST_ALTER_USER_SUCCESS_LOG)
- def test_add_user_request_debug_log_works_on_error(
+ def test_alter_user_request_debug_log_works_on_error(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = TestUserConstants.TEST_ADD_USER_RESULT_ERROR_XML
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_RESULT_ERROR_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
try:
- self.user_admin.add(
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_UID_ERROR,
)
except SecurityRequestError:
pass
error_log = self.ansi_escape.sub("", stdout.getvalue())
- self.assertEqual(error_log, TestUserConstants.TEST_ADD_USER_ERROR_LOG)
+ self.assertEqual(error_log, TestUserConstants.TEST_ALTER_USER_ERROR_LOG)
# ============================================================================
# Secrets Redaction
# ============================================================================
- def test_add_user_request_debug_log_passwords_get_redacted_on_success(
+ def test_alter_user_request_debug_log_passwords_get_redacted_on_success(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
- self.user_admin.add(
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD,
)
success_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
- success_log, TestUserConstants.TEST_ADD_USER_PASSWORD_SUCCESS_LOG
+ success_log, TestUserConstants.TEST_ALTER_USER_PASSWORD_SUCCESS_LOG
)
self.assertNotIn(self.test_password, success_log)
- def test_add_user_request_debug_log_passwords_get_redacted_on_error(
+ def test_alter_user_request_debug_log_passwords_get_redacted_on_error(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_ERROR_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
try:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD,
+ traits=error_traits,
)
except SecurityRequestError:
pass
error_log = self.ansi_escape.sub("", stdout.getvalue())
- self.assertEqual(error_log, TestUserConstants.TEST_ADD_USER_PASSWORD_ERROR_LOG)
+ self.assertEqual(
+ error_log, TestUserConstants.TEST_ALTER_USER_PASSWORD_ERROR_LOG
+ )
self.assertNotIn(self.test_password, error_log)
- def test_add_user_request_debug_log_passphrases_get_redacted_on_success(
+ def test_alter_user_request_debug_log_passphrases_get_redacted_on_success(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_RESULT_SUCCESS_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_RESULT_SUCCESS_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
- self.user_admin.add(
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE,
)
success_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
- success_log, TestUserConstants.TEST_ADD_USER_PASSPHRASE_SUCCESS_LOG
+ success_log, TestUserConstants.TEST_ALTER_USER_PASSPHRASE_SUCCESS_LOG
)
self.assertNotIn(self.test_passphrase, success_log)
- def test_add_user_request_debug_log_passphrases_get_redacted_on_error(
+ def test_alter_user_request_debug_log_passphrases_get_redacted_on_error(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_RESULT_ERROR_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
try:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE,
+ traits=error_traits,
)
except SecurityRequestError:
pass
error_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
- error_log, TestUserConstants.TEST_ADD_USER_PASSPHRASE_ERROR_LOG
+ error_log, TestUserConstants.TEST_ALTER_USER_PASSPHRASE_ERROR_LOG
)
self.assertNotIn(self.test_passphrase, error_log)
- def test_add_user_request_debug_log_passphrases_and_passwords_get_redacted_on_success(
+ def test_alter_user_request_debug_log_passphrases_and_passwords_get_redacted_on_success(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
- self.user_admin.add(
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
)
success_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
success_log,
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_SUCCESS_LOG,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_SUCCESS_LOG,
)
self.assertNotIn(self.test_passphrase, success_log)
self.assertNotIn(self.test_password, success_log)
- def test_add_user_request_debug_log_passphrases_and_passwords_get_redacted_on_error(
+ def test_alter_user_request_debug_log_passphrases_and_passwords_get_redacted_on_error(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
try:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
+ traits=error_traits,
)
except SecurityRequestError:
pass
error_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
- error_log, TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_ERROR_LOG
+ error_log,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_ERROR_LOG,
)
self.assertNotIn(self.test_passphrase, error_log)
self.assertNotIn(self.test_password, error_log)
- def test_add_user_request_debug_log_password_xml_tags_not_redacted_on_success(
+ def test_alter_user_request_debug_log_password_xml_tags_not_redacted_on_success(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
- self.user_admin.add(
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
)
success_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
- success_log, TestUserConstants.TEST_ADD_USER_PASSWORD_SUCCESS_LOG
+ success_log, TestUserConstants.TEST_ALTER_USER_PASSWORD_SUCCESS_LOG
)
self.assertEqual(success_log.count("********"), 4)
self.assertIn(self.simple_password, success_log)
- def test_add_user_request_debug_log_password_xml_tags_not_redacted_on_error(
+ def test_alter_user_request_debug_log_password_xml_tags_not_redacted_on_error(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_ERROR_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
try:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
+ "squidwrd",
+ traits=error_traits,
+ )
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
)
except SecurityRequestError:
pass
error_log = self.ansi_escape.sub("", stdout.getvalue())
- self.assertEqual(error_log, TestUserConstants.TEST_ADD_USER_PASSWORD_ERROR_LOG)
+ self.assertEqual(
+ error_log, TestUserConstants.TEST_ALTER_USER_PASSWORD_ERROR_LOG
+ )
self.assertEqual(error_log.count("********"), 4)
self.assertIn(self.simple_password, error_log)
# ============================================================================
# Add Additional Secrets
# ============================================================================
- def test_add_user_request_debug_log_additional_secret_added_get_redacted_on_success(
+ def test_alter_user_request_debug_log_additional_secret_added_get_redacted_on_success(
self,
call_racf_mock: Mock,
):
user_admin = UserAdmin(debug=True, additional_secret_traits=["omvs:uid"])
- call_racf_mock.return_value = TestUserConstants.TEST_ADD_USER_RESULT_SUCCESS_XML
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_RESULT_EXTENDED_SUCCESS_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
- user_admin.add(
+ user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED,
)
success_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
success_log,
- TestUserConstants.TEST_ADD_USER_ADDITIONAL_SECRET_ADDED_SUCCESS_LOG,
+ TestUserConstants.TEST_ALTER_USER_ADDITIONAL_SECRET_ADDED_SUCCESS_LOG,
)
self.assertNotIn(
- TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS["omvs:uid"], success_log
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_EXTENDED["omvs:uid"],
+ success_log,
)
- def test_add_user_request_debug_log_additional_secret_added_get_redacted_on_error(
+ def test_alter_user_request_debug_log_additional_secret_added_get_redacted_on_error(
self,
call_racf_mock: Mock,
):
user_admin = UserAdmin(debug=True, additional_secret_traits=["omvs:uid"])
- call_racf_mock.return_value = TestUserConstants.TEST_ADD_USER_RESULT_ERROR_XML
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_RESULT_ERROR_XML,
+ ]
stdout = io.StringIO()
with contextlib.redirect_stdout(stdout):
try:
- user_admin.add(
+ user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_UID_ERROR,
)
except SecurityRequestError:
pass
error_log = self.ansi_escape.sub("", stdout.getvalue())
self.assertEqual(
- error_log, TestUserConstants.TEST_ADD_USER_ADDITIONAL_SECRET_ADDED_ERROR_LOG
+ error_log,
+ TestUserConstants.TEST_ALTER_USER_ADDITIONAL_SECRET_ADDED_ERROR_LOG,
)
self.assertNotIn(
- TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS["omvs:uid"], error_log
+ "("
+ + str(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_UID_ERROR["omvs:uid"]
+ )
+ + ")",
+ error_log,
)
# ============================================================================
diff --git a/tests/user/test_user_getters.py b/tests/user/test_user_getters.py
index 089a43bf..a3c54ba1 100644
--- a/tests/user/test_user_getters.py
+++ b/tests/user/test_user_getters.py
@@ -151,7 +151,7 @@ def test_user_admin_get_class_authorizations_returns_empty_list_when_no_class_au
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertEqual(self.user_admin.get_class_authorizations("squidwrd"), [])
@@ -192,7 +192,7 @@ def test_user_admin_get_omvs_uid_returns_none_when_no_omvs_segment_exists(
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertIsNone(self.user_admin.get_omvs_uid("squidwrd"))
@@ -223,7 +223,7 @@ def test_user_admin_get_omvs_home_returns_none_when_no_omvs_segment_exists(
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertIsNone(self.user_admin.get_omvs_home("squidwrd"))
@@ -254,6 +254,6 @@ def test_user_admin_get_omvs_program_returns_none_when_no_omvs_segment_exists(
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertIsNone(self.user_admin.get_omvs_program("squidwrd"))
diff --git a/tests/user/test_user_request_builder.py b/tests/user/test_user_request_builder.py
index f4d83698..7722f80f 100644
--- a/tests/user/test_user_request_builder.py
+++ b/tests/user/test_user_request_builder.py
@@ -55,7 +55,7 @@ def test_user_admin_build_add_user_request_password_redacted(
):
result = self.user_admin.add(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD,
)
self.assertEqual(result, TestUserConstants.TEST_ADD_USER_REQUEST_PASSWORD_XML)
self.assertNotIn(self.test_password, result.decode("utf-8"))
@@ -65,7 +65,7 @@ def test_user_admin_build_add_user_request_passphrase_redacted(
):
result = self.user_admin.add(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE,
)
self.assertEqual(result, TestUserConstants.TEST_ADD_USER_REQUEST_PASSPHRASE_XML)
self.assertNotIn(self.test_passphrase, result.decode("utf-8"))
@@ -75,7 +75,7 @@ def test_user_admin_build_add_user_request_passphrase_and_password_redacted(
):
result = self.user_admin.add(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
)
self.assertEqual(
result, TestUserConstants.TEST_ADD_USER_REQUEST_PASSPHRASE_AND_PASSWORD_XML
diff --git a/tests/user/test_user_result_parser.py b/tests/user/test_user_result_parser.py
index 64c9f83e..36ce90ac 100644
--- a/tests/user/test_user_result_parser.py
+++ b/tests/user/test_user_result_parser.py
@@ -29,7 +29,10 @@ def test_user_admin_can_parse_add_user_success_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = TestUserConstants.TEST_ADD_USER_RESULT_SUCCESS_XML
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_ERROR_XML,
+ TestUserConstants.TEST_ADD_USER_RESULT_SUCCESS_XML,
+ ]
self.assertEqual(
self.user_admin.add(
"squidwrd",
@@ -38,20 +41,23 @@ def test_user_admin_can_parse_add_user_success_xml(
TestUserConstants.TEST_ADD_USER_RESULT_SUCCESS_DICTIONARY,
)
- # Error in environment, SQUIDWRD already added/exists
+ # Error in command, SQUIDWARD is invalid USERID
def test_user_admin_can_parse_add_user_error_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = TestUserConstants.TEST_ADD_USER_RESULT_ERROR_XML
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_INVALID_ATTRIBUTE_XML,
+ TestUserConstants.TEST_ADD_USER_RESULT_ERROR_XML,
+ ]
with self.assertRaises(SecurityRequestError) as exception:
self.user_admin.add(
- "squidwrd",
+ "squidward",
traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS,
)
self.assertEqual(
exception.exception.result,
- TestUserConstants.TEST_ADD_USER_RESULT_ERROR_DICTIONARY,
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_INVALID_ATTRIBUTE_JSON,
)
# ============================================================================
@@ -62,7 +68,7 @@ def test_user_admin_can_parse_alter_user_success_xml(
call_racf_mock: Mock,
):
call_racf_mock.side_effect = [
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML,
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
TestUserConstants.TEST_ALTER_USER_RESULT_SUCCESS_XML,
]
self.assertEqual(
@@ -79,7 +85,7 @@ def test_user_admin_throws_error_on_alter_new_user(
profile_name = "squidwrd"
admin_name = "USER"
call_racf_mock.side_effect = [
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_OMVS_ERROR_XML,
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_ERROR_XML,
TestUserConstants.TEST_ALTER_USER_RESULT_SUCCESS_XML,
]
with self.assertRaises(AlterOperationError) as exception:
@@ -93,18 +99,19 @@ def test_user_admin_throws_error_on_alter_new_user(
+ f"'{profile_name}' does not exist as a {admin_name} profile.",
)
- # Error: invalid parameter "name"
+ # Error: invalid uid '90000000000'
def test_user_admin_can_parse_alter_user_error_xml(
self,
call_racf_mock: Mock,
):
call_racf_mock.side_effect = [
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML,
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
TestUserConstants.TEST_ALTER_USER_RESULT_ERROR_XML,
]
with self.assertRaises(SecurityRequestError) as exception:
self.user_admin.alter(
- "squidwrd", traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS
+ "squidwrd",
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_UID_ERROR,
)
self.assertEqual(
exception.exception.result,
@@ -126,16 +133,16 @@ def test_user_admin_can_parse_extract_user_base_omvs_success_xml(
TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_OMVS_SUCCESS_DICTIONARY,
)
- def test_user_admin_can_parse_extract_user_base_only_no_omvs_success_xml(
+ def test_user_admin_can_parse_extract_user_base_only_success_xml(
self,
call_racf_mock: Mock,
):
call_racf_mock.return_value = (
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_XML
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML
)
self.assertEqual(
self.user_admin.extract("squidwrd", segments={"omvs": True}),
- TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_NO_OMVS_SUCCESS_JSON,
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_JSON,
)
# Error in environment, SQUIDWRD already deleted/not added
@@ -168,100 +175,113 @@ def test_user_admin_can_parse_extract_user_and_ignore_command_audit_trail_xml(
# ============================================================================
# Password and Password Phrase Redaction
# ============================================================================
- def test_user_admin_password_redacted_add_user_success_xml(
+ def test_user_admin_password_redacted_alter_user_success_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_XML
- )
- result = self.user_admin.add(
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_XML,
+ ]
+ result = self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD,
)
self.assertEqual(
result,
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_DICTIONARY,
)
result_str = str(result)
self.assertNotIn(self.test_password, result_str)
self.assertNotIn("(" + " " * len(self.test_password) + ")", result_str)
- # Error in environment, SQUIDWRD already added/exists
- def test_user_admin_password_redacted_add_user_error_xml(
+ # Error: invalid uid '90000000000'
+ def test_user_admin_password_redacted_alter_user_error_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_ERROR_XML,
+ ]
with self.assertRaises(SecurityRequestError) as exception:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD,
+ traits=error_traits,
)
self.assertEqual(
exception.exception.result,
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_ERROR_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_ERROR_DICTIONARY,
)
result_str = str(exception.exception.result)
self.assertNotIn(self.test_password, result_str)
self.assertNotIn("(" + " " * len(self.test_password) + ")", result_str)
- def test_user_admin_passphrase_redacted_add_user_success_xml(
+ def test_user_admin_passphrase_redacted_alter_user_success_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_RESULT_SUCCESS_XML
- )
- result = self.user_admin.add(
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_RESULT_SUCCESS_XML,
+ ]
+ result = self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE,
)
self.assertEqual(
result,
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_RESULT_SUCCESS_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_RESULT_SUCCESS_DICTIONARY,
)
result_str = str(result)
self.assertNotIn(self.test_passphrase, result_str)
self.assertNotIn("(" + " " * (len(self.test_passphrase) + 2) + ")", result_str)
- # Error in environment, SQUIDWRD already added/exists
- def test_user_admin_passphrase_redacted_add_user_error_xml(
+ # Error: invalid uid '90000000000'
+ def test_user_admin_passphrase_redacted_alter_user_error_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_RESULT_ERROR_XML,
+ ]
with self.assertRaises(SecurityRequestError) as exception:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE,
+ traits=error_traits,
)
self.assertEqual(
exception.exception.result,
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_RESULT_ERROR_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_RESULT_ERROR_DICTIONARY,
)
result_str = str(exception.exception.result)
self.assertNotIn(self.test_passphrase, result_str)
self.assertNotIn("(" + " " * (len(self.test_passphrase) + 2) + ")", result_str)
- def test_user_admin_passphrase_and_password_redacted_add_user_success_xml(
+ def test_user_admin_passphrase_and_password_redacted_alter_user_success_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_XML
- )
- result = self.user_admin.add(
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_XML,
+ ]
+ result = self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
)
self.assertEqual(
result,
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_SUCCESS_DICTIONARY,
)
result_str = str(result)
self.assertNotIn(self.test_passphrase, result_str)
@@ -269,22 +289,27 @@ def test_user_admin_passphrase_and_password_redacted_add_user_success_xml(
self.assertNotIn("(" + " " * (len(self.test_passphrase) + 2) + ")", result_str)
self.assertNotIn("(" + " " * len(self.test_password) + ")", result_str)
- # Error in environment, SQUIDWRD already added/exists
- def test_user_admin_passphrase_and_password_redacted_add_user_error_xml(
+ # Error: invalid uid '90000000000'
+ def test_user_admin_passphrase_and_password_redacted_alter_user_error_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_XML,
+ ]
with self.assertRaises(SecurityRequestError) as exception:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSPHRASE_AND_PASSWORD,
+ traits=error_traits,
)
self.assertEqual(
exception.exception.result,
- TestUserConstants.TEST_ADD_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSPHRASE_AND_PASSWORD_RESULT_ERROR_DICTIONARY,
)
result_str = str(exception.exception.result)
self.assertNotIn(self.test_passphrase, result_str)
@@ -292,42 +317,48 @@ def test_user_admin_passphrase_and_password_redacted_add_user_error_xml(
self.assertNotIn("(" + " " * (len(self.test_passphrase) + 2) + ")", result_str)
self.assertNotIn("(" + " " * len(self.test_password) + ")", result_str)
- def test_user_admin_password_message_not_redacted_add_user_success_xml(
+ def test_user_admin_password_message_not_redacted_alter_user_success_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_XML
- )
- result = self.user_admin.add(
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_XML,
+ ]
+ result = self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
+ traits=TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
)
self.assertEqual(
result,
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_SUCCESS_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_SUCCESS_DICTIONARY,
)
result_str = str(result)
self.assertNotIn("(" + self.simple_password + ")", result_str)
self.assertNotIn("(" + " " * len(self.simple_password) + ")", result_str)
self.assertIn(self.simple_password, result_str)
- # Error in environment, SQUIDWRD already added/exists
- def test_user_admin_password_message_not_redacted_add_user_error_xml(
+ # Error: invalid uid '90000000000'
+ def test_user_admin_password_message_not_redacted_alter_user_error_xml(
self,
call_racf_mock: Mock,
):
- call_racf_mock.return_value = (
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_ERROR_XML
- )
+ call_racf_mock.side_effect = [
+ TestUserConstants.TEST_EXTRACT_USER_RESULT_BASE_ONLY_SUCCESS_XML,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_ERROR_XML,
+ ]
with self.assertRaises(SecurityRequestError) as exception:
- self.user_admin.add(
+ error_traits = dict(
+ TestUserConstants.TEST_ALTER_USER_REQUEST_TRAITS_PASSWORD_SIMPLE
+ )
+ error_traits["omvs:uid"] = 90000000000
+ self.user_admin.alter(
"squidwrd",
- traits=TestUserConstants.TEST_ADD_USER_REQUEST_TRAITS_PASSWORD_SIMPLE,
+ traits=error_traits,
)
self.assertEqual(
exception.exception.result,
- TestUserConstants.TEST_ADD_USER_PASSWORD_RESULT_ERROR_DICTIONARY,
+ TestUserConstants.TEST_ALTER_USER_PASSWORD_RESULT_ERROR_DICTIONARY,
)
result_str = str(exception.exception.result)
self.assertNotIn("(" + self.simple_password + ")", result_str)
diff --git a/tests/user/user_log_samples/add_user_additional_secret_added_error.log b/tests/user/user_log_samples/add_user_additional_secret_added_error.log
deleted file mode 100644
index d8f8dc5a..00000000
--- a/tests/user/user_log_samples/add_user_additional_secret_added_error.log
+++ /dev/null
@@ -1,120 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "********",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
-
-
- ********
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 8
- 16
- 8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (********) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 4
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 8,
- "returnCode": 16,
- "reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (********) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 4,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_additional_secret_added_success.log b/tests/user/user_log_samples/add_user_additional_secret_added_success.log
deleted file mode 100644
index 2ad712e4..00000000
--- a/tests/user/user_log_samples/add_user_additional_secret_added_success.log
+++ /dev/null
@@ -1,120 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "********",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
-
-
- ********
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (********) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 0
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (********) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 0,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_error.log b/tests/user/user_log_samples/add_user_error.log
deleted file mode 100644
index e5bba4fe..00000000
--- a/tests/user/user_log_samples/add_user_error.log
+++ /dev/null
@@ -1,120 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 8
- 16
- 8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 4
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 8,
- "returnCode": 16,
- "reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 4,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_passphrase_and_password_error.log b/tests/user/user_log_samples/add_user_passphrase_and_password_error.log
deleted file mode 100644
index c30b9aba..00000000
--- a/tests/user/user_log_samples/add_user_passphrase_and_password_error.log
+++ /dev/null
@@ -1,130 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- },
- "base:password": {
- "value": "********",
- "operation": null
- },
- "base:passphrase": {
- "value": "********",
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
- ********
- ********
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 8
- 16
- 8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 4
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 8,
- "returnCode": 16,
- "reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 4,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_passphrase_and_password_success.log b/tests/user/user_log_samples/add_user_passphrase_and_password_success.log
deleted file mode 100644
index dd17d227..00000000
--- a/tests/user/user_log_samples/add_user_passphrase_and_password_success.log
+++ /dev/null
@@ -1,130 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- },
- "base:password": {
- "value": "********",
- "operation": null
- },
- "base:passphrase": {
- "value": "********",
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
- ********
- ********
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 0
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 0,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_passphrase_error.log b/tests/user/user_log_samples/add_user_passphrase_error.log
deleted file mode 100644
index e3b19e12..00000000
--- a/tests/user/user_log_samples/add_user_passphrase_error.log
+++ /dev/null
@@ -1,125 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- },
- "base:passphrase": {
- "value": "********",
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
- ********
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 8
- 16
- 8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 4
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 8,
- "returnCode": 16,
- "reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 4,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_passphrase_success.log b/tests/user/user_log_samples/add_user_passphrase_success.log
deleted file mode 100644
index 426485c2..00000000
--- a/tests/user/user_log_samples/add_user_passphrase_success.log
+++ /dev/null
@@ -1,125 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- },
- "base:passphrase": {
- "value": "********",
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
- ********
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 0
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 0,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_password_error.log b/tests/user/user_log_samples/add_user_password_error.log
deleted file mode 100644
index 4bf641d2..00000000
--- a/tests/user/user_log_samples/add_user_password_error.log
+++ /dev/null
@@ -1,125 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- },
- "base:password": {
- "value": "********",
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
- ********
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 8
- 16
- 8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 4
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 8,
- "returnCode": 16,
- "reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 4,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_password_success.log b/tests/user/user_log_samples/add_user_password_success.log
deleted file mode 100644
index ad25b298..00000000
--- a/tests/user/user_log_samples/add_user_password_success.log
+++ /dev/null
@@ -1,125 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- },
- "base:password": {
- "value": "********",
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
- ********
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 0
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 0,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/add_user_success.log b/tests/user/user_log_samples/add_user_success.log
deleted file mode 100644
index e462fb22..00000000
--- a/tests/user/user_log_samples/add_user_success.log
+++ /dev/null
@@ -1,120 +0,0 @@
-
- [pyRACF:Debug]
- Request Dictionary
- UserAdmin.add()
-
-
-{
- "base": {
- "base:name": {
- "value": "Squidward",
- "operation": null
- },
- "base:owner": {
- "value": "leonard",
- "operation": null
- },
- "base:special": {
- "value": true,
- "operation": null
- }
- },
- "omvs": {
- "omvs:uid": {
- "value": "2424",
- "operation": null
- },
- "omvs:home": {
- "value": "/u/squidwrd",
- "operation": null
- },
- "omvs:program": {
- "value": "/bin/sh",
- "operation": null
- }
- }
-}
-
-
- [pyRACF:Debug]
- Request XML
- UserAdmin.add()
-
-
-
-
-
- Squidward
- leonard
-
-
-
- 2424
- /u/squidwrd
- /bin/sh
-
-
-
-
-
- [pyRACF:Debug]
- Result XML
- UserAdmin.add()
-
-
-
-
-
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
-
- 0
- 0
-
-
-
- [pyRACF:Debug]
- Result Dictionary
- UserAdmin.add()
-
-
-{
- "securityResult": {
- "user": {
- "name": "SQUIDWRD",
- "operation": "set",
- "requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
- },
- "returnCode": 0,
- "reasonCode": 0
- }
-}
-
diff --git a/tests/user/user_log_samples/alter_user_additional_secret_added_error.log b/tests/user/user_log_samples/alter_user_additional_secret_added_error.log
new file mode 100644
index 00000000..92d3947b
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_additional_secret_added_error.log
@@ -0,0 +1,283 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": "********",
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+
+
+ ********
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 8
+ 16
+ 8
+ ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (********))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
+
+
+ 4
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 8,
+ "image": "ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (********))",
+ "messages": [
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
+ ]
+ }
+ ]
+ },
+ "returnCode": 4,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_additional_secret_added_success.log b/tests/user/user_log_samples/alter_user_additional_secret_added_success.log
new file mode 100644
index 00000000..214ac28c
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_additional_secret_added_success.log
@@ -0,0 +1,275 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": "********",
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+
+
+ ********
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 0
+ 0
+ 0
+ ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (********))
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (********))"
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_error.log b/tests/user/user_log_samples/alter_user_error.log
new file mode 100644
index 00000000..93552625
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_error.log
@@ -0,0 +1,283 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": 90000000000,
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+
+
+ 90000000000
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 8
+ 16
+ 8
+ ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (90000000000))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
+
+
+ 4
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 8,
+ "image": "ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (90000000000))",
+ "messages": [
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
+ ]
+ }
+ ]
+ },
+ "returnCode": 4,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_passphrase_and_password_error.log b/tests/user/user_log_samples/alter_user_passphrase_and_password_error.log
new file mode 100644
index 00000000..48120c67
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_passphrase_and_password_error.log
@@ -0,0 +1,293 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ },
+ "base:password": {
+ "value": "********",
+ "operation": null
+ },
+ "base:passphrase": {
+ "value": "********",
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": 90000000000,
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+ ********
+ ********
+
+
+ 90000000000
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 8
+ 16
+ 8
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
+
+
+ 4
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 8,
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))",
+ "messages": [
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
+ ]
+ }
+ ]
+ },
+ "returnCode": 4,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_passphrase_and_password_success.log b/tests/user/user_log_samples/alter_user_passphrase_and_password_success.log
new file mode 100644
index 00000000..e5a0401a
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_passphrase_and_password_success.log
@@ -0,0 +1,285 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ },
+ "base:password": {
+ "value": "********",
+ "operation": null
+ },
+ "base:passphrase": {
+ "value": "********",
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": "2424",
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+ ********
+ ********
+
+
+ 2424
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 0
+ 0
+ 0
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_passphrase_error.log b/tests/user/user_log_samples/alter_user_passphrase_error.log
new file mode 100644
index 00000000..7ad51915
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_passphrase_error.log
@@ -0,0 +1,288 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ },
+ "base:passphrase": {
+ "value": "********",
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": 90000000000,
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+ ********
+
+
+ 90000000000
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 8
+ 16
+ 8
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
+
+
+ 4
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 8,
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))",
+ "messages": [
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
+ ]
+ }
+ ]
+ },
+ "returnCode": 4,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_passphrase_success.log b/tests/user/user_log_samples/alter_user_passphrase_success.log
new file mode 100644
index 00000000..a92acc47
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_passphrase_success.log
@@ -0,0 +1,280 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ },
+ "base:passphrase": {
+ "value": "********",
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": "2424",
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+ ********
+
+
+ 2424
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 0
+ 0
+ 0
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_password_error.log b/tests/user/user_log_samples/alter_user_password_error.log
new file mode 100644
index 00000000..918d0466
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_password_error.log
@@ -0,0 +1,288 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ },
+ "base:password": {
+ "value": "********",
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": 90000000000,
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+ ********
+
+
+ 90000000000
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 8
+ 16
+ 8
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
+
+
+ 4
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 8,
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))",
+ "messages": [
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
+ ]
+ }
+ ]
+ },
+ "returnCode": 4,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_password_success.log b/tests/user/user_log_samples/alter_user_password_success.log
new file mode 100644
index 00000000..384b8293
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_password_success.log
@@ -0,0 +1,280 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:name": {
+ "value": "Squidward",
+ "operation": null
+ },
+ "base:owner": {
+ "value": "leonard",
+ "operation": null
+ },
+ "base:special": {
+ "value": true,
+ "operation": null
+ },
+ "base:password": {
+ "value": "********",
+ "operation": null
+ }
+ },
+ "omvs": {
+ "omvs:uid": {
+ "value": "2424",
+ "operation": null
+ },
+ "omvs:home": {
+ "value": "/u/squidwrd",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": "/bin/sh",
+ "operation": null
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+ Squidward
+ leonard
+
+ ********
+
+
+ 2424
+ /u/squidwrd
+ /bin/sh
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 0
+ 0
+ 0
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_log_samples/alter_user_success.log b/tests/user/user_log_samples/alter_user_success.log
new file mode 100644
index 00000000..ac9f17af
--- /dev/null
+++ b/tests/user/user_log_samples/alter_user_success.log
@@ -0,0 +1,260 @@
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ LISTUSER SQUIDWRD
+ USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
+ DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
+ ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ LAST-ACCESS=23.094/12:55:37
+ CLASS AUTHORIZATIONS=NONE
+ NO-INSTALLATION-DATA
+ NO-MODEL-NAME
+ LOGON ALLOWED (DAYS) (TIME)
+ ---------------------------------------------
+ ANYDAY ANYTIME
+ GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094
+ CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN
+ CONNECT ATTRIBUTES=NONE
+ REVOKE DATE=NONE RESUME DATE=NONE
+ SECURITY-LEVEL=NONE SPECIFIED
+ CATEGORY-AUTHORIZATION
+ NONE SPECIFIED
+ SECURITY-LABEL=NONE SPECIFIED
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094",
+ " DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A",
+ " ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ " LAST-ACCESS=23.094/12:55:37",
+ " CLASS AUTHORIZATIONS=NONE",
+ " NO-INSTALLATION-DATA",
+ " NO-MODEL-NAME",
+ " LOGON ALLOWED (DAYS) (TIME)",
+ " ---------------------------------------------",
+ " ANYDAY ANYTIME",
+ " GROUP=SYS1 AUTH=USE CONNECT-OWNER=LEONARD CONNECT-DATE=23.094",
+ " CONNECTS= 00 UACC=NONE LAST-CONNECT=UNKNOWN",
+ " CONNECT ATTRIBUTES=NONE",
+ " REVOKE DATE=NONE RESUME DATE=NONE",
+ "SECURITY-LEVEL=NONE SPECIFIED",
+ "CATEGORY-AUTHORIZATION",
+ " NONE SPECIFIED",
+ "SECURITY-LABEL=NONE SPECIFIED"
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Result Dictionary (Formatted Profile)
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "LISTUSER SQUIDWRD ",
+ "profiles": [
+ {
+ "base": {
+ "user": "squidwrd",
+ "name": "squidward",
+ "owner": "leonard",
+ "created": "4/4/2023",
+ "defaultGroup": "sys1",
+ "passwordDate": null,
+ "passwordInterval": 186,
+ "passphraseDate": null,
+ "attributes": [],
+ "revokeDate": null,
+ "resumeDate": null,
+ "lastAccess": "4/4/2023 12:55 PM",
+ "classAuthorizations": [],
+ "logonAllowedDays": "anyday",
+ "logonAllowedTime": "anytime",
+ "groups": {
+ "SYS1": {
+ "auth": "use",
+ "connectOwner": "leonard",
+ "connectDate": "4/4/2023",
+ "connects": 0,
+ "uacc": null,
+ "lastConnect": "unknown",
+ "connectAttributes": [],
+ "revokeDate": null,
+ "resumeDate": null
+ }
+ },
+ "securityLevel": null,
+ "categoryAuthorization": null,
+ "securityLabel": null
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request Dictionary
+ UserAdmin.alter()
+
+
+{
+ "base": {
+ "base:special": {
+ "value": false,
+ "operation": "delete"
+ }
+ },
+ "omvs": {
+ "omvs:home": {
+ "value": "/u/clarinet",
+ "operation": null
+ },
+ "omvs:program": {
+ "value": false,
+ "operation": "delete"
+ }
+ }
+}
+
+
+ [pyRACF:Debug]
+ Request XML
+ UserAdmin.alter()
+
+
+
+
+
+
+
+
+ /u/clarinet
+
+
+
+
+
+
+ [pyRACF:Debug]
+ Result XML
+ UserAdmin.alter()
+
+
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 0
+ 0
+ 0
+ ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM )
+
+
+ 0
+ 0
+
+
+
+ [pyRACF:Debug]
+ Result Dictionary
+ UserAdmin.alter()
+
+
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "set",
+ "requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 0,
+ "returnCode": 0,
+ "reasonCode": 0,
+ "image": "ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM )"
+ }
+ ]
+ },
+ "returnCode": 0,
+ "reasonCode": 0
+ }
+}
+
diff --git a/tests/user/user_result_samples/add_user_result_error.json b/tests/user/user_result_samples/add_user_result_error.json
index 3e054d37..543c008a 100644
--- a/tests/user/user_result_samples/add_user_result_error.json
+++ b/tests/user/user_result_samples/add_user_result_error.json
@@ -1,28 +1,19 @@
{
"securityResult": {
"user": {
- "name": "SQUIDWRD",
+ "name": "squidward",
"operation": "set",
"requestId": "UserRequest",
- "commands": [
- {
- "safReturnCode": 8,
- "returnCode": 16,
- "reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
- ]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
- }
- ]
+ "error": {
+ "errorFunction": 10,
+ "errorCode": 2000,
+ "errorReason": 68,
+ "errorMessage": "Invalid attribute value specified.",
+ "errorOffset": 149,
+ "textInError": "name"
+ }
},
- "returnCode": 4,
- "reasonCode": 0
+ "returnCode": 2000,
+ "reasonCode": 68
}
}
\ No newline at end of file
diff --git a/tests/user/user_result_samples/add_user_result_error.xml b/tests/user/user_result_samples/add_user_result_error.xml
index 17fcd3c6..42675813 100644
--- a/tests/user/user_result_samples/add_user_result_error.xml
+++ b/tests/user/user_result_samples/add_user_result_error.xml
@@ -1,20 +1,15 @@
-
-
- 8
- 16
- 8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
-
+
+
+ 10
+ 2000
+ 68
+ Invalid attribute value specified.
+ 149
+ name
+
- 4
- 0
+ 2000
+ 68
\ No newline at end of file
diff --git a/tests/user/user_result_samples/alter_user_result_error.json b/tests/user/user_result_samples/alter_user_result_error.json
index 543c008a..e387aea5 100644
--- a/tests/user/user_result_samples/alter_user_result_error.json
+++ b/tests/user/user_result_samples/alter_user_result_error.json
@@ -1,19 +1,27 @@
{
"securityResult": {
"user": {
- "name": "squidward",
+ "name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
- "error": {
- "errorFunction": 10,
- "errorCode": 2000,
- "errorReason": 68,
- "errorMessage": "Invalid attribute value specified.",
- "errorOffset": 149,
- "textInError": "name"
- }
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 8,
+ "image": "ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (90000000000))",
+ "messages": [
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
+ ]
+ }
+ ]
},
- "returnCode": 2000,
- "reasonCode": 68
+ "returnCode": 4,
+ "reasonCode": 0
}
-}
\ No newline at end of file
+}
diff --git a/tests/user/user_result_samples/alter_user_result_error.xml b/tests/user/user_result_samples/alter_user_result_error.xml
index 42675813..8a62f076 100644
--- a/tests/user/user_result_samples/alter_user_result_error.xml
+++ b/tests/user/user_result_samples/alter_user_result_error.xml
@@ -1,15 +1,17 @@
-
-
- 10
- 2000
- 68
- Invalid attribute value specified.
- 149
- name
-
+
+ Definition exists. Add command skipped due to precheck option
+
+ 8
+ 16
+ 8
+ ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (90000000000))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
+
- 2000
- 68
+ 4
+ 0
\ No newline at end of file
diff --git a/tests/user/user_result_samples/alter_user_result_extended_success.xml b/tests/user/user_result_samples/alter_user_result_extended_success.xml
new file mode 100644
index 00000000..87293679
--- /dev/null
+++ b/tests/user/user_result_samples/alter_user_result_extended_success.xml
@@ -0,0 +1,14 @@
+
+
+
+ Definition exists. Add command skipped due to precheck option
+
+ 0
+ 0
+ 0
+ ALTUSER SQUIDWRD NOSPECIAL OMVS (HOME ('/u/clarinet') NOPROGRAM UID (2424))
+
+
+ 0
+ 0
+
\ No newline at end of file
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_and_password_error.json b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_error.json
similarity index 56%
rename from tests/user/user_result_samples/add_user_result_passphrase_and_password_error.json
rename to tests/user/user_result_samples/alter_user_result_passphrase_and_password_error.json
index b9ba8b26..d937bb8e 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_and_password_error.json
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_error.json
@@ -4,21 +4,20 @@
"name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
"commands": [
{
"safReturnCode": 8,
"returnCode": 16,
"reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))",
"messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
}
]
},
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_and_password_error.xml b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_error.xml
similarity index 57%
rename from tests/user/user_result_samples/add_user_result_passphrase_and_password_error.xml
rename to tests/user/user_result_samples/alter_user_result_passphrase_and_password_error.xml
index 0754c474..ae8f287f 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_and_password_error.xml
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_error.xml
@@ -1,18 +1,15 @@
+ Definition exists. Add command skipped due to precheck option
8
16
8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD ( ) PHRASE ( ) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD ( ) PHRASE ( ) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
4
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_and_password_success.json b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_success.json
similarity index 68%
rename from tests/user/user_result_samples/add_user_result_passphrase_and_password_success.json
rename to tests/user/user_result_samples/alter_user_result_passphrase_and_password_success.json
index 2272e108..bdbb9d44 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_and_password_success.json
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_success.json
@@ -4,16 +4,10 @@
"name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
"commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
{
"safReturnCode": 0,
"returnCode": 0,
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_and_password_success.xml b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_success.xml
similarity index 72%
rename from tests/user/user_result_samples/add_user_result_passphrase_and_password_success.xml
rename to tests/user/user_result_samples/alter_user_result_passphrase_and_password_success.xml
index 8a502749..58b50bf9 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_and_password_success.xml
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_and_password_success.xml
@@ -1,13 +1,7 @@
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
+ Definition exists. Add command skipped due to precheck option
0
0
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_error.json b/tests/user/user_result_samples/alter_user_result_passphrase_error.json
similarity index 57%
rename from tests/user/user_result_samples/add_user_result_passphrase_error.json
rename to tests/user/user_result_samples/alter_user_result_passphrase_error.json
index 7e0a60df..5b067f5c 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_error.json
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_error.json
@@ -4,21 +4,20 @@
"name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
"commands": [
{
"safReturnCode": 8,
"returnCode": 16,
"reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))",
"messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
}
]
},
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_error.xml b/tests/user/user_result_samples/alter_user_result_passphrase_error.xml
similarity index 58%
rename from tests/user/user_result_samples/add_user_result_passphrase_error.xml
rename to tests/user/user_result_samples/alter_user_result_passphrase_error.xml
index 7155fc95..98edd9d7 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_error.xml
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_error.xml
@@ -1,18 +1,15 @@
+ Definition exists. Add command skipped due to precheck option
8
16
8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE ( ) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PHRASE ( ) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
4
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_success.json b/tests/user/user_result_samples/alter_user_result_passphrase_success.json
similarity index 67%
rename from tests/user/user_result_samples/add_user_result_passphrase_success.json
rename to tests/user/user_result_samples/alter_user_result_passphrase_success.json
index a3da3294..153669eb 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_success.json
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_success.json
@@ -4,16 +4,10 @@
"name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
"commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
{
"safReturnCode": 0,
"returnCode": 0,
diff --git a/tests/user/user_result_samples/add_user_result_passphrase_success.xml b/tests/user/user_result_samples/alter_user_result_passphrase_success.xml
similarity index 71%
rename from tests/user/user_result_samples/add_user_result_passphrase_success.xml
rename to tests/user/user_result_samples/alter_user_result_passphrase_success.xml
index 1796a3a6..99696d89 100644
--- a/tests/user/user_result_samples/add_user_result_passphrase_success.xml
+++ b/tests/user/user_result_samples/alter_user_result_passphrase_success.xml
@@ -1,13 +1,7 @@
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
+ Definition exists. Add command skipped due to precheck option
0
0
diff --git a/tests/user/user_result_samples/add_user_result_password_error.json b/tests/user/user_result_samples/alter_user_result_password_error.json
similarity index 57%
rename from tests/user/user_result_samples/add_user_result_password_error.json
rename to tests/user/user_result_samples/alter_user_result_password_error.json
index c85706b0..b2792339 100644
--- a/tests/user/user_result_samples/add_user_result_password_error.json
+++ b/tests/user/user_result_samples/alter_user_result_password_error.json
@@ -4,21 +4,20 @@
"name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
"commands": [
{
"safReturnCode": 8,
"returnCode": 16,
"reasonCode": 8,
- "image": "ADDUSER SQUIDWRD ",
+ "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))",
"messages": [
- "IKJ56702I INVALID USERID, SQUIDWRD"
+ "IKJ56702I INVALID UID, 90000000000",
+ "IKJ56701I MISSING OMVS UID+",
+ "IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS"
]
- },
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD (********) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))"
}
]
},
diff --git a/tests/user/user_result_samples/add_user_result_password_error.xml b/tests/user/user_result_samples/alter_user_result_password_error.xml
similarity index 59%
rename from tests/user/user_result_samples/add_user_result_password_error.xml
rename to tests/user/user_result_samples/alter_user_result_password_error.xml
index 94046b54..8827d971 100644
--- a/tests/user/user_result_samples/add_user_result_password_error.xml
+++ b/tests/user/user_result_samples/alter_user_result_password_error.xml
@@ -1,18 +1,15 @@
+ Definition exists. Add command skipped due to precheck option
8
16
8
- ADDUSER SQUIDWRD
- IKJ56702I INVALID USERID, SQUIDWRD
-
-
- 0
- 0
- 0
- ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD ( ) OMVS (UID (2424) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ ALTUSER SQUIDWRD NAME ('Squidward') OWNER (leonard) SPECIAL PASSWORD ( ) OMVS (UID (90000000000) HOME ('/u/squidwrd') PROGRAM ('/bin/sh'))
+ IKJ56702I INVALID UID, 90000000000
+ IKJ56701I MISSING OMVS UID+
+ IKJ56701I MISSING OMVS USER ID (UID), 1-10 NUMERIC DIGITS
4
diff --git a/tests/user/user_result_samples/add_user_result_password_success.json b/tests/user/user_result_samples/alter_user_result_password_success.json
similarity index 67%
rename from tests/user/user_result_samples/add_user_result_password_success.json
rename to tests/user/user_result_samples/alter_user_result_password_success.json
index 0ba9cd36..44dcb6a3 100644
--- a/tests/user/user_result_samples/add_user_result_password_success.json
+++ b/tests/user/user_result_samples/alter_user_result_password_success.json
@@ -4,16 +4,10 @@
"name": "SQUIDWRD",
"operation": "set",
"requestId": "UserRequest",
+ "info": [
+ "Definition exists. Add command skipped due to precheck option"
+ ],
"commands": [
- {
- "safReturnCode": 0,
- "returnCode": 0,
- "reasonCode": 0,
- "image": "ADDUSER SQUIDWRD ",
- "messages": [
- "ICH01024I User SQUIDWRD is defined as PROTECTED."
- ]
- },
{
"safReturnCode": 0,
"returnCode": 0,
diff --git a/tests/user/user_result_samples/add_user_result_password_success.xml b/tests/user/user_result_samples/alter_user_result_password_success.xml
similarity index 71%
rename from tests/user/user_result_samples/add_user_result_password_success.xml
rename to tests/user/user_result_samples/alter_user_result_password_success.xml
index 5f85509a..85d01eb2 100644
--- a/tests/user/user_result_samples/add_user_result_password_success.xml
+++ b/tests/user/user_result_samples/alter_user_result_password_success.xml
@@ -1,13 +1,7 @@
-
- 0
- 0
- 0
- ADDUSER SQUIDWRD
- ICH01024I User SQUIDWRD is defined as PROTECTED.
-
+ Definition exists. Add command skipped due to precheck option
0
0
diff --git a/tests/user/user_result_samples/extract_user_result_base_only_error.json b/tests/user/user_result_samples/extract_user_result_base_only_error.json
new file mode 100644
index 00000000..7edd69fd
--- /dev/null
+++ b/tests/user/user_result_samples/extract_user_result_base_only_error.json
@@ -0,0 +1,22 @@
+{
+ "securityResult": {
+ "user": {
+ "name": "SQUIDWRD",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "commands": [
+ {
+ "safReturnCode": 8,
+ "returnCode": 16,
+ "reasonCode": 4,
+ "image": "LISTUSER SQUIDWRD ",
+ "messages": [
+ "ICH30001I UNABLE TO LOCATE USER ENTRY SQUIDWRD"
+ ]
+ }
+ ]
+ },
+ "returnCode": 4,
+ "reasonCode": 0
+ }
+}
\ No newline at end of file
diff --git a/tests/user/user_result_samples/extract_user_result_base_only_error.xml b/tests/user/user_result_samples/extract_user_result_base_only_error.xml
new file mode 100644
index 00000000..bf9d9089
--- /dev/null
+++ b/tests/user/user_result_samples/extract_user_result_base_only_error.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ 8
+ 16
+ 4
+ LISTUSER SQUIDWRD
+ ICH30001I UNABLE TO LOCATE USER ENTRY SQUIDWRD
+
+
+ 4
+ 0
+
\ No newline at end of file
diff --git a/tests/user/user_result_samples/extract_user_result_base_only_no_omvs_success.json b/tests/user/user_result_samples/extract_user_result_base_only_success.json
similarity index 96%
rename from tests/user/user_result_samples/extract_user_result_base_only_no_omvs_success.json
rename to tests/user/user_result_samples/extract_user_result_base_only_success.json
index b6af8ec6..15fdda78 100644
--- a/tests/user/user_result_samples/extract_user_result_base_only_no_omvs_success.json
+++ b/tests/user/user_result_samples/extract_user_result_base_only_success.json
@@ -9,7 +9,7 @@
"safReturnCode": 0,
"returnCode": 0,
"reasonCode": 0,
- "image": "LISTUSER SQUIDWRD OMVS ",
+ "image": "LISTUSER SQUIDWRD ",
"profiles": [
{
"base": {
diff --git a/tests/user/user_result_samples/extract_user_result_base_only_no_omvs_success.xml b/tests/user/user_result_samples/extract_user_result_base_only_success.xml
similarity index 92%
rename from tests/user/user_result_samples/extract_user_result_base_only_no_omvs_success.xml
rename to tests/user/user_result_samples/extract_user_result_base_only_success.xml
index cc34292c..61a46535 100644
--- a/tests/user/user_result_samples/extract_user_result_base_only_no_omvs_success.xml
+++ b/tests/user/user_result_samples/extract_user_result_base_only_success.xml
@@ -5,7 +5,7 @@
0
0
0
- LISTUSER SQUIDWRD OMVS
+ LISTUSER SQUIDWRD
USER=SQUIDWRD NAME=SQUIDWARD OWNER=LEONARD CREATED=23.094
DEFAULT-GROUP=SYS1 PASSDATE=00.000 PASS-INTERVAL=186 PHRASEDATE=N/A
ATTRIBUTES=NONE
@@ -25,8 +25,6 @@
CATEGORY-AUTHORIZATION
NONE SPECIFIED
SECURITY-LABEL=NONE SPECIFIED
-
- NO OMVS INFORMATION
0
diff --git a/tests/user/user_result_samples/extract_user_result_invattr_error.json b/tests/user/user_result_samples/extract_user_result_invattr_error.json
new file mode 100644
index 00000000..c15ae7cf
--- /dev/null
+++ b/tests/user/user_result_samples/extract_user_result_invattr_error.json
@@ -0,0 +1,19 @@
+{
+ "securityResult": {
+ "user": {
+ "name": "squidward",
+ "operation": "listdata",
+ "requestId": "UserRequest",
+ "error": {
+ "errorFunction": 10,
+ "errorCode": 2000,
+ "errorReason": 68,
+ "errorMessage": "Invalid attribute value specified.",
+ "errorOffset": 149,
+ "textInError": "name"
+ }
+ },
+ "returnCode": 2000,
+ "reasonCode": 68
+ }
+}
\ No newline at end of file
diff --git a/tests/user/user_result_samples/extract_user_result_invattr_error.xml b/tests/user/user_result_samples/extract_user_result_invattr_error.xml
new file mode 100644
index 00000000..fc284509
--- /dev/null
+++ b/tests/user/user_result_samples/extract_user_result_invattr_error.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ 10
+ 2000
+ 68
+ Invalid attribute value specified.
+ 149
+ name
+
+
+ 2000
+ 68
+
\ No newline at end of file