)]}'
{"functionaltests/api/v1/functional/security_utils.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import urllib"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class Fuzzer(object):"},{"line_number":21,"context_line":"    def __init__(self, default_fuzz_type\u003d\u0027junk\u0027):"},{"line_number":22,"context_line":"        self.default_fuzz_type \u003d default_fuzz_type"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_1fe0bef9","line":20,"updated":"2015-08-10 15:27:15.000000000","message":"Not a huge fan of the structure of this class.  Ideally would like to see subclasses for each type of fuzz test.  That gets rid of most of the if/then/else statements.","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        elif fuzz_string_type \u003d\u003d \"unicode\":"},{"line_number":216,"context_line":"            for i in range(0, 0x1000):"},{"line_number":217,"context_line":"                fuzz_strings.append(unichr(i))"},{"line_number":218,"context_line":"            for i in range(0xf800, 0x10000):  # Random"},{"line_number":219,"context_line":"                fuzz_strings.append(unichr(i))"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        elif fuzz_string_type \u003d\u003d \"content_types\":"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_9cf7fc58","line":218,"updated":"2015-08-10 15:27:15.000000000","message":"what does the \"Random\" comment mean?","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        return fuzz_strings"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def get_dataset(self, fuzz_string_type):"},{"line_number":246,"context_line":"        \"\"\"Get the fuzz string dataset for use in parameterized tests\"\"\""},{"line_number":247,"context_line":"        strings \u003d self.get_strings(fuzz_string_type)"},{"line_number":248,"context_line":"        result \u003d {}"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_f5b458d5","line":246,"updated":"2015-08-10 15:27:15.000000000","message":"would like to see docstring indicating params and returns - esp returns since it returns something that could be construed as confusing (line 252)","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        return result"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def get_datasets(self, fuzz_string_types):"},{"line_number":256,"context_line":"        \"\"\"Get multiple datasets for use in parameterized tests\"\"\""},{"line_number":257,"context_line":"        result \u003d {}"},{"line_number":258,"context_line":"        for fuzz_type in fuzz_string_types:"},{"line_number":259,"context_line":"            strings \u003d self.get_strings(fuzz_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_b5aed07f","line":256,"updated":"2015-08-10 15:27:15.000000000","message":"add docstring with params and returns","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        return result"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def get_fuzz_string_name(self, fuzz_string_type, fuzz_string, num\u003dFalse):"},{"line_number":268,"context_line":"        \"\"\"Get the name of a fuzz string (pre-defined above or generated)\"\"\""},{"line_number":269,"context_line":"        result \u003d None"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if fuzz_string_type in self.named_types:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_95cdd45f","line":268,"updated":"2015-08-10 15:27:15.000000000","message":"add docstring with params and returns","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                result \u003d \"{0}_{1}\".format(result, num)"},{"line_number":285,"context_line":"        return result"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def verify_response(self, resp, fuzz_type\u003d\u0027generic\u0027):"},{"line_number":288,"context_line":"        \"\"\"Look for signs of vulnerability in fuzz test response based on type"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        - Assertion fail if 5XX HTTP status code"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_df6d769a","line":287,"updated":"2015-08-10 15:27:15.000000000","message":"would be better to return some error indication from this function and let the calling test handle the asserts.  Or possibly have this guy raise an exception and have the caller (ie the testcase itself) catch that exception and handle appropriately.","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        \"\"\"Look for signs of vulnerability in fuzz test response based on type"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        - Assertion fail if 5XX HTTP status code"},{"line_number":291,"context_line":"        - Assertion fail if indication of vulnerability found in respnse body"},{"line_number":292,"context_line":"        \"\"\""},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        fuzz_type \u003d fuzz_type.lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_d5011c6c","line":291,"updated":"2015-08-10 15:27:15.000000000","message":"typos on line 291","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"52ba81be69311ad85eab8ad0d5fc90e0b0809cf2","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        - Assertion fail if 5XX HTTP status code"},{"line_number":291,"context_line":"        - Assertion fail if indication of vulnerability found in respnse body"},{"line_number":292,"context_line":"        \"\"\""},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        fuzz_type \u003d fuzz_type.lower()"},{"line_number":295,"context_line":"        text \u003d resp.text.lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_bcdd1872","line":292,"updated":"2015-08-10 15:27:15.000000000","message":"add params and returns to docstring","commit_id":"ef0e4754d97b8894c2b8c9e41a41dcab293f8e22"}]}
