Ejemplo n.º 1
0
    def testCombinedEtagRequirements(self, mock_universe):
        validator = entity_instance.CombinationValidator(
            mock_universe, _UPDATE_CFG, {})
        no_tag = entity_instance.EntityInstance(_UPDATE, 'VAV-123')
        no_tag_delete = entity_instance.EntityInstance(_DELETE, 'VAV-123')

        self.assertFalse(validator.Validate(no_tag))
        self.assertTrue(validator.Validate(no_tag_delete))
Ejemplo n.º 2
0
    def testCombinedChecksInstanceAndGraph(self, mock_entity, mock_gv, mock_iv,
                                           mock_universe):
        validator = entity_instance.CombinationValidator(
            mock_universe, _UPDATE_CFG, {})

        self.assertTrue(validator.Validate(mock_entity))
        mock_iv.assert_called_once_with(mock_entity)
        mock_gv.assert_called_once_with(mock_entity)
    def testValidateGoodGuidFormat(self):
        parsed = _Helper(
            [path.join(_TESTCASE_PATH, 'GOOD', 'good_guid_format.yaml')])
        entity_instances = {}
        for entity_guid, entity in parsed.items():
            instance = entity_instance.EntityInstance.FromYaml(
                entity_guid, entity, code_to_guid_map={})
            entity_instances[instance.guid] = instance

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        for _, instance in entity_instances.items():
            self.assertTrue(combination_validator.Validate(instance))
Ejemplo n.º 4
0
    def testValidateGoodLinkToPassthroughEntity(self):
        parsed = _Helper(
            [path.join(_TESTCASE_PATH, 'GOOD', 'good_links_passthrough.yaml')])
        entity_instances = {}
        parsed = dict(parsed)
        for raw_entity in list(parsed):
            entity_parsed = dict(parsed[raw_entity])
            entity = entity_instance.EntityInstance.FromYaml(entity_parsed)
            entity_instances[raw_entity] = entity

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        for _, instance in entity_instances.items():
            self.assertTrue(combination_validator.Validate(instance))
Ejemplo n.º 5
0
    def testValidateGoodLinkWithIncrementEntityName(self):
        parsed = _Helper(
            # KW: this one is a entity_franken-type it definitely won't make sense
            [path.join(_TESTCASE_PATH, 'GOOD', 'good_links_increment.yaml')])
        entity_instances = {}
        parsed = dict(parsed)
        for raw_entity in list(parsed):
            entity_parsed = dict(parsed[raw_entity])
            entity = entity_instance.EntityInstance.FromYaml(entity_parsed)
            entity_instances[raw_entity] = entity

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        for _, instance in entity_instances.items():
            self.assertTrue(combination_validator.Validate(instance))
Ejemplo n.º 6
0
    def testValidateBadLinkMissingField(self):
        parsed = _Helper(
            [path.join(_TESTCASE_PATH, 'BAD', 'bad_links_missing_field.yaml')])
        entity_instances = {}
        parsed = dict(parsed)
        for raw_entity in list(parsed):
            entity_parsed = dict(parsed[raw_entity])
            entity = entity_instance.EntityInstance.FromYaml(entity_parsed)
            entity_instances[raw_entity] = entity

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        self.assertFalse(
            combination_validator.Validate(
                entity_instances.get('ENTITY-NAME')))
    def testValidateGoodLinkToPassthroughEntity(self):
        parsed = _Helper(
            [path.join(_TESTCASE_PATH, 'GOOD', 'good_links_passthrough.yaml')])
        entity_instances = {}
        for entity_code, entity_parsed in parsed.items():
            entity = entity_instance.EntityInstance.FromYaml(
                entity_code,
                entity_parsed,
                code_to_guid_map={'GATEWAY-ENTITY': 'GATEWAY-ENTITY-guid'})
            entity_instances[entity.guid] = entity

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        for _, instance in entity_instances.items():
            self.assertTrue(combination_validator.Validate(instance))
    def testValidateGoodLinkWithIncrementEntityName(self):
        parsed = _Helper(
            # KW: this one is a entity_franken-type it definitely won't make sense
            [path.join(_TESTCASE_PATH, 'GOOD', 'good_links_increment.yaml')])
        entity_instances = {}
        for entity_code, entity_parsed in parsed.items():
            entity = entity_instance.EntityInstance.FromYaml(
                entity_code,
                entity_parsed,
                code_to_guid_map={'PHYSICAL-ENTITY': 'PHYSICAL-ENTITY-guid'})
            entity_instances[entity.guid] = entity

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        for _, instance in entity_instances.items():
            self.assertTrue(combination_validator.Validate(instance))
    def testValidateBadLinkMissingField(self):
        parsed = _Helper(
            [path.join(_TESTCASE_PATH, 'BAD', 'bad_links_missing_field.yaml')])
        entity_instances = {}
        for entity_code, entity_parsed in parsed.items():
            entity = entity_instance.EntityInstance.FromYaml(
                entity_code,
                entity_parsed,
                code_to_guid_map={'A-FOURTH-ENTITY': 'A-FOURTH-ENTITY-guid'})
            entity_instances[entity.guid] = entity

        combination_validator = entity_instance.CombinationValidator(
            self.config_universe, _INIT_CFG, entity_instances)
        self.assertFalse(
            combination_validator.Validate(
                entity_instances.get('ENTITY-NAME-guid')))
Ejemplo n.º 10
0
    def Validate(
        self, entities: Dict[str, entity_instance.EntityInstance],
        config_mode: instance_parser.ConfigMode
    ) -> Dict[str, entity_instance.EntityInstance]:
        """Validates entity instances that are already deserialized.

    Args:
      entities: a dict of entity instances
      config_mode: processing mode of the configuration

    Returns:
      A dictionary containing valid entities by name

    Raises:
      SyntaxError: If no building is found in the config
    """
        print('Validating entities ...')
        building_found = False
        valid_entities = {}
        validator = entity_instance.CombinationValidator(
            self.universe, config_mode, entities)
        for entity_name, current_entity in entities.items():
            if (current_entity.operation
                    is not instance_parser.EntityOperation.DELETE
                    and current_entity.type_name.lower() == 'building'):
                building_found = True
            if not validator.Validate(current_entity):
                print(entity_name, 'is not a valid instance')
                continue
            valid_entities[entity_name] = current_entity

        if not building_found:
            print(
                'Config must contain a non-deleted entity with a building type'
            )
            raise SyntaxError('Building Config must contain an '
                              'entity with a building type')
        print('All entities validated')
        return valid_entities