API automated testing
you will have to come up with a solution to automate integration testing on the Yelp Fusion API, in particular Phone Search functionality, used to match businesses with a phone number.
The goal here is not to find bugs for Yelp, but rather to create a way to test their API automatically.
We used Yelp Fusion API for this test because it is easy to get started with, thanks to its good documentation.
You will have to create a Yelp account, and register an app (there will be a form to fill, but app & credentials creation is not reviewed manually by Yelp).
Then, follow the documentation on how to authenticate using client_id and client_secret.
Note that there is a limit of 25,000 requests per day. Please do not automate load testing.
We do not know the exact specifications of Yelp’s Phone Search API, however from its documentation we can extract the following informal requirements:
- The request must be authenticated.
- Phone is a required parameter. It should include the country indicator (e.g. “+1”), followed by 10 digits.
- The response body should contain a businesses array, which size should match the value of total returned. If no businesses were found, this array should be empty and total should be 0.
- The business objects should be filled with information available on Yelp, with fields values matching the types declared in the documentation.
Your goal here is to automate the testing of only one endpoint, businesses/search/phone. You will need an authentication token to use that endpoint, so it’s probably a good idea to automate calls to the authentication endpoint as well.
You are free to use any language/framework/environment to create this automation tool. The only requirement is that your testing tool should be able to run from the command line.
Your testing tool should include output indicating numbers of test passed or failed, and reasons of failure.
The tests performed do not have to be exhaustive; your time should be spent on making it easy to add more or extend them.
Please provide an archive with the source files and instructions to build and run your tool and its tests.