def common_param_sampler(param: Param, n: int): gold_values = { 'email': 'user{}@company.com', 'username': '******', } values = [] if gold_values.get(param.name): p = gold_values.get(param.name) for i in range(1, n + 1): values.append(p.format(i)) if ParamUtils.is_identifier(param.name): for i in range(1, n + 1): values.append(i) fake = Faker() if 'date' in param.name: for i in range(1, n + 1): values.append( fake.date_between(start_date='today', end_date='+1y')) values = [str(v) for v in values] if param.type in {'integer', 'number'}: s = randint(0, 2000) values = [str(i) for i in range(s, n + s)] if param.type == 'boolean': values = ['false', 'true'] return set(values)
def __resource_type(previous, segment, current_tag, url): """ :return: is singleton, Collection, sub-Collection """ current = segment is_param = ParamUtils.is_param(current) if is_param: current = current[1:-1] current = ParamUtils.normalize(current) if not is_param: if current.startswith("by"): return FILTER_RESOURCE if current.startswith("search") or current.endswith("search") or current.startswith( "query") or current.endswith("query"): return SEARCH_RESOURCE if "count" == current: return COUNT_RESOURCE if "all" == current: return ALL_RESOURCE if ParamUtils.is_authentication(current): return AUTH_RESOURCE if current in {"swagger", "yaml"}: return SWAGGER_RESOURCE if current in {'pdf', 'json', 'xml', 'txt', 'doc', 'docx', 'jpeg', 'jpg', 'gif', 'png', 'xls', 'tsv', 'csv', 'fmw'}: return FILE_EXTENSION_RESOURCE if is_param and current in {"format"}: return FILE_EXTENSION_RESOURCE if is_param and previous: if current in previous: return SINGLETON if (current_tag.startswith('NNS') or is_plural(previous)) and ParamUtils.is_identifier(current): return SINGLETON if (current.endswith('name') or current.endswith('type')) and "{}.".format(segment) not in url: return SINGLETON if singular(previous) in current: return SINGLETON if editdistance.eval(current, previous) / (len(current) + len(previous)) < 0.4: return SINGLETON if current_tag.startswith('NNS') or is_plural(current): return COLLECTION if current_tag.startswith('jj') or is_adjective(current) or \ current.endswith('ed') or (current_tag.startswith('VB') and current.startswith('is')): return ATTRIBUTE_RESOURCE if (current_tag.startswith('VB') or is_verb(current)) and not is_param: return ACTION_RESOURCE words = current.split() if len(words) > 1 and is_verb(words[0]) and not is_param: return METHOD_NAME_RESOURCE if is_param: return UNKNOWN_PARAM_RESOURCE if ParamUtils.is_version(current): return VERSION_RESOURCE return UNKNOWN_RESOURCE