primitives.restler_custom_payload("/storeProperties/tags", quoted=False),
 primitives.restler_static_string("""
     }
 ,
 "deliveryProperties":
     {
         "tags":"""),
 primitives.restler_fuzzable_object("{ \"fuzz\": false }"),
 primitives.restler_static_string("""
     }
 ,
 "rush":"""),
 primitives.restler_fuzzable_bool("true"),
 primitives.restler_static_string(""",
 "bagType":"""),
 primitives.restler_fuzzable_string("fuzzstring", quoted=True),
 primitives.restler_static_string(""",
 "items":
 [
     {
         "name":"""),
 primitives.restler_fuzzable_string("fuzzstring", quoted=True),
 primitives.restler_static_string(""",
         "deliveryTags":"""),
 primitives.restler_fuzzable_object("{ \"fuzz\": false }"),
 primitives.restler_static_string(""",
         "code":"""),
 primitives.restler_custom_payload("code", quoted=False),
 primitives.restler_static_string(""",
         "storeId":"""),
 primitives.restler_fuzzable_int("1"),
示例#2
0
request = requests.Request([
    primitives.restler_static_string("PUT "),
    primitives.restler_static_string("/"),
    primitives.restler_static_string("city"),
    primitives.restler_static_string("/"),
    primitives.restler_custom_payload_uuid4_suffix("cityName"),
    primitives.restler_static_string(" HTTP/1.1\r\n"),
    primitives.restler_static_string("Accept: application/json\r\n"),
    primitives.restler_static_string("Host: restler.unit.test.server.com\r\n"),
    primitives.restler_static_string("Content-Type: application/json\r\n"),
    primitives.restler_static_string("\r\n"),
    primitives.restler_static_string("{"),
    primitives.restler_static_string('"population":'),
    primitives.restler_fuzzable_int('10000', quoted=True),
    primitives.restler_static_string(', "area": "5000",'),
    primitives.restler_fuzzable_string('strtest', quoted=True),
    primitives.restler_static_string(':'),
    primitives.restler_fuzzable_bool('true', quoted=True),
    primitives.restler_static_string("}"),
    primitives.restler_refreshable_authentication_token(
        "authentication_token_tag"),
    primitives.restler_static_string("\r\n"),
    {
        'post_send': {
            'parser': parse_cityNamePut,
            'dependencies': [_city_put_name.writer()]
        }
    },
],
                           requestId="/city/{cityName}")
req_collection.add_request(request)
示例#3
0
    def get_fuzzing_blocks(self, config):
        """ Returns the fuzzing request blocks per the config

        @return: The list of request blocks
        @rtype : List[str]

        """
        # default value
        default_value = config.get_default_value(
            self.tag, primitives.FUZZABLE_STRING, self._content
        )

        def not_like_string(val):
            """ Tests if a value seems to be some type other
            than a string (i.e. array, dict, bool, int) """

            if not val or not isinstance(val, str):
                return True

            if val[0] == '[' and val[-1] == ']':
                return True
            if val[0] == '{' and val[-1] == '}':
                return True
            if val.lower() == 'true' or val.lower() == 'false':
                return True

            try:
                v = int(val)
                return True
            except Exception:
                pass

            return False

        if self.is_unknown and not_like_string(default_value):
            # Try to get a new default value without a hint
            default_value = config.get_default_value(
                self.tag, primitives.FUZZABLE_STRING, hint=None
            )
            if not_like_string(default_value):
                return [primitives.restler_static_string(default_value, quoted=False)]

        if not self.is_fuzzable():
            return [primitives.restler_static_string(default_value, quoted=True)]

        # fuzz as normal fuzzable string
        if not config.merge_fuzzable_values:
            blocks = []
            blocks.append(primitives.restler_fuzzable_string(default_value), quoted=True)
            return blocks

        # get the set of fuzzable values
        fuzzable_values_raw = config.get_fuzzable_values(
            self.tag, primitives.FUZZABLE_STRING
        )

        fuzzable_values = [
            f'"{value}"' for value in fuzzable_values_raw
        ]

        # merge default + fuzzable values
        fuzzable_group = config.cleanup_fuzzable_group(
            f'"{default_value}"', fuzzable_values
        )
        return [(primitives.FUZZABLE_GROUP, fuzzable_group)]