def test_null_field(self): # Code coverage test cases # Null case test self.assertEqual( validate_form(FormField(required=True), None), (False, "Required field is missing"), ) self.assertEqual(validate_form(FormField(), None), (True, ""))
def test_bool_field(self): self.assertEqual( validate_form(FormField(field_type=FormFieldType.Boolean), "123"), (False, "Field value is not a boolean"), ) self.assertEqual( validate_form(FormField(field_type=FormFieldType.Boolean), 123), (False, "Field value is not a boolean"), ) self.assertEqual( validate_form(FormField(field_type=FormFieldType.Boolean), True), (True, ""))
def test_number_field(self): self.assertEqual( validate_form(FormField(field_type=FormFieldType.Number), "123"), (False, "Field value is not a number"), ) self.assertEqual( validate_form(FormField(field_type=FormFieldType.Number), 123), (True, "")) self.assertEqual( validate_form(FormField(field_type=FormFieldType.Number), 123.123), (True, ""), )
def test_string_field(self): # String Tests self.assertEqual(validate_form(FormField(), 123), (False, "Field value is not a string")) self.assertEqual(validate_form(FormField(), "123"), (True, "")) self.assertEqual( validate_form(FormField(regex="^[a-z]+$"), "querybook2"), (False, "Field value does not match regex"), ) self.assertEqual( validate_form(FormField(regex="^[a-z]+$"), "querybook"), (True, ""))
def export_statement_execution_result(statement_execution_id, exporter_name, exporter_params=None): with DBSession() as session: statement_execution = logic.get_statement_execution_by_id( statement_execution_id, session=session) api_assert(statement_execution is not None, message="Invalid statement execution") verify_query_execution_permission( statement_execution.query_execution_id, session=session) exporter = get_exporter(exporter_name) api_assert(exporter is not None, f"Invalid export name {exporter_name}") if exporter_params: valid, reason = validate_form(exporter.export_form, exporter_params) api_assert(valid, "Invalid exporter params, reason: " + reason) task = export_query_execution_task.apply_async(args=[ exporter.exporter_name, statement_execution_id, current_user.id, exporter_params or {}, ], ) return task.task_id
def test_array_field(self): form = ExpandableFormField(of=FormField(), min=2, max=4) self.assertEqual( validate_form(form, "123"), (False, "Field value is not an array"), ) self.assertEqual( validate_form(form, ["123"]), (False, "Field value less than allowed length"), ) self.assertEqual( validate_form(form, ["123"] * 5), (False, "Field value more than allowed length"), ) self.assertEqual( validate_form(form, ["123", "123", 123]), (False, "Field value is not a string"), ) self.assertEqual(validate_form(form, ["123", "456", "789"]), (True, ""))
def test_dict_field(self): form = StructFormField( name=FormField(), phone_numbers=ExpandableFormField(of=FormField(), min=1, max=2), ) self.assertEqual( validate_form(form, "123"), (False, "Field value is not a dictionary"), ) self.assertEqual( validate_form(form, { "phone_numbers": [1234], "name": "bob" }), (False, "Field value is not a string"), ) self.assertEqual( validate_form(form, { "phone_numbers": ["1234"] * 3, "name": "bob" }), (False, "Field value more than allowed length"), ) self.assertEqual( validate_form(form, { "phone_numbers": ["1234"], "name": "bob" }), (True, ""), ) self.assertEqual( validate_form( form, { "phone_numbers": ["1234"], }, ), (True, ""), )
def validate_exporters_config(export_configs: List): if not export_configs: return for export_config in export_configs: validate_dict_keys(export_config, valid_export_config_keys) if export_config.get("exporter_cell_id", None) is None: raise InvalidScheduleException("exporter_cell_id is required") exporter = _get_exporter(export_config) exporter_params = export_config.get("exporter_params", {}) exporter_form = exporter.export_form if exporter_form is not None or exporter_params: valid, reason = validate_form(exporter_form, exporter_params) if not valid: raise InvalidScheduleException( f"Invalid exporter params, reason: {reason}")
def test_unknown_field(self): self.assertEqual(validate_form(None, None), (False, "Unexpected form type"))