Common: Add LMHashSchema
This commit is contained in:
parent
68e52eb512
commit
def2381da6
|
@ -1,6 +1,15 @@
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
|
|
||||||
|
from marshmallow import fields
|
||||||
|
|
||||||
from . import CredentialComponentType, ICredentialComponent
|
from . import CredentialComponentType, ICredentialComponent
|
||||||
|
from .credential_component_schema import CredentialComponentSchema, CredentialTypeField
|
||||||
|
from .validators import ntlm_hash_validator
|
||||||
|
|
||||||
|
|
||||||
|
class LMHashSchema(CredentialComponentSchema):
|
||||||
|
credential_type = CredentialTypeField(CredentialComponentType.LM_HASH)
|
||||||
|
lm_hash = fields.Str(validate=ntlm_hash_validator)
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import pytest
|
import pytest
|
||||||
from marshmallow.exceptions import ValidationError
|
from marshmallow.exceptions import ValidationError
|
||||||
|
|
||||||
from common.credentials import CredentialComponentType, Password, Username
|
from common.credentials import CredentialComponentType, LMHash, Password, Username
|
||||||
|
from common.credentials.lm_hash import LMHashSchema
|
||||||
from common.credentials.password import PasswordSchema
|
from common.credentials.password import PasswordSchema
|
||||||
from common.credentials.username import UsernameSchema
|
from common.credentials.username import UsernameSchema
|
||||||
|
|
||||||
|
@ -12,16 +13,29 @@ PARAMETRIZED_PARAMETER_NAMES = (
|
||||||
PARAMETRIZED_PARAMETER_VALUES = [
|
PARAMETRIZED_PARAMETER_VALUES = [
|
||||||
(Password, PasswordSchema, CredentialComponentType.PASSWORD, "password", "123456"),
|
(Password, PasswordSchema, CredentialComponentType.PASSWORD, "password", "123456"),
|
||||||
(Username, UsernameSchema, CredentialComponentType.USERNAME, "username", "test_user"),
|
(Username, UsernameSchema, CredentialComponentType.USERNAME, "username", "test_user"),
|
||||||
|
(
|
||||||
|
LMHash,
|
||||||
|
LMHashSchema,
|
||||||
|
CredentialComponentType.LM_HASH,
|
||||||
|
"lm_hash",
|
||||||
|
"E52CAC67419A9A224A3B108F3FA6CB6D",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INVALID_VALUES = {
|
INVALID_VALUES = {
|
||||||
CredentialComponentType.USERNAME: (None, 1, 2.0),
|
CredentialComponentType.USERNAME: (None, 1, 2.0),
|
||||||
CredentialComponentType.PASSWORD: (None, 1, 2.0),
|
CredentialComponentType.PASSWORD: (None, 1, 2.0),
|
||||||
|
CredentialComponentType.LM_HASH: (
|
||||||
|
None,
|
||||||
|
1,
|
||||||
|
2.0,
|
||||||
|
"0123456789012345678901234568901",
|
||||||
|
"E52GAC67419A9A224A3B108F3FA6CB6D",
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def build_component_dict(credential_component_type: CredentialComponentType, key: str, value: str):
|
def build_component_dict(credential_component_type: CredentialComponentType, key: str, value: str):
|
||||||
return {"credential_type": credential_component_type.name, key: value}
|
return {"credential_type": credential_component_type.name, key: value}
|
||||||
|
|
||||||
|
@ -31,9 +45,7 @@ def test_credential_component_serialize(
|
||||||
credential_component_class, schema_class, credential_component_type, key, value
|
credential_component_class, schema_class, credential_component_type, key, value
|
||||||
):
|
):
|
||||||
schema = schema_class()
|
schema = schema_class()
|
||||||
print(type(schema))
|
|
||||||
constructed_object = credential_component_class(value)
|
constructed_object = credential_component_class(value)
|
||||||
print(type(constructed_object))
|
|
||||||
|
|
||||||
serialized_object = schema.dump(constructed_object)
|
serialized_object = schema.dump(constructed_object)
|
||||||
|
|
||||||
|
@ -80,6 +92,7 @@ def test_encorrect_credential_type(
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
credential_component_class(**schema.load(incorrect_component_dict))
|
credential_component_class(**schema.load(incorrect_component_dict))
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(PARAMETRIZED_PARAMETER_NAMES, PARAMETRIZED_PARAMETER_VALUES)
|
@pytest.mark.parametrize(PARAMETRIZED_PARAMETER_NAMES, PARAMETRIZED_PARAMETER_VALUES)
|
||||||
def test_invalid_values(
|
def test_invalid_values(
|
||||||
credential_component_class, schema_class, credential_component_type, key, value
|
credential_component_class, schema_class, credential_component_type, key, value
|
||||||
|
|
Loading…
Reference in New Issue