class TestAttributeValueFactory(TestCase):

    def setUp(self):
        super(TestAttributeValueFactory, self).setUp()
        self.factory = AttributeValueFactory()

    def tearDown(self):
        super(TestAttributeValueFactory, self).tearDown()

    # TODO (peter-hamilton) Consider even further modularity
    def _test_operation_policy_name(self, opn, value):
        if value is None:
            value = ''

        msg = "expected {0}, received {1}".format(OperationPolicyName, opn)
        self.assertIsInstance(opn, OperationPolicyName, msg)

        msg = "expected {0}, received {1}".format(value, opn.value)
        self.assertEqual(value, opn.value, msg)

    def _test_create_attribute_value_operation_policy_name(self, value):
        opn = self.factory.create_attribute_value(
            AttributeType.OPERATION_POLICY_NAME, value)
        self._test_operation_policy_name(opn, value)

    def _test_create_operation_policy_name(self, value):
        opn = self.factory._create_operation_policy_name(value)
        self._test_operation_policy_name(opn, value)

    def test_create_attribute_value_operation_policy_name(self):
        self._test_create_attribute_value_operation_policy_name('test')

    def test_create_attribute_value_operation_policy_name_on_none(self):
        self._test_create_attribute_value_operation_policy_name(None)

    def test_create_operation_policy_name(self):
        self._test_create_operation_policy_name('test')

    def test_create_operation_policy_name_on_none(self):
        self._test_create_operation_policy_name(None)
Example #2
0
class TestAttributeValueFactory(TestCase):

    def setUp(self):
        super(TestAttributeValueFactory, self).setUp()
        self.factory = AttributeValueFactory()

    def tearDown(self):
        super(TestAttributeValueFactory, self).tearDown()

    # TODO (peter-hamilton) Consider even further modularity
    def _test_operation_policy_name(self, opn, value):
        if value is None:
            value = ''

        msg = "expected {0}, received {1}".format(OperationPolicyName, opn)
        self.assertIsInstance(opn, OperationPolicyName, msg)

        msg = "expected {0}, received {1}".format(value, opn.value)
        self.assertEqual(value, opn.value, msg)

    def _test_create_attribute_value_operation_policy_name(self, value):
        opn = self.factory.create_attribute_value(
            AttributeType.OPERATION_POLICY_NAME, value)
        self._test_operation_policy_name(opn, value)

    def _test_create_operation_policy_name(self, value):
        opn = self.factory._create_operation_policy_name(value)
        self._test_operation_policy_name(opn, value)

    def test_create_attribute_value_operation_policy_name(self):
        self._test_create_attribute_value_operation_policy_name('test')

    def test_create_attribute_value_operation_policy_name_on_none(self):
        self._test_create_attribute_value_operation_policy_name(None)

    def test_create_operation_policy_name(self):
        self._test_create_operation_policy_name('test')

    def test_create_operation_policy_name_on_none(self):
        self._test_create_operation_policy_name(None)

    def _test_cryptograpic_parameters(self, obj, block_cipher_mode,
                                      padding_method, key_role_type,
                                      hashing_algorithm):
        msg = "expected {0}, received {1}"
        self.assertIsInstance(obj, CryptographicParameters, msg.format(
            CryptographicParameters, obj.__class__))

        self.assertEqual(block_cipher_mode, obj.block_cipher_mode, msg.format(
            block_cipher_mode, obj.block_cipher_mode))

        self.assertEqual(padding_method, obj.padding_method, msg.format(
            padding_method, obj.padding_method))

        self.assertEqual(key_role_type, obj.key_role_type, msg.format(
            key_role_type, obj.hashing_algorithm))

        self.assertEqual(hashing_algorithm, obj.hashing_algorithm, msg.format(
            hashing_algorithm, obj.hashing_algorithm))

    def test_create_cryptograpic_parameters_none(self):
        cp = self.factory.create_attribute_value(
            AttributeType.CRYPTOGRAPHIC_PARAMETERS,
            {})
        self._test_cryptograpic_parameters(cp, None, None, None, None)

    def test_create_cryptograpic_parameters_block_cipher_mode(self):
        cp = self.factory.create_attribute_value(
            AttributeType.CRYPTOGRAPHIC_PARAMETERS,
            {'block_cipher_mode': BlockCipherMode.NIST_KEY_WRAP})

        self._test_cryptograpic_parameters(
            cp, CryptographicParameters.BlockCipherMode(
                BlockCipherMode.NIST_KEY_WRAP),
            None, None, None)

    def test_create_cryptograpic_parameters_padding_method(self):
        cp = self.factory.create_attribute_value(
            AttributeType.CRYPTOGRAPHIC_PARAMETERS,
            {'padding_method': PaddingMethod.ANSI_X9_23})

        # noqa - E128 continuation line under-indented for visual indent
        self._test_cryptograpic_parameters(cp, None,
            CryptographicParameters.PaddingMethod(PaddingMethod.ANSI_X9_23),
            None, None)  # noqa

    def test_create_cryptograpic_parameters_key_role_type(self):
        cp = self.factory.create_attribute_value(
            AttributeType.CRYPTOGRAPHIC_PARAMETERS,
            {'key_role_type': KeyRoleType.KEK})

        # noqa - E128 continuation line under-indented for visual indent
        self._test_cryptograpic_parameters(cp, None, None,
            CryptographicParameters.KeyRoleType(KeyRoleType.KEK),
            None)  # noqa

    def test_create_cryptograpic_parameters_hashing_algorithm(self):
        cp = self.factory.create_attribute_value(
            AttributeType.CRYPTOGRAPHIC_PARAMETERS,
            {'hashing_algorithm': HashingAlgorithm.SHA_512})

        # noqa - E128 continuation line under-indented for visual indent
        self._test_cryptograpic_parameters(cp, None, None, None,
            attributes.HashingAlgorithm(HashingAlgorithm.SHA_512))  # noqa

    def _test_date_value(self, date, value, tag):
        msg = "expected {0}, received {1}"
        self.assertIsInstance(date, DateTime, msg.format(
            DateTime, date.__class__))

        self.assertEqual(date.value, value, msg.format(value, date.value))
        self.assertEqual(date.tag, tag, msg.format(tag, date.tag))

    def test_create_initial_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.INITIAL_DATE, 0)
        self._test_date_value(date, 0, Tags.INITIAL_DATE)

    def test_create_activation_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.ACTIVATION_DATE, 0)
        self._test_date_value(date, 0, Tags.ACTIVATION_DATE)

    def test_create_process_start_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.PROCESS_START_DATE, 0)
        self._test_date_value(date, 0, Tags.PROCESS_START_DATE)

    def test_create_protect_stop_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.PROTECT_STOP_DATE, 0)
        self._test_date_value(date, 0, Tags.PROTECT_STOP_DATE)

    def test_create_deactivation_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.DEACTIVATION_DATE, 0)
        self._test_date_value(date, 0, Tags.DEACTIVATION_DATE)

    def test_create_destroy_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.DESTROY_DATE, 0)
        self._test_date_value(date, 0, Tags.DESTROY_DATE)

    def test_create_compromise_occurance_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.COMPROMISE_OCCURRENCE_DATE, 0)
        self._test_date_value(date, 0, Tags.COMPROMISE_OCCURRENCE_DATE)

    def test_create_compromise_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.COMPROMISE_DATE, 0)
        self._test_date_value(date, 0, Tags.COMPROMISE_DATE)

    def test_create_archive_date(self):
        date = self.factory.create_attribute_value(
            AttributeType.ARCHIVE_DATE, 0)
        self._test_date_value(date, 0, Tags.ARCHIVE_DATE)