This is a sample application that uses the gorilla/mux
router and Postgres
for database operations. The application is a simple product catalog that allows you to add products, fetch all products, and fetch a single product.
git clone https://github.com/keploy/samples-go.git && cd samples-go/mux-sql
go mod download
Install keploy via one-click:-
curl --silent -O -L https://keploy.io/install.sh && source install.sh
Using the docker-compose file we will start our postgres instance:-
# Start Postgres
docker-compose up -d postgres
Since we have setup our sample-app natively set the host to
localhost
on line 10.
Now, we will create the binary of our application:-
go build -cover
Once we have our binary file ready,this command will start the recording of API calls using ebpf:-
sudo -E keploy record -c "./test-app-product-catelog"
Make API Calls using Hoppscotch, Postman or cURL command. Keploy with capture those calls to generate the test-suites containing testcases and data mocks.
To genereate testcases we just need to make some API calls. You can use Postman, Hoppscotch, or simply curl
curl --request POST \
--url http://localhost:8010/product \
--header 'content-type: application/json' \
--data '{
"name":"Bubbles",
"price": 123
}'
this will return the response.
{
"id": 1,
"name": "Bubbles",
"price": 123
}
curl --request GET \
--url http://localhost:8010/products
we will get output:
[{"id":1,"name":"Bubbles","price":123},{"id":2,"name":"Bubbles","price":123}]
curl --request GET \
--url http://localhost:8010/product/1
we will get output:-
```json
{"id":1,"name":"Bubbles","price":123}
Now, since these API calls were captured as editable testcases and written to keploy/tests folder
. The keploy directory would also have mocks
files that contains all the outputs of postgres operations.
Now let's run the test mode (in the mux-sql directory, not the Keploy directory).
sudo -E keploy test -c "./test-app-product-catelog" --delay 10 --goCoverage
Once done, you can see the Test Runs on the Keploy server, like this:
So no need to setup fake database/apis like Postgres or write mocks for them. Keploy automatically mocks them and, The application thinks it's talking to Postgres 😄
With the three API calls that we made, we got around 55.6%
of coverage