Exemplo n.º 1
0
def ValidateRoboDirectivesList(args):
    """Validates key-value pairs for 'robo_directives' flag."""
    resource_names = set()
    duplicates = set()
    for key, value in six.iteritems((args.robo_directives or {})):
        (action_type, resource_name) = util.ParseRoboDirectiveKey(key)
        if action_type == 'click' and value:
            raise test_exceptions.InvalidArgException(
                'robo_directives',
                'Input value not allowed for click action: [{0}={1}]'.format(
                    key, value))

        # Validate resource_name validity
        if not resource_name:
            raise test_exceptions.InvalidArgException(
                'robo_directives',
                'Missing resource_name for key [{0}].'.format(key))

        # Validate resource name uniqueness
        if resource_name in resource_names:
            duplicates.add(resource_name)
        else:
            resource_names.add(resource_name)

    if duplicates:
        raise test_exceptions.InvalidArgException(
            'robo_directives',
            'Duplicate resource names are not allowed: [{0}].'.format(
                ', '.join(duplicates)))
Exemplo n.º 2
0
 def _BuildRoboDirectives(self, robo_directives_dict):
     """Build a list of RoboDirectives from the dictionary input."""
     robo_directives = []
     action_types = self._messages.RoboDirective.ActionTypeValueValuesEnum
     action_type_mapping = {
         'click': action_types.SINGLE_CLICK,
         'text': action_types.ENTER_TEXT
     }
     for key, value in six.iteritems((robo_directives_dict or {})):
         (action_type, resource_name) = util.ParseRoboDirectiveKey(key)
         robo_directives.append(
             self._messages.RoboDirective(
                 resourceName=resource_name,
                 inputText=value,
                 actionType=action_type_mapping.get(action_type)))
     return robo_directives