class RequestParserTest(unittest.TestCase): def setUp(self): self.env = {} self.env['wsgi.input'] = Mock() def test_ignores_requests_without_json_payload(self): self.env = 'some_text' self.request_parser = RequestParser(self.env) self.request = self.request_parser.parse() self.assertEquals(self.request, None) def test_detects_modified_files_in_single_commit(self): self.env['wsgi.input'].read.return_value = simple_payload self.request_parser = RequestParser(self.env) self.request = self.request_parser.parse() modified_files = set(['file4.py', 'file3.py']) self.assertEquals(self.request.modified_files, modified_files) def test_same_modified_file_is_detected_only_once_in_multiple_commits(self): self.env['wsgi.input'].read.return_value = complex_payload self.request_parser = RequestParser(self.env) self.request = self.request_parser.parse() modified_files = set(['file4.py', 'file3.py', 'file5.py']) self.assertEquals(self.request.modified_files, modified_files)
def listen(env, start_response): """ Basic POST request listener Just forwards request payload to RequestParser Response is irrelevant, nobody's listening... """ request_parser = RequestParser(env) request_parser.parse() response_headers = [('Content-Type', 'text/plain')] start_response('200 OK', response_headers) return ""
def get_response(): request_parser = RequestParser(request) analysis_config, analysis_request = request_parser.parse() content = request.files.get('content') file_name = content.filename date_time_str = str(datetime.now()).replace("-", "_").replace(" ", "_").replace(":", "_").replace(".", "_") file_path = "uploads/{}_{}".format(date_time_str, file_name) content.save(file_path) return_file_name , saved_file_path = log_processor.process(file_path, analysis_config, analysis_request) si = io.StringIO() cw = csv.writer(si) csv_rows = [] i=0 with open(saved_file_path, 'r', newline='') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') for row in csv_reader: csv_rows.append(row) i+=1 print(i) output='The result of your query : '+str(i-1)+ ''' . The full report is downloaded automatically. you can find the report in the project directory: '''+saved_file_path cw.writerows(csv_rows) response = make_response(si.getvalue()) response.headers["Content-Disposition"] = f"attachment; filename={return_file_name}" response.headers["Content-type"] = "text/csv" return render_template('base.html',output=output) return response, 200
def test_response_parse(): request_parser = RequestParser() data = good_req raw_data = bytearray(data, 'utf-8') parsed_req = request_parser.parse(raw_data) assert parsed_req.headers["Host"] == 'www.google.com'