def test_given_analyzer_result_with_an_incorrect_text_positions_then_we_fail( original_text, start, end): engine = AnonymizerEngine() analyzer_result = AnalyzerResult("type", start, end, 0.5) err_msg = f"Invalid analyzer result, start: {start} and end: " \ f"{end}, while text length is only 11." with pytest.raises(InvalidParamException, match=err_msg): engine.anonymize(original_text, [analyzer_result], {})
def test_given_default_anonymizer_then_we_use_it(): engine = AnonymizerEngine() text = "please REPLACE ME." analyzer_result = AnalyzerResult("SSN", 7, 17, 0.8) anonymizer_config = AnonymizerConfig("replace", {"new_value": "and thank you"}) result = engine.anonymize(text, [analyzer_result], {"DEFAULT": anonymizer_config}) assert result == "please and thank you."
def test_given_several_anonymizers_then_we_use_the_correct_one(): analyzer_result = AnalyzerResult.from_json({ "score": 0.5, "entity_type": "PHONE_NUMBER", "start": 8, "end": 18 }) anonymizer_config = AnonymizerConfig("replace", {}) anonymizer_config.anonymizer_class = MockAnonymizer text = AnonymizerEngine().anonymize("Number: 0554555556", [analyzer_result], {"PHONE_NUMBER": anonymizer_config}) assert text == "Number: I am your new text!"
def handle_analyzer_results_json(cls, data: Dict) -> List[AnalyzerResult]: """ Go over analyzer results, validate them and convert to List[AnalyzeResult]. :param data: contains the anonymizers and analyzer_results_json """ analyzer_results = AnalyzerResults() analyzer_results_json = data.get("analyzer_results") if analyzer_results_json is None: cls.logger.debug( "invalid input, json missing field: analyzer_results_json") raise InvalidParamException( "Invalid input, " "request must contain analyzer results") for analyzer_result in analyzer_results_json: analyzer_result = AnalyzerResult.from_json(analyzer_result) analyzer_results.append(analyzer_result) return analyzer_results
def create_analayzer_result(entity_type: str, score: float, start: int, end: int): data = {"entity_type": entity_type, "score": score, "start": start, "end": end} return AnalyzerResult.from_json(data)
def test_given_json_for_creating_analyzer_result_without_text_then_creation_fails( request_json, result_text): with pytest.raises(InvalidParamException) as e: AnalyzerResult.from_json(request_json) assert result_text == e.value.err_msg
def test_given_none_as_anonymziers_list_then_we_fall_to_default(): engine = AnonymizerEngine() text = "please REPLACE ME." analyzer_result = AnalyzerResult("SSN", 7, 17, 0.8) result = engine.anonymize(text, [analyzer_result]) assert result == "please <SSN>."
def test_given_empty_text_to_engine_then_we_fail(): engine = AnonymizerEngine() analyzer_result = AnalyzerResult("SSN", 0, 1, 0.5) with pytest.raises(InvalidParamException, match="Invalid input, text can not be empty"): engine.anonymize("", [analyzer_result], {})