Skip to content

A Demo setup on how keploy can be used with Keploy

Notifications You must be signed in to change notification settings

Sonichigo/mux-sql

Repository files navigation

MUX-SQL

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.

Installation Setup

git clone https://github.com/keploy/samples-go.git && cd samples-go/mux-sql
go mod download

Installation Keploy

Install keploy via one-click:-

curl --silent -O -L https://keploy.io/install.sh && source install.sh

Start Postgres Instance

Using the docker-compose file we will start our postgres instance:-

# Start Postgres
docker-compose up -d postgres

Update the Host

Since we have setup our sample-app natively set the host to localhost on line 10.

Capture the Testcases

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.

Generate testcases

To genereate testcases we just need to make some API calls. You can use Postman, Hoppscotch, or simply curl

1. Generate shortned url

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
}

2. Fetch the Products

curl --request GET \
  --url http://localhost:8010/products

we will get output:

[{"id":1,"name":"Bubbles","price":123},{"id":2,"name":"Bubbles","price":123}]

3. Fetch a single product

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.

Testcase

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:

Testrun

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

test coverage

About

A Demo setup on how keploy can be used with Keploy

Topics

Resources

Stars

Watchers

Forks

Packages