This sample repository shows how to setup AWS AppSync that exposes two GraphQL queries:
- getWeatherWithHTTPResource which gets weather information from https://wttr.in using a HTTP Resource
- getWeatherWithLambda which gets weather information from https://wtter.in using a Lambda which then executes the request
This repository also shows different ways of testing a AWS AppSync:
- At unit level for the lambda handler defined
- At the mapping template level, by testing directly the VTL defined maps with
@conduitvc/appsync-emulator-serverless/vtl - At AppSync level using the helper
createAppSyncavailable in@conduitvc/appsync-emulator-serverless/jest
Notes:
- Created
dynamodb-local.jsto start DynamoDB locally before we run the tests so the tests don't timeout since DynamoDB takes a while to start for the first time - Created
jest-utilsto provide utils for testing the VTL files,loadVTLwhich will load the VTL file andrenderVTLwhich will try to render the VTL provided with the functionvtlavailable ij@conduitvc/appsync-emulator-serverless/vtl
The Serverless Framework is an open-source CLI for building and deploying serverless applications. With over 6 million deployments handled, the Serverless Framework is the tool developers trust to build cloud applications.
# Build Dockerfile
$ yarn docker:build
# graphql will run on http://localhost:62222/graphql
$ yarn docker:dev
# Running tests
$ yarn docker:test
# Running tests with watch
$ yarn docker:test:dev# install dependencies
$ yarn
# graphql will run on http://localhost:62222/graphql
$ yarn run devcurl 'http://localhost:62222/graphql' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: http://localhost:3001' -H 'x-api-key: ABC123' --data-binary '{"query":"{ getWeatherWithHTTPResource }"}' --compressedcurl 'http://localhost:62222/graphql' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: http://localhost:3001' -H 'x-api-key: ABC123' --data-binary '{"query":"{ getWeatherWithLambda }"}' --compressed