The API Challenges is an application which you can use to practice API testing and automating. It is written in Java, runnable locally and has been deployed to the cloud for easy access. It contains a functional API and a set of challenges for you to work through.
The API Challenges is a simple CRUD (Create, Read, Update, Delete) API.
It also has a set of challenges that are tracked as you explore and test the API.
Everything runs in memory, or stores challenge session ot files, so there is no database to worry about.
About The Challenges Application
How to Create a Multi-User Session
Use the Application Online
A version of the application is hosted on Heroku.
- The API data is public
- The challenges can be stored against a session in the cloud for you to return to later
Download and Run Locally
If you have java installed, it will run. There are no complicated setup instructions.
The system will automatically start in single player mode and you can use the API without having to compete with other people for the data you want. And all your challenge statuses will be stored in a file and re-loaded when you start the app.
The API Challenger is built on “The Thingifier” and downloadable from the release pages.
Download the .jar file from the releases page or specific versions listed below.
java -jar apichallenges.jar
- visit http://localhost:4567
Or you can use it online
How to Install and Use For Single Player on Win and Mac
Source
The application is open source and full code in on Github:
It has been deployed as a multi user application to Heroku
API Documentation
The API Documentation is built in, and easily accessible from the GUI.
One of the challenges for all API Testing is… reading and understanding the documentation, and using it to guide your testing.
Suggested uses?
- Work through the challenges and learn API technology
- Test the API, and use the API challenges as a rough coverage checklist - did your test approach cover all the challenges?
- Automate the challenges in whatever tool you want, and use the challenge complete status as a coverage metric for your automated execution.
- Download the app and run it in multi-user mode locally for your team to work with. Have an internal API challenge and exploration party.
Learning Modes
The Mirror Mode is a good way to start learning tooling because it reflects back what you send so you can get used to any tool and see how it works.
The Simulation Mode is a set of hard-coded data to specific requests, although it does try to respond appropriately to specific verbs. It is a useful way to compare different tooling without specific data and environment requirements.
Challenge How Tos and Solutions
- 01 POST challenger 201
- 02 GET challenges 200
- 03 GET todos 200
- 04 GET todo 404
- 05 GET todos/id 200
- 06 GET todos/id 404
- 07 HEAD todos 200
- 08 POST todos 201
- 09 GET todos 200 Filter
- 10 POST todos 400
- 11 POST todos/id 200
- 12 DELETE todos/id 200
- 13 OPTIONS todos - 200
- 14 GET todos XML - 200
- 15 GET todos JSON - 200
- 16 GET todos Any - 200
- 17 GET todos XML Preferred - 200
- 18 GET todos No Accept - 200
- 19 GET todos invalid Accept - 406
- 20 POST todos create with XML
- 21 POST todos create with JSON
- 22 POST todos (415) unsupported
- 23 POST todos XML accept JSON
- 24 POST todos JSON accept XML
- 25, 26, 27, 28 Status Code Challenges
- 29 Authentication 401
- 30 Authentication 201
- 31 Forbidden 403
- 32 Unauthorized 401
- 33 Authorized GET 200
- 34 POST Amend 200
- 35, 36 POST Unauthorised
- 37,38 How To - Use Bearer Tokens
Challenge Debriefs
Support This Project
If you find value in the API and documentation then consider supporting this project by buying my case study book Automating and Testing a REST API.
Or supporting this project through Patreon. For $1 a month, you join a community of testers improving their skills and advancing their craft, receive exclusive blog posts, and extra ad free videos. You also help support the test community by covering the costs of the hosting that allows my test applications to be used online at no cost to the end user.