201 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			201 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | """Unit tests for comprehend-supported APIs.""" | ||
|  | import boto3 | ||
|  | import pytest | ||
|  | import sure  # noqa # pylint: disable=unused-import | ||
|  | from botocore.exceptions import ClientError | ||
|  | from moto import mock_comprehend | ||
|  | 
 | ||
|  | # See our Development Tips on writing tests for hints on how to write good tests: | ||
|  | # http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html | ||
|  | 
 | ||
|  | 
 | ||
|  | INPUT_DATA_CONFIG = { | ||
|  |     "DataFormat": "COMPREHEND_CSV", | ||
|  |     "Documents": { | ||
|  |         "InputFormat": "ONE_DOC_PER_LINE", | ||
|  |         "S3Uri": "s3://tf-acc-test-1726651689102157637/documents.txt", | ||
|  |     }, | ||
|  |     "EntityList": {"S3Uri": "s3://tf-acc-test-1726651689102157637/entitylist.csv"}, | ||
|  |     "EntityTypes": [{"Type": "ENGINEER"}, {"Type": "MANAGER"}], | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_list_entity_recognizers(): | ||
|  |     client = boto3.client("comprehend", region_name="us-east-2") | ||
|  | 
 | ||
|  |     resp = client.list_entity_recognizers() | ||
|  |     resp.should.have.key("EntityRecognizerPropertiesList").equals([]) | ||
|  | 
 | ||
|  |     client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="myname", | ||
|  |         VersionName="version1", | ||
|  |     ) | ||
|  | 
 | ||
|  |     resp = client.list_entity_recognizers(Filter={"RecognizerName": "unknown"}) | ||
|  |     resp.should.have.key("EntityRecognizerPropertiesList").equals([]) | ||
|  | 
 | ||
|  |     resp = client.list_entity_recognizers(Filter={"RecognizerName": "myname"}) | ||
|  |     resp.should.have.key("EntityRecognizerPropertiesList").length_of(1) | ||
|  | 
 | ||
|  |     client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="myname", | ||
|  |         VersionName="version2", | ||
|  |     ) | ||
|  | 
 | ||
|  |     resp = client.list_entity_recognizers(Filter={"RecognizerName": "myname"}) | ||
|  |     resp.should.have.key("EntityRecognizerPropertiesList").length_of(2) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_create_entity_recognizer(): | ||
|  |     client = boto3.client("comprehend", region_name="ap-southeast-1") | ||
|  |     resp = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |         VersionName="terraform-20221003201727469000000002", | ||
|  |     ) | ||
|  | 
 | ||
|  |     resp.should.have.key("EntityRecognizerArn") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_create_entity_recognizer_without_version(): | ||
|  |     client = boto3.client("comprehend", region_name="ap-southeast-1") | ||
|  |     resp = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |     ) | ||
|  | 
 | ||
|  |     resp.should.have.key("EntityRecognizerArn") | ||
|  |     resp["EntityRecognizerArn"].should.equal( | ||
|  |         "arn:aws:comprehend:ap-southeast-1:123456789012:entity-recognizer/tf-acc-test-1726651689102157637" | ||
|  |     ) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_create_entity_recognizer_with_tags(): | ||
|  |     client = boto3.client("comprehend", region_name="ap-southeast-1") | ||
|  |     arn = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         Tags=[{"Key": "k1", "Value": "v1"}], | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |     )["EntityRecognizerArn"] | ||
|  | 
 | ||
|  |     resp = client.list_tags_for_resource(ResourceArn=arn) | ||
|  |     resp.should.have.key("ResourceArn").equals(arn) | ||
|  |     resp.should.have.key("Tags").equals([{"Key": "k1", "Value": "v1"}]) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_describe_entity_recognizer(): | ||
|  |     client = boto3.client("comprehend", region_name="eu-west-1") | ||
|  |     arn = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |         VersionName="terraform-20221003201727469000000002", | ||
|  |     )["EntityRecognizerArn"] | ||
|  | 
 | ||
|  |     resp = client.describe_entity_recognizer(EntityRecognizerArn=arn) | ||
|  |     resp.should.have.key("EntityRecognizerProperties") | ||
|  |     props = resp["EntityRecognizerProperties"] | ||
|  | 
 | ||
|  |     props.should.have.key("EntityRecognizerArn").equals(arn) | ||
|  |     props.should.have.key("LanguageCode").equals("en") | ||
|  |     props.should.have.key("Status").equals("TRAINED") | ||
|  |     props.should.have.key("InputDataConfig").equals(INPUT_DATA_CONFIG) | ||
|  |     props.should.have.key("DataAccessRoleArn").equals("iam_role_with_20_chars") | ||
|  |     props.should.have.key("VersionName").equals("terraform-20221003201727469000000002") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_describe_unknown_recognizer(): | ||
|  |     client = boto3.client("comprehend", region_name="eu-west-1") | ||
|  | 
 | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         client.describe_entity_recognizer(EntityRecognizerArn="unknown") | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("ResourceNotFoundException") | ||
|  |     err["Message"].should.equal( | ||
|  |         "RESOURCE_NOT_FOUND: Could not find specified resource." | ||
|  |     ) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_stop_training_entity_recognizer(): | ||
|  |     client = boto3.client("comprehend", region_name="eu-west-1") | ||
|  |     arn = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |         VersionName="terraform-20221003201727469000000002", | ||
|  |     )["EntityRecognizerArn"] | ||
|  |     client.stop_training_entity_recognizer(EntityRecognizerArn=arn) | ||
|  | 
 | ||
|  |     props = client.describe_entity_recognizer(EntityRecognizerArn=arn)[ | ||
|  |         "EntityRecognizerProperties" | ||
|  |     ] | ||
|  |     props.should.have.key("Status").equals("TRAINED") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_list_tags_for_resource(): | ||
|  |     client = boto3.client("comprehend", region_name="us-east-2") | ||
|  |     arn = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |         VersionName="terraform-20221003201727469000000002", | ||
|  |     )["EntityRecognizerArn"] | ||
|  | 
 | ||
|  |     resp = client.list_tags_for_resource(ResourceArn=arn) | ||
|  |     resp.should.have.key("ResourceArn").equals(arn) | ||
|  |     resp.should.have.key("Tags").equals([]) | ||
|  | 
 | ||
|  |     client.tag_resource(ResourceArn=arn, Tags=[{"Key": "k1", "Value": "v1"}]) | ||
|  | 
 | ||
|  |     resp = client.list_tags_for_resource(ResourceArn=arn) | ||
|  |     resp.should.have.key("Tags").equals([{"Key": "k1", "Value": "v1"}]) | ||
|  | 
 | ||
|  |     client.untag_resource(ResourceArn=arn, TagKeys=["k1"]) | ||
|  |     resp = client.list_tags_for_resource(ResourceArn=arn) | ||
|  |     resp.should.have.key("Tags").equals([]) | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_comprehend | ||
|  | def test_delete_entity_recognizer(): | ||
|  |     client = boto3.client("comprehend", region_name="ap-southeast-1") | ||
|  |     arn = client.create_entity_recognizer( | ||
|  |         DataAccessRoleArn="iam_role_with_20_chars", | ||
|  |         InputDataConfig=INPUT_DATA_CONFIG, | ||
|  |         LanguageCode="en", | ||
|  |         RecognizerName="tf-acc-test-1726651689102157637", | ||
|  |         VersionName="terraform-20221003201727469000000002", | ||
|  |     )["EntityRecognizerArn"] | ||
|  | 
 | ||
|  |     client.delete_entity_recognizer(EntityRecognizerArn=arn) | ||
|  | 
 | ||
|  |     with pytest.raises(ClientError) as exc: | ||
|  |         client.describe_entity_recognizer(EntityRecognizerArn=arn) | ||
|  |     err = exc.value.response["Error"] | ||
|  |     err["Code"].should.equal("ResourceNotFoundException") | ||
|  |     err["Message"].should.equal( | ||
|  |         "RESOURCE_NOT_FOUND: Could not find specified resource." | ||
|  |     ) |