89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import boto3 | ||
|  | import sure  # noqa # pylint: disable=unused-import | ||
|  | 
 | ||
|  | from moto import mock_appsync | ||
|  | 
 | ||
|  | schema = """type Mutation {
 | ||
|  | 	putPost(id: ID!, title: String!): Post | ||
|  | } | ||
|  | 
 | ||
|  | "My custom post type" | ||
|  | type Post { | ||
|  | 	id: ID! | ||
|  | 	title: String! | ||
|  | } | ||
|  | 
 | ||
|  | type Query { | ||
|  | 	singlePost(id: ID!): Post | ||
|  | } | ||
|  | 
 | ||
|  | schema { | ||
|  | 	query: Query | ||
|  | 	mutation: Mutation | ||
|  | 
 | ||
|  | }"""
 | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_appsync | ||
|  | def test_start_schema_creation(): | ||
|  |     client = boto3.client("appsync", region_name="us-east-2") | ||
|  |     api_id = client.create_graphql_api(name="api1", authenticationType="API_KEY")[ | ||
|  |         "graphqlApi" | ||
|  |     ]["apiId"] | ||
|  | 
 | ||
|  |     resp = client.start_schema_creation(apiId=api_id, definition=b"sth") | ||
|  | 
 | ||
|  |     resp.should.have.key("status").equals("PROCESSING") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_appsync | ||
|  | def test_get_schema_creation_status(): | ||
|  |     client = boto3.client("appsync", region_name="eu-west-1") | ||
|  |     api_id = client.create_graphql_api(name="api1", authenticationType="API_KEY")[ | ||
|  |         "graphqlApi" | ||
|  |     ]["apiId"] | ||
|  | 
 | ||
|  |     client.start_schema_creation(apiId=api_id, definition=schema.encode("utf-8")) | ||
|  |     resp = client.get_schema_creation_status(apiId=api_id) | ||
|  | 
 | ||
|  |     resp.should.have.key("status").equals("SUCCESS") | ||
|  |     resp.shouldnt.have.key("details") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_appsync | ||
|  | def test_get_schema_creation_status_invalid(): | ||
|  |     client = boto3.client("appsync", region_name="eu-west-1") | ||
|  |     api_id = client.create_graphql_api(name="api1", authenticationType="API_KEY")[ | ||
|  |         "graphqlApi" | ||
|  |     ]["apiId"] | ||
|  | 
 | ||
|  |     client.start_schema_creation(apiId=api_id, definition=b"sth") | ||
|  |     resp = client.get_schema_creation_status(apiId=api_id) | ||
|  | 
 | ||
|  |     resp.should.have.key("status").equals("FAILED") | ||
|  |     resp.should.have.key("details").match("Syntax Error") | ||
|  | 
 | ||
|  | 
 | ||
|  | @mock_appsync | ||
|  | def test_get_type_from_schema(): | ||
|  |     client = boto3.client("appsync", region_name="us-east-2") | ||
|  | 
 | ||
|  |     api_id = client.create_graphql_api(name="api1", authenticationType="API_KEY")[ | ||
|  |         "graphqlApi" | ||
|  |     ]["apiId"] | ||
|  | 
 | ||
|  |     client.start_schema_creation(apiId=api_id, definition=schema.encode("utf-8")) | ||
|  |     resp = client.get_type(apiId=api_id, typeName="Post", format="SDL") | ||
|  | 
 | ||
|  |     resp.should.have.key("type") | ||
|  |     graphql_type = resp["type"] | ||
|  |     graphql_type.should.have.key("name").equals("Post") | ||
|  |     graphql_type.should.have.key("description").equals("My custom post type") | ||
|  |     graphql_type.should.have.key("arn").equals("arn:aws:appsync:graphql_type/Post") | ||
|  |     graphql_type.should.have.key("definition").equals("NotYetImplemented") | ||
|  |     graphql_type.should.have.key("format").equals("SDL") | ||
|  | 
 | ||
|  |     query_type = client.get_type(apiId=api_id, typeName="Query", format="SDL")["type"] | ||
|  |     query_type.should.have.key("name").equals("Query") | ||
|  |     query_type.shouldnt.have.key("description") |