From 84eea95787f4f05d34698f6f327564ac0902fc32 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Tue, 27 Jan 2026 23:50:19 +0530 Subject: [PATCH 1/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- docusaurus.config.js | 6 +- src/components/QuickStartList.js | 2 - .../quickstart/go-fasthttp-postgres.md | 100 ++++++++++++++---- 3 files changed, 79 insertions(+), 29 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index a309aa12b..8ca8c1614 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -17,11 +17,7 @@ module.exports = { favicon: "img/favicon.png", organizationName: "keploy", // Usually your GitHub org/user name. projectName: "docs", // Usually your repo name. - markdown: { - hooks: { - onBrokenMarkdownLinks: "warn", - }, - }, + onBrokenMarkdownLinks: "warn", plugins: [ function preloadFontPlugin() { return { diff --git a/src/components/QuickStartList.js b/src/components/QuickStartList.js index 17f9e6e03..021cf1081 100644 --- a/src/components/QuickStartList.js +++ b/src/components/QuickStartList.js @@ -149,7 +149,6 @@ const quickstarts = [ link: "/docs/quickstart/samples-mysql/#running-app-locally-on-linuxwsl-", }, - /* { title: "FastHttp + Postgres", language: "Go", @@ -158,7 +157,6 @@ const quickstarts = [ "A sample CRUD application to demonstrate how seamlessly Keploy integrates with FastHttp and Postgres.", link: "/docs/quickstart/samples-fasthttp/#using-docker-compose-", }, - */ { title: "FastHttp + Postgres", diff --git a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md index 61667fe1a..6db14ce8a 100644 --- a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md @@ -37,28 +37,85 @@ This guide walks you through generating tests and DB mocks for a sample CRUD app git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-postgres go mod download ``` +We can run the application in two ways: -We'll be running our sample application right on Linux, but just to make things a tad more thrilling, we'll have the database (Postgres) chill on Docker. Ready? Let's get the party started! ๐ŸŽ‰ +1. Run with Docker +2. Run without Docker -#### Point the app to local Postgres +### Option 1: Run with Docker -Update the Postgres URL to `localhost:5432` in `app.go` (mentioned at line 21 in the sample). +#### Capture testcases: +```shell +keploy record -c "docker compose up" --container-name=fasthttp_app +``` -#### Start Postgres +Keep an eye out for the `-c` flag! It's the command charm to run the app. Whether you're using `docker compose up` or `go run main.go`, it's your call. -```bash -docker compose up postgres +If you're seeing logs that resemble the ones below, you're on the right track: + +Sample Keploy Record + +Alright! With the app alive and kicking, let's weave some test cases. Making some API calls! Postman, Hoppscotch, + +or even the classic curl - take your pick! + +Time to create some users and books: + +##### To genereate testcases we just need to make some API calls. You can use [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/), or simply `curl`: - + +###### 1. Post Requests +```shell +curl -X POST -H "Content-Type: application/json" -d '{"name":"Author Name"}' http://localhost:8080/authors ``` -#### Record with Keploy while running the app +```shell +curl -X POST -H "Content-Type: application/json" -d '{"title":"Book Title","author_id":1}' http://localhost:8080/books +``` +###### 2. Get Requests ```bash -go build -o app +curl -i http://localhost:8080/books ``` -### Lights, Camera, Record! ๐ŸŽฅ +#### Run captured tests: + +Now that we have our testcase captured, run the test file. + +```shell +keploy test -c "docker compose up" --container-name=fasthttp_app --delay 10 +``` +When all is said and done, your test results should look a little something like this: + +Sample Keploy Replay + +### Option 2: Run Without Docker + +> Note: This application requires the following database environment variables +> to be set in order to run correctly. +> +> Create a .env file in this directory with the following values: +> +> ```env +> DB_HOST=localhost +> DB_PORT=5432 +> DB_USER=postgres +> DB_PASSWORD=password +> DB_NAME=db +> ``` + +#### Start the Postgres container: ```bash +docker compose up -d postgres +``` + +### Build the Application +```bash +go build -o app +``` + +#### Capture testcases: +```shell keploy record -c "./app" ``` @@ -74,33 +131,32 @@ or even the classic curl - take your pick! Time to create some users and books: -### Generate traffic +> Note: The server would be running on http://localhost:8080 -#### Post Requests -```bash -curl -X POST -H "Content-Type: application/json" -d '{"name":"Author Name"}' http://localhost:8080/authors +##### To genereate testcases we just need to make some API calls. You can use [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/), or simply `curl`: - +###### 1. Post Requests +```shell +curl -X POST -H "Content-Type: application/json" -d '{"name":"Author Name"}' http://localhost:8080/authors ``` - -```bash +```shell curl -X POST -H "Content-Type: application/json" -d '{"title":"Book Title","author_id":1}' http://localhost:8080/books ``` -#### Get Request - +###### 2. Get Requests ```bash curl -i http://localhost:8080/books ``` -Look at you go! With a few simple API calls, you've crafted test cases with mocks! Peek into the Keploy directory and behold the freshly minted `test-1.yml` and `mocks.yml`. -### ๐Ÿƒโ€โ™€๏ธ Run the Tests! -Time to put it all to the test: +#### Run captured tests -```bash -keploy test -c "./app" --delay 5 +Now that we have our testcase captured, run the test file. + +```shell +keploy test -c "./app" --delay 10 ``` > That `--delay` flag? Just a little pause (in seconds) to let your app catch its breath before the test cases start rolling in. From 8ec64c2056146514451d98a142cd0a9a0945e306 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Tue, 27 Jan 2026 23:59:51 +0530 Subject: [PATCH 2/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- docusaurus.config.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 8ca8c1614..a309aa12b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -17,7 +17,11 @@ module.exports = { favicon: "img/favicon.png", organizationName: "keploy", // Usually your GitHub org/user name. projectName: "docs", // Usually your repo name. - onBrokenMarkdownLinks: "warn", + markdown: { + hooks: { + onBrokenMarkdownLinks: "warn", + }, + }, plugins: [ function preloadFontPlugin() { return { From 812d1062d2f3707639b2c60ad82fc5adfc5ab362 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Thu, 29 Jan 2026 23:36:09 +0530 Subject: [PATCH 3/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- .../quickstart/go-fasthttp-postgres.md | 204 ++++++++++++------ 1 file changed, 136 insertions(+), 68 deletions(-) diff --git a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md index 6db14ce8a..010d243b2 100644 --- a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md @@ -20,76 +20,140 @@ keyword: --- import InstallReminder from '@site/src/components/InstallReminder'; -import SectionDivider from '@site/src/components/SectionDivider'; import ProductTier from '@site/src/components/ProductTier'; +import SectionDivider from '@site/src/components/SectionDivider'; - +# Using Docker Compose ๐Ÿณ -# Running App Locally on Linux/WSL ๐Ÿง + -This guide walks you through generating tests and DB mocks for a sample CRUD app built with FastHttp and Postgres using Keploy. +A sample CRUD app to test Keploy integration capabilities using FastHttp and Postgres -### Clone the sample CRUD application ๐Ÿงช +### Clone a sample CRUD App ๐Ÿงช ```bash git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-postgres go mod download ``` -We can run the application in two ways: -1. Run with Docker -2. Run without Docker +### Lights, Camera, Record! ๐ŸŽฅ -### Option 1: Run with Docker +Fire up the application and Postgres instance with Keploy. Keep an eye on the two key flags: +`-c`: Command to run the app (e.g., `docker compose up`). -#### Capture testcases: -```shell -keploy record -c "docker compose up" --container-name=fasthttp_app -``` +`--container-name`: The container name in the `docker-compose.yml` for traffic interception. -Keep an eye out for the `-c` flag! It's the command charm to run the app. Whether you're using `docker compose up` or `go run main.go`, it's your call. +#### Capture the test case -If you're seeing logs that resemble the ones below, you're on the right track: +```bash +keploy record -c "docker compose up" --container-name "fasthttp_app" --build-delay 50 +``` -Sample Keploy Record +> `--build-delay` adds a buffer (in seconds) to allow images to build/pull and services to start before Keploy begins interception. If your services are already up, you can omit it. -Alright! With the app alive and kicking, let's weave some test cases. Making some API calls! Postman, Hoppscotch, +๐Ÿ”ฅ Challenge time! Generate some test cases. How? Just **make some API calls**. Postman, Hoppscotch or even curl - take your pick! -or even the classic curl - take your pick! +#### Generate a Test Case -Time to create some users and books: +```bash +curl --request POST \ +--url http://localhost:8080/authors \ +--header 'content-type: application/json' \ +--data '{"name":"Author Name"}' +``` -##### To genereate testcases we just need to make some API calls. You can use [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/), or simply `curl`: - +Here's a peek of what you get: -###### 1. Post Requests -```shell -curl -X POST -H "Content-Type: application/json" -d '{"name":"Author Name"}' http://localhost:8080/authors +```json +{"id": 1, "name": "Author Name"} ``` -```shell -curl -X POST -H "Content-Type: application/json" -d '{"title":"Book Title","author_id":1}' http://localhost:8080/books +๐ŸŽ‰ Woohoo! With a simple API call, you've crafted a test case with a mock! Dive into the Keploy directory and feast your eyes on the newly minted `test-1.yml` and `mocks.yml` + +```yaml +version: api.keploy.io/v1beta2 +kind: Http +name: test-1 +spec: + metadata: {} + req: + method: POST + proto_major: 1 + proto_minor: 1 + url: http://localhost:8080/authors + header: + Accept: "*/*" + Content-Length: "23" + Content-Type: application/json + Host: localhost:8080 + User-Agent: curl/7.68.0 + body: |- + {"name":"Author Name"} + body_type: "" + resp: + status_code: 201 + header: + Content-Type: application/json + body: '{"id": 1, "name": "Author Name"}' + body_type: "" + status_message: "" + proto_major: 0 + proto_minor: 0 + objects: [] + assertions: + noise: + - header.Date + created: 1696834280 ``` -###### 2. Get Requests +#### Fetch Books from App + ```bash -curl -i http://localhost:8080/books +curl --request GET --url http://localhost:8080/books ``` -#### Run captured tests: +Spotted the new test and mock files in your project? High five! ๐Ÿ™Œ -Now that we have our testcase captured, run the test file. +### Run Tests +Time to put things to the test ๐Ÿงช -```shell -keploy test -c "docker compose up" --container-name=fasthttp_app --delay 10 +```bash +keploy test -c "docker compose up" --container-name "fasthttp_app" --build-delay 50 --delay 10 ``` -When all is said and done, your test results should look a little something like this: -Sample Keploy Replay +> The `--delay` flag? Oh, that's just giving your app a little breather (in seconds) before the test cases come knocking. + +Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold!โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ + +### Wrapping it up ๐ŸŽ‰ + +Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible.๐Ÿ˜Š๐Ÿš€ + +Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ + + + +--- + +# Running App Locally on Linux/WSL ๐Ÿง + + + +A sample CRUD app to test Keploy integration capabilities using FastHttp and Postgres -### Option 2: Run Without Docker + + +### Clone a sample CRUD App ๐Ÿงช + +```bash +git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-postgres +go mod download +``` + +We'll be running our sample application right on Linux, but just to make things a tad more thrilling, we'll have the database (Postgres) chill on Docker. Ready? Let's get the party started!๐ŸŽ‰ > Note: This application requires the following database environment variables > to be set in order to run correctly. @@ -104,71 +168,75 @@ When all is said and done, your test results should look a little something like > DB_NAME=db > ``` -#### Start the Postgres container: +#### ๐Ÿƒ Kickstart PostgresDB + +Let's breathe life into your Postgres container. A simple spell should do the trick: + ```bash docker compose up -d postgres ``` -### Build the Application +### ๐Ÿ“ผ Roll the Tape - Recording Time! + +First, build the application: + ```bash go build -o app ``` -#### Capture testcases: -```shell +Ready, set, record! Here's how: + +```bash keploy record -c "./app" ``` -Keep an eye out for the `-c` flag! It's the command charm to run the app. Whether you're using `go run main.go` or the binary path like `./app`, it's your call. +Keep an eye out for the `-c `flag! It's the command charm to run the app. Whether you're using `go run main.go` or the binary path like `./app`, it's your call. -If you're seeing logs that resemble the ones below, you're on the right track: +Alright, magician! With the app alive and kicking, let's weave some test cases. The spell? Making some API calls! Postman, Hoppscotch, or the classic curl - pick your wand. -Sample Keploy Record +#### Generate a Test Case -Alright! With the app alive and kicking, let's weave some test cases. Making some API calls! Postman, Hoppscotch, +โœจ A pinch of POST magic: -or even the classic curl - take your pick! +```bash +curl --request POST \ +--url http://localhost:8080/authors \ +--header 'content-type: application/json' \ +--data '{"name":"Author Name"}' +``` -Time to create some users and books: +And... voila! An Author entry appears: -> Note: The server would be running on http://localhost:8080 +```json +{"id": 1, "name": "Author Name"} +``` +Give yourself a pat on the back! With that simple spell, you've conjured up a test case with a mock! Explore the **Keploy directory** and you'll discover your handiwork in `test-1.yml` and `mocks.yml`. -##### To genereate testcases we just need to make some API calls. You can use [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/), or simply `curl`: - +Now, the real fun begins. Let's weave more spells! -###### 1. Post Requests -```shell -curl -X POST -H "Content-Type: application/json" -d '{"name":"Author Name"}' http://localhost:8080/authors -``` -```shell -curl -X POST -H "Content-Type: application/json" -d '{"title":"Book Title","author_id":1}' http://localhost:8080/books -``` +#### Fetch Books from App + +๐Ÿš€ Follow the URL road...! -###### 2. Get Requests ```bash -curl -i http://localhost:8080/books +curl --request GET --url http://localhost:8080/books ``` +Did you spot the new test and mock scrolls in your project library? Awesome! ๐Ÿ‘ +### Run Tests ๐Ÿ -#### Run captured tests +Ready to put your spells to the test? -Now that we have our testcase captured, run the test file. - -```shell +```bash keploy test -c "./app" --delay 10 ``` -> That `--delay` flag? Just a little pause (in seconds) to let your app catch its breath before the test cases start rolling in. - -When all is said and done, your test results should look a little something like this: - -Sample Keploy Replay - -Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! +Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ ### Wrapping it up ๐ŸŽ‰ -Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible +Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. ๐Ÿ˜Š๐Ÿš€ -Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ +Hope this helps you out, if you still have any questions, reach out to us . From c97057556520b6af13fe8b7b4aa2fb12bd1055f2 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Fri, 30 Jan 2026 00:16:56 +0530 Subject: [PATCH 4/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- .../quickstart/go-fasthttp-postgres.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md index 010d243b2..b7b6dc430 100644 --- a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md @@ -53,6 +53,10 @@ keploy record -c "docker compose up" --container-name "fasthttp_app" --build-del > `--build-delay` adds a buffer (in seconds) to allow images to build/pull and services to start before Keploy begins interception. If your services are already up, you can omit it. +If you're seeing logs that resemble the ones below, you're on the right track: + +Sample Keploy Record + ๐Ÿ”ฅ Challenge time! Generate some test cases. How? Just **make some API calls**. Postman, Hoppscotch or even curl - take your pick! #### Generate a Test Case @@ -126,6 +130,10 @@ keploy test -c "docker compose up" --container-name "fasthttp_app" --build-delay > The `--delay` flag? Oh, that's just giving your app a little breather (in seconds) before the test cases come knocking. +When all is said and done, your test results should look a little something like this: + +Sample Keploy Replay + Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold!โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ ### Wrapping it up ๐ŸŽ‰ @@ -192,6 +200,10 @@ keploy record -c "./app" Keep an eye out for the `-c `flag! It's the command charm to run the app. Whether you're using `go run main.go` or the binary path like `./app`, it's your call. +If you're seeing logs that resemble the ones below, you're on the right track: + +Sample Keploy Record + Alright, magician! With the app alive and kicking, let's weave some test cases. The spell? Making some API calls! Postman, Hoppscotch, or the classic curl - pick your wand. #### Generate a Test Case @@ -233,6 +245,10 @@ Ready to put your spells to the test? keploy test -c "./app" --delay 10 ``` +When all is said and done, your test results should look a little something like this: + +Sample Keploy Replay + Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ ### Wrapping it up ๐ŸŽ‰ From 78bd363789fdea6b879e266e2699aa103e00e1d5 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Mon, 2 Feb 2026 22:32:39 +0530 Subject: [PATCH 5/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- .../quickstart/go-fasthttp-postgres.md | 67 +++++++++++-------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md index b7b6dc430..e1c942ab8 100644 --- a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md @@ -23,7 +23,7 @@ import InstallReminder from '@site/src/components/InstallReminder'; import ProductTier from '@site/src/components/ProductTier'; import SectionDivider from '@site/src/components/SectionDivider'; -# Using Docker Compose ๐Ÿณ +# FastHTTP & Postgres Sample CRUD App @@ -31,6 +31,8 @@ A sample CRUD app to test Keploy integration capabilities using FastHttp and Pos +## Using Docker Compose + ### Clone a sample CRUD App ๐Ÿงช ```bash @@ -40,7 +42,8 @@ go mod download ### Lights, Camera, Record! ๐ŸŽฅ -Fire up the application and Postgres instance with Keploy. Keep an eye on the two key flags: +Start up the application and Keploy with a single command. Make sure to keep an eye on the two key flags: + `-c`: Command to run the app (e.g., `docker compose up`). `--container-name`: The container name in the `docker-compose.yml` for traffic interception. @@ -57,7 +60,9 @@ If you're seeing logs that resemble the ones below, you're on the right track: Sample Keploy Record -๐Ÿ”ฅ Challenge time! Generate some test cases. How? Just **make some API calls**. Postman, Hoppscotch or even curl - take your pick! +Make API calls using **cURL**, **Postman**, or **Hoppscotch**. +Keploy captures these requests to automatically generate test suites with test cases and data mocks. + #### Generate a Test Case @@ -74,7 +79,9 @@ Here's a peek of what you get: {"id": 1, "name": "Author Name"} ``` -๐ŸŽ‰ Woohoo! With a simple API call, you've crafted a test case with a mock! Dive into the Keploy directory and feast your eyes on the newly minted `test-1.yml` and `mocks.yml` +This API call generates a test case along with the required mocks. You can find the generated files in the Keploy directory, including `test-1.yml` and `mocks.yml`. + +You can continue by making additional API calls to generate more test cases. ```yaml version: api.keploy.io/v1beta2 @@ -118,27 +125,28 @@ spec: curl --request GET --url http://localhost:8080/books ``` -Spotted the new test and mock files in your project? High five! ๐Ÿ™Œ +After running this request, more new test and mock files will be generated in your project directory. + ### Run Tests -Time to put things to the test ๐Ÿงช +Time to run the testcases which were generated from the previous API calls.. ```bash keploy test -c "docker compose up" --container-name "fasthttp_app" --build-delay 50 --delay 10 ``` -> The `--delay` flag? Oh, that's just giving your app a little breather (in seconds) before the test cases come knocking. +> The `--delay` flag specifies the time (in seconds) Keploy waits before running the test cases after starting the application. When all is said and done, your test results should look a little something like this: Sample Keploy Replay -Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold!โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ +Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! ### Wrapping it up ๐ŸŽ‰ -Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible.๐Ÿ˜Š๐Ÿš€ +Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ @@ -146,7 +154,7 @@ Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ --- -# Running App Locally on Linux/WSL ๐Ÿง +## Running App Locally on Linux/WSL ๐Ÿง @@ -161,7 +169,7 @@ git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-pos go mod download ``` -We'll be running our sample application right on Linux, but just to make things a tad more thrilling, we'll have the database (Postgres) chill on Docker. Ready? Let's get the party started!๐ŸŽ‰ +We'll be running our sample application right on Linux, but just to make things a bit more thrilling, We'll have our database (Postgres) running on Docker. > Note: This application requires the following database environment variables > to be set in order to run correctly. @@ -176,39 +184,43 @@ We'll be running our sample application right on Linux, but just to make things > DB_NAME=db > ``` -#### ๐Ÿƒ Kickstart PostgresDB +### Kickstart PostgresDB -Let's breathe life into your Postgres container. A simple spell should do the trick: +Let's start your Postgres container: ```bash docker compose up -d postgres + ``` +> The `-d` flag runs the PostgreSQL container in detached mode (in the background). + +This would start your postgres container which will be running on docker. -### ๐Ÿ“ผ Roll the Tape - Recording Time! +### Lights, Camera, Record! ๐ŸŽฅ -First, build the application: +#### First, build the application: ```bash go build -o app ``` -Ready, set, record! Here's how: +#### Capture the test case ```bash keploy record -c "./app" ``` -Keep an eye out for the `-c `flag! It's the command charm to run the app. Whether you're using `go run main.go` or the binary path like `./app`, it's your call. +The `-c` flag specifies the command used to run the application. You can use either `go run main.go` or the compiled binary (for example, `./app`). If you're seeing logs that resemble the ones below, you're on the right track: Sample Keploy Record -Alright, magician! With the app alive and kicking, let's weave some test cases. The spell? Making some API calls! Postman, Hoppscotch, or the classic curl - pick your wand. +With the application running successfully, you can begin generating test cases by making API calls using tools such as **cURL**, **Postman**, or **Hoppscotch**. #### Generate a Test Case -โœจ A pinch of POST magic: +A simple POST call: ```bash curl --request POST \ @@ -217,29 +229,28 @@ curl --request POST \ --data '{"name":"Author Name"}' ``` -And... voila! An Author entry appears: +An Author entry appears: ```json {"id": 1, "name": "Author Name"} ``` -Give yourself a pat on the back! With that simple spell, you've conjured up a test case with a mock! Explore the **Keploy directory** and you'll discover your handiwork in `test-1.yml` and `mocks.yml`. +This API call generates a test case along with the required mocks. You can find the generated files in the Keploy directory, including `test-1.yml` and `mocks.yml`. -Now, the real fun begins. Let's weave more spells! +You can continue by making additional API calls to generate more test cases. #### Fetch Books from App -๐Ÿš€ Follow the URL road...! ```bash curl --request GET --url http://localhost:8080/books ``` -Did you spot the new test and mock scrolls in your project library? Awesome! ๐Ÿ‘ +You should now see the newly generated test and mock files in your project directory. -### Run Tests ๐Ÿ +### Run Tests -Ready to put your spells to the test? +You are now ready to run the generated test cases. ```bash keploy test -c "./app" --delay 10 @@ -249,10 +260,10 @@ When all is said and done, your test results should look a little something like Sample Keploy Replay -Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ +Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! ### Wrapping it up ๐ŸŽ‰ -Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. ๐Ÿ˜Š๐Ÿš€ +Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. Hope this helps you out, if you still have any questions, reach out to us . From 11b5faed7296847be5bebf4ad7f6ba4fc97b4d6e Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Mon, 2 Feb 2026 23:04:20 +0530 Subject: [PATCH 6/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- .../quickstart/go-fasthttp-postgres.md | 72 +++---------------- 1 file changed, 11 insertions(+), 61 deletions(-) diff --git a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md index e1c942ab8..a66c53a34 100644 --- a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md @@ -27,13 +27,13 @@ import SectionDivider from '@site/src/components/SectionDivider'; -A sample CRUD app to test Keploy integration capabilities using FastHttp and Postgres +This guide walks you through generating tests and DB mocks for a sample CRUD app built with FastHttp and Postgres using Keploy. ## Using Docker Compose -### Clone a sample CRUD App ๐Ÿงช +### Clone the sample CRUD App ๐Ÿงช ```bash git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-postgres @@ -66,6 +66,8 @@ Keploy captures these requests to automatically generate test suites with test c #### Generate a Test Case +##### Post Requests + ```bash curl --request POST \ --url http://localhost:8080/authors \ @@ -73,62 +75,18 @@ curl --request POST \ --data '{"name":"Author Name"}' ``` -Here's a peek of what you get: - -```json -{"id": 1, "name": "Author Name"} -``` - This API call generates a test case along with the required mocks. You can find the generated files in the Keploy directory, including `test-1.yml` and `mocks.yml`. You can continue by making additional API calls to generate more test cases. -```yaml -version: api.keploy.io/v1beta2 -kind: Http -name: test-1 -spec: - metadata: {} - req: - method: POST - proto_major: 1 - proto_minor: 1 - url: http://localhost:8080/authors - header: - Accept: "*/*" - Content-Length: "23" - Content-Type: application/json - Host: localhost:8080 - User-Agent: curl/7.68.0 - body: |- - {"name":"Author Name"} - body_type: "" - resp: - status_code: 201 - header: - Content-Type: application/json - body: '{"id": 1, "name": "Author Name"}' - body_type: "" - status_message: "" - proto_major: 0 - proto_minor: 0 - objects: [] - assertions: - noise: - - header.Date - created: 1696834280 -``` - -#### Fetch Books from App +##### Get Requests ```bash curl --request GET --url http://localhost:8080/books ``` -After running this request, more new test and mock files will be generated in your project directory. - -### Run Tests +### ๐Ÿƒโ€โ™€๏ธ Run the Tests Time to run the testcases which were generated from the previous API calls.. @@ -158,11 +116,11 @@ Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ -A sample CRUD app to test Keploy integration capabilities using FastHttp and Postgres +This guide walks you through generating tests and DB mocks for a sample CRUD app built with FastHttp and Postgres using Keploy. -### Clone a sample CRUD App ๐Ÿงช +### Clone the sample CRUD App ๐Ÿงช ```bash git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-postgres @@ -220,7 +178,7 @@ With the application running successfully, you can begin generating test cases b #### Generate a Test Case -A simple POST call: +##### Post Requests ```bash curl --request POST \ @@ -229,26 +187,18 @@ curl --request POST \ --data '{"name":"Author Name"}' ``` -An Author entry appears: - -```json -{"id": 1, "name": "Author Name"} -``` - This API call generates a test case along with the required mocks. You can find the generated files in the Keploy directory, including `test-1.yml` and `mocks.yml`. You can continue by making additional API calls to generate more test cases. -#### Fetch Books from App - +##### Get Requests ```bash curl --request GET --url http://localhost:8080/books ``` -You should now see the newly generated test and mock files in your project directory. -### Run Tests +### ๐Ÿƒโ€โ™€๏ธ Run the Tests You are now ready to run the generated test cases. From 9486b41a8849c60459963df1c2dace4c8b3b7ed5 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Mon, 2 Feb 2026 23:09:48 +0530 Subject: [PATCH 7/8] fix(docs): add FastHTTP Postgres sample run and test instructions Signed-off-by: Akella Srinivas --- versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md index a66c53a34..d700656f9 100644 --- a/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-4.0.0/quickstart/go-fasthttp-postgres.md @@ -216,4 +216,6 @@ Final thoughts? Dive deeper! Try different API calls, tweak the DB response in t Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. +Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ + Hope this helps you out, if you still have any questions, reach out to us . From 3502ea6fbfe2f92a51a2cb9de8125fa06fe55796 Mon Sep 17 00:00:00 2001 From: Akella Srinivas Date: Tue, 3 Feb 2026 18:36:03 +0530 Subject: [PATCH 8/8] fix(docs):restore removed content and add Keploy test images Signed-off-by: Akella Srinivas --- static/img/fasthttp-postgres-test.png | Bin 0 -> 100005 bytes .../quickstart/go-fasthttp-postgres.md | 16 +++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 static/img/fasthttp-postgres-test.png diff --git a/static/img/fasthttp-postgres-test.png b/static/img/fasthttp-postgres-test.png new file mode 100644 index 0000000000000000000000000000000000000000..349657577c4d4d814fe2ebf100322326db85f89b GIT binary patch literal 100005 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

yA9R51 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 +Sample Keploy Replay + Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! ### Wrapping it up ๐ŸŽ‰ @@ -127,9 +127,9 @@ git clone https://github.com/keploy/samples-go.git && cd samples-go/fasthttp-pos go mod download ``` -We'll be running our sample application right on Linux, but just to make things a bit more thrilling, We'll have our database (Postgres) running on Docker. +We'll be running our sample application right on Linux, but just to make things a bit more thrilling, We'll have our database (Postgres) running on Docker. -> Note: This application requires the following database environment variables +> Note: This application requires the following database environment variables > to be set in order to run correctly. > > Create a .env file in this directory with the following values: @@ -150,6 +150,7 @@ Let's start your Postgres container: docker compose up -d postgres ``` + > The `-d` flag runs the PostgreSQL container in detached mode (in the background). This would start your postgres container which will be running on docker. @@ -197,8 +198,7 @@ You can continue by making additional API calls to generate more test cases. curl --request GET --url http://localhost:8080/books ``` - -### ๐Ÿƒโ€โ™€๏ธ Run the Tests +### ๐Ÿƒโ€โ™€๏ธ Run the Tests You are now ready to run the generated test cases. @@ -210,11 +210,13 @@ When all is said and done, your test results should look a little something like Sample Keploy Replay +Sample Keploy Replay + Final thoughts? Dive deeper! Try different API calls, tweak the DB response in the `mocks.yml`, or fiddle with the request or response in `test-x.yml`. Run the tests again and see the magic unfold! ### Wrapping it up ๐ŸŽ‰ -Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. +Congrats on the journey so far! You've seen Keploy's power, flexed your coding muscles, and had a bit of fun too! Now, go out there and keep exploring, innovating, and creating! Remember, with the right tools and a sprinkle of fun, anything's possible. Happy coding! โœจ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ปโœจ