def test_check_for_errors(self): valid_request = {'a': 'some', 'b': 'some data'} self.assertEqual(len(check_for_errors(valid_request)), 0, 'errors found but all entries are valid') invalid_request = {'a': 'some_data', 'b': None} result = check_for_errors(invalid_request) self.assertEqual(len(result), 1, 'number of invalid fields not correct') self.assertEqual(result['b'], 'Please specify the b')
def test_check_for_errors(self): valid_request = {"a": "some", "b": "some data"} self.assertEqual(len(check_for_errors(valid_request)), 0, "errors found but all entries are valid") invalid_request = {"a": "some_data", "b": None} result = check_for_errors(invalid_request) self.assertEqual(len(result), 1, "number of invalid fields not correct") self.assertEqual(result['b'], "Please specify the b")
def _app_upload(self): error = {} if request.method == 'POST': analysis_task = create_analysis_task(request) error = check_for_errors(analysis_task) if not error: fw = convert_analysis_task_to_fw_obj(analysis_task) with ConnectTo(InterComFrontEndBinding, self._config) as sc: sc.add_analysis_task(fw) return render_template('upload/upload_successful.html', uid=analysis_task['uid']) with ConnectTo(FrontEndDbInterface, self._config) as sc: device_class_list = sc.get_device_class_list() vendor_list = sc.get_vendor_list() device_name_dict = sc.get_device_name_dict() with ConnectTo(InterComFrontEndBinding, self._config) as sc: analysis_plugins = sc.get_available_analysis_plugins() analysis_presets = [key for key in self._config['default_plugins']] return render_template('upload/upload.html', device_classes=device_class_list, vendors=vendor_list, error=error, analysis_presets=analysis_presets, device_names=json.dumps(device_name_dict, sort_keys=True), analysis_plugin_dict=analysis_plugins)
def _update_analysis_post(self, uid, re_do=False): analysis_task = create_re_analyze_task(request, uid=uid) error = check_for_errors(analysis_task) if error: return redirect(url_for(self._update_analysis_get.__name__, uid=uid, re_do=re_do, error=error)) self._schedule_re_analysis_task(uid, analysis_task, re_do) return render_template('upload/upload_successful.html', uid=uid)
def post_update_analysis(self, uid, re_do=False): analysis_task = create_re_analyze_task(request, uid=uid) force_reanalysis = request.form.get('force_reanalysis') == 'true' error = check_for_errors(analysis_task) if error: return self.get_update_analysis(uid=uid, re_do=re_do, error=error) self._schedule_re_analysis_task(uid, analysis_task, re_do, force_reanalysis) return render_template('upload/upload_successful.html', uid=uid)
def post_upload(self): analysis_task = create_analysis_task(request, self._config) error = check_for_errors(analysis_task) if error: return self.get_upload(error=error) fw = convert_analysis_task_to_fw_obj(analysis_task) with ConnectTo(InterComFrontEndBinding, self._config) as sc: sc.add_analysis_task(fw) return render_template('upload/upload_successful.html', uid=analysis_task['uid'])
def _update_analysis(self, uid, re_do=False): error = {} if request.method == 'POST': analysis_task = create_re_analyze_task(request, uid=uid) error = check_for_errors(analysis_task) if not error: self._schedule_re_analysis_task(uid, analysis_task, re_do) return render_template('upload/upload_successful.html', uid=uid) with ConnectTo(FrontEndDbInterface, self._config) as sc: old_firmware = sc.get_object(uid=uid, analysis_filter=[]) if old_firmware is None: return render_template('uid_not_found.html', uid=uid) with ConnectTo(FrontEndDbInterface, self._config) as sc: device_class_list = sc.get_device_class_list() device_class_list.remove(old_firmware.device_class) with ConnectTo(FrontEndDbInterface, self._config) as sc: vendor_list = sc.get_vendor_list() vendor_list.remove(old_firmware.vendor) with ConnectTo(FrontEndDbInterface, self._config) as sc: device_name_dict = sc.get_device_name_dict() device_name_dict[old_firmware.device_class][ old_firmware.vendor].remove(old_firmware.device_name) previously_processed_plugins = list( old_firmware.processed_analysis.keys()) with ConnectTo(InterComFrontEndBinding, self._config) as sc: plugin_dict = overwrite_default_plugins( sc, previously_processed_plugins) if re_do: title = 're-do analysis' else: title = 'update analysis' return render_template('upload/re-analyze.html', device_classes=device_class_list, vendors=vendor_list, error=error, device_names=json.dumps(device_name_dict, sort_keys=True), firmware=old_firmware, analysis_plugin_dict=plugin_dict, title=title)