"""Tests for graphql connector.""" from unittest.mock import MagicMock, patch from pytest import raises from lambdacommon.graphql.graphql import GraphQLConnector from lambdacommon.graphql.graphql import GraphQLError @patch('lambdacommon.graphql.graphql.HTTPEndpoint') def test_graphql_connector_initialisation(mock_http_endpoint): """Test initialisation of connector.""" url = 'http://example.com' app_name = 'unit_test' GraphQLConnector(url, app_name) mock_http_endpoint.assert_called_once_with( url, base_headers={'apollographql-client-name': app_name} ) @patch('lambdacommon.graphql.graphql.HTTPEndpoint') def test_graphql_connector_execute(mock_http_endpoint): """Test execution of graphql query.""" url = 'http://example.com' app_name = 'unit_test' graphql_response = {'data': {}} connector = GraphQLConnector(url, app_name) instantiated_endpoint = MagicMock(return_value=graphql_response) connector.endpoint = instantiated_endpoint response = connector.execute(MagicMock(), MagicMock()) assert response == graphql_response @patch('lambdacommon.graphql.graphql.HTTPEndpoint') def test_graphql_connector_execute_raise_on_error(mock_http_endpoint): """Test execution of graphql query with error response.""" url = 'http://example.com' app_name = 'unit_test' graphql_response = { 'data': {}, 'errors': [{'code': 'Unknown Error', 'message': 'Blah'}], } connector = GraphQLConnector(url, app_name) instantiated_endpoint = MagicMock(return_value=graphql_response) connector.endpoint = instantiated_endpoint with raises(GraphQLError): connector.execute(MagicMock(), MagicMock()) @patch('lambdacommon.graphql.graphql.HTTPEndpoint') def test_graphql_connector_execute_not_raise_on_error(mock_http_endpoint): """Test execution of graphql query with error response.""" url = 'http://example.com' app_name = 'unit_test' graphql_response = { 'data': {}, 'errors': [{'code': 'Unknown Error', 'message': 'Blah'}], } connector = GraphQLConnector(url, app_name, False) instantiated_endpoint = MagicMock(return_value=graphql_response) connector.endpoint = instantiated_endpoint response = connector.execute(MagicMock(), MagicMock()) assert response == graphql_response