Common: Add Credentials.to_json_array()

This commit is contained in:
Mike Salvatore 2022-07-07 15:26:17 -04:00
parent 6bd0e7dc3a
commit 4edb4f6971
2 changed files with 38 additions and 15 deletions

View File

@ -185,8 +185,18 @@ class Credentials:
"""
Serialize a Credentials object to JSON
:param credentials: A Credentials objcet
:param credentials: A Credentials object
:return: A JSON string representing a Credentials object
"""
return CredentialsSchema().dumps(credentials)
@staticmethod
def to_json_array(credentials: Sequence[Credentials]) -> str:
"""
Serialize a Sequence of Credentials objects to a JSON array
:param credentials: A Sequence of Credentials objects
:return: A JSON string representing an array of Credentials objects
"""
return "[" + ",".join([Credentials.to_json(c) for c in credentials]) + "]"

View File

@ -89,20 +89,33 @@ def test_credentials_deserialization__invalid_component():
Credentials.from_mapping(invalid_data)
DESERIALIZED_CREDENTIALS_0 = Credentials.from_mapping(CREDENTIALS_DICT)
DESERIALIZED_CREDENTIALS_1 = Credentials(
secrets=(Password(PASSWORD),), identities=(Username("STUPID"),)
)
DESERIALIZED_CREDENTIALS_2 = Credentials(secrets=(LMHash(LM_HASH),), identities=tuple())
credentials_array_json = (
f"[{Credentials.to_json(DESERIALIZED_CREDENTIALS_0)},"
f"{Credentials.to_json(DESERIALIZED_CREDENTIALS_1)},"
f"{Credentials.to_json(DESERIALIZED_CREDENTIALS_2)}]"
)
def test_from_json_array():
deserialized_credentials_0 = Credentials.from_mapping(CREDENTIALS_DICT)
deserialized_credentials_1 = Credentials(
secrets=(Password(PASSWORD),), identities=(Username("STUPID"),)
)
deserialized_credentials_2 = Credentials(secrets=(LMHash(LM_HASH),), identities=tuple())
credentials_array_json = (
f"[{Credentials.to_json(deserialized_credentials_0)},"
f"{Credentials.to_json(deserialized_credentials_1)},"
f"{Credentials.to_json(deserialized_credentials_2)}]"
credentials_sequence = Credentials.from_json_array(credentials_array_json)
assert len(credentials_sequence) == 3
assert credentials_sequence[0] == DESERIALIZED_CREDENTIALS_0
assert credentials_sequence[1] == DESERIALIZED_CREDENTIALS_1
assert credentials_sequence[2] == DESERIALIZED_CREDENTIALS_2
def test_to_json_array():
expected_credentials_dict = json.loads(credentials_array_json)
actual_credentials_dict = json.loads(
Credentials.to_json_array(
[DESERIALIZED_CREDENTIALS_0, DESERIALIZED_CREDENTIALS_1, DESERIALIZED_CREDENTIALS_2]
)
)
credentials_sequence = Credentials.from_json_array(credentials_array_json)
assert len(credentials_sequence) == 3
assert credentials_sequence[0] == deserialized_credentials_0
assert credentials_sequence[1] == deserialized_credentials_1
assert credentials_sequence[2] == deserialized_credentials_2
assert actual_credentials_dict == expected_credentials_dict