From 9ac1357fdba7a6ad016bda0802fed6b3cbb5dc76 Mon Sep 17 00:00:00 2001 From: jackkav Date: Wed, 10 Apr 2024 10:47:42 +0200 Subject: [PATCH 1/5] first draft --- docs/_data/main-nav.yaml | 5 +++++ docs/insomnia/api-mocking.md | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/insomnia/api-mocking.md diff --git a/docs/_data/main-nav.yaml b/docs/_data/main-nav.yaml index e3802d0..319858b 100644 --- a/docs/_data/main-nav.yaml +++ b/docs/_data/main-nav.yaml @@ -201,3 +201,8 @@ toc: items: - title: Insomnia Pre-request Script Overview url: /insomnia/pre-request-script + - title: API Mocking + collapse-id: api-mocking + items: + - title: Insomnia API Mocking Overview + url: /insomnia/api-mocking diff --git a/docs/insomnia/api-mocking.md b/docs/insomnia/api-mocking.md new file mode 100644 index 0000000..8fb08e3 --- /dev/null +++ b/docs/insomnia/api-mocking.md @@ -0,0 +1,21 @@ +--- +layout: article-detail +title: Insomnia API Mocking Overview +category: "Requests and Responses" +category-url: requests-and-responses +--- + +API mocks are useful for simulating an api endpoint. For example we are building a front end and the backend API is under construction and unstable. Using Insomnia we can customize responses from a set of API paths to simulate a static API. This mocked URL will then be available to replace our front end API backend URL. + +## Insomnia Cloud Mocks + +By default a Kong Insomnia user can create API mocks which can be accessed at mock.insomnia.rest +These mocks can be collaborated with a team and accessed by anyone. + +## Self-hosted Mocks + +Enterprise plans have access to self-hosted mocks providing unrestricted access and more control over who can use them. + +## Mock extractor + +From the request collection screen, on the response pane to the right we can use the new Mock tab to extract the most recent response and API path from the currently selected request to build out an API mock. This is a time saver when we already have our response structures within in insomnia that we would like to be made avaiable from our API mock. From 02820f5619bff7e6b240da2f879d792f2fccaccf Mon Sep 17 00:00:00 2001 From: jackkav Date: Wed, 10 Apr 2024 15:32:27 +0200 Subject: [PATCH 2/5] add config instructions --- docs/insomnia/api-mocking.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/insomnia/api-mocking.md b/docs/insomnia/api-mocking.md index 8fb08e3..3191289 100644 --- a/docs/insomnia/api-mocking.md +++ b/docs/insomnia/api-mocking.md @@ -16,6 +16,8 @@ These mocks can be collaborated with a team and accessed by anyone. Enterprise plans have access to self-hosted mocks providing unrestricted access and more control over who can use them. +Configuration can be found at `https://github.com/kong/insomnia-mockbin` and the docker image can be found at `ghcr.io/kong/insomnia-mockbin:master` + ## Mock extractor From the request collection screen, on the response pane to the right we can use the new Mock tab to extract the most recent response and API path from the currently selected request to build out an API mock. This is a time saver when we already have our response structures within in insomnia that we would like to be made avaiable from our API mock. From d506558e09db2b0948791df2354277a1689233c1 Mon Sep 17 00:00:00 2001 From: jackkav Date: Wed, 10 Apr 2024 15:48:23 +0200 Subject: [PATCH 3/5] add extractor image --- docs/assets/images/mock-extractor.jpg | Bin 0 -> 77332 bytes docs/insomnia/api-mocking.md | 15 ++++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 docs/assets/images/mock-extractor.jpg diff --git a/docs/assets/images/mock-extractor.jpg b/docs/assets/images/mock-extractor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe46e2f714e91cddfd2c86f63103c3ab4f2a18f0 GIT binary patch literal 77332 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

BBo@!{ph;+D5}RIha<2d2yex{L0ctNg7 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 literal 0 HcmV?d00001 diff --git a/docs/insomnia/api-mocking.md b/docs/insomnia/api-mocking.md index 3191289..dad0ffa 100644 --- a/docs/insomnia/api-mocking.md +++ b/docs/insomnia/api-mocking.md @@ -5,19 +5,20 @@ category: "Requests and Responses" category-url: requests-and-responses --- -API mocks are useful for simulating an api endpoint. For example we are building a front end and the backend API is under construction and unstable. Using Insomnia we can customize responses from a set of API paths to simulate a static API. This mocked URL will then be available to replace our front end API backend URL. +API mocks are useful for simulating an API endpoint. For example, when building a front end while the backend API is under construction and unstable, Insomnia allows us to customize responses from a set of API paths to simulate a static API. This mocked URL can then replace our front end API backend URL. ## Insomnia Cloud Mocks -By default a Kong Insomnia user can create API mocks which can be accessed at mock.insomnia.rest -These mocks can be collaborated with a team and accessed by anyone. +Any logged-in user can create API mocks, accessible at [mock.insomnia.rest](https://mock.insomnia.rest). These mocks can be collaborated on with a team and accessed by anyone. ## Self-hosted Mocks -Enterprise plans have access to self-hosted mocks providing unrestricted access and more control over who can use them. +Enterprise plans have access to self-hosted mocks, providing unrestricted access and more control over usage. -Configuration can be found at `https://github.com/kong/insomnia-mockbin` and the docker image can be found at `ghcr.io/kong/insomnia-mockbin:master` +Configuration details can be found at [GitHub - Kong Insomnia Mockbin](https://github.com/kong/insomnia-mockbin), and the Docker image is available at [ghcr.io/kong/insomnia-mockbin:master](https://ghcr.io/kong/insomnia-mockbin:master). -## Mock extractor +## Mock Extractor -From the request collection screen, on the response pane to the right we can use the new Mock tab to extract the most recent response and API path from the currently selected request to build out an API mock. This is a time saver when we already have our response structures within in insomnia that we would like to be made avaiable from our API mock. +From the request collection screen, on the response pane to the right, we can use the Mock Response tab to extract the most recent response and API path from the currently selected request to build an API mock. This feature is a time-saver when we already have our response structures within Insomnia that we would like to make available from our API mock. + +![mock extractor](../assets/images/mock-extractor.jpg) From 7c2a892596fa96523b6235f7ba3a58c6eb9adbe4 Mon Sep 17 00:00:00 2001 From: jackkav Date: Fri, 19 Apr 2024 14:50:43 +0200 Subject: [PATCH 4/5] add some examples --- docs/insomnia/api-mocking.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/docs/insomnia/api-mocking.md b/docs/insomnia/api-mocking.md index dad0ffa..5c0c2f7 100644 --- a/docs/insomnia/api-mocking.md +++ b/docs/insomnia/api-mocking.md @@ -5,19 +5,39 @@ category: "Requests and Responses" category-url: requests-and-responses --- -API mocks are useful for simulating an API endpoint. For example, when building a front end while the backend API is under construction and unstable, Insomnia allows us to customize responses from a set of API paths to simulate a static API. This mocked URL can then replace our front end API backend URL. +API mocks are useful for simulating an API endpoint. For example, when building a front end while the backend API is under construction and unstable, Insomnia allows us to customize responses from a set of API paths to simulate a static API. This mocked URL can then replace our front-end API backend URL. ## Insomnia Cloud Mocks Any logged-in user can create API mocks, accessible at [mock.insomnia.rest](https://mock.insomnia.rest). These mocks can be collaborated on with a team and accessed by anyone. +As a consumer of this mock server we can modify our api url to point at the insomnia cloud mock server. + +```bash +// Example .env file +BACKEND_API_URL=https://mock_123456789.mock.insomnia.rest/ +THIRD_PARTY_API_KEY=xyz +REDIS_PORT=6379 +REDIS_HOST=127.0.0.1 +``` + ## Self-hosted Mocks Enterprise plans have access to self-hosted mocks, providing unrestricted access and more control over usage. -Configuration details can be found at [GitHub - Kong Insomnia Mockbin](https://github.com/kong/insomnia-mockbin), and the Docker image is available at [ghcr.io/kong/insomnia-mockbin:master](https://ghcr.io/kong/insomnia-mockbin:master). +Configuration details can be found at [GitHub - Kong Insomnia Mockbin](https://github.com/kong/insomnia-mockbin) and the Docker image is available at [ghcr.io/kong/insomnia-mockbin:master](https://ghcr.io/kong/insomnia-mockbin:master). + +In the following example we are running insomnia-mockbin locally. + +```bash +// Example .env file +BACKEND_API_URL=https://localhost:8080/bin/mock_123456789 +THIRD_PARTY_API_KEY=xyz +REDIS_PORT=6379 +REDIS_HOST=127.0.0.1 +``` -## Mock Extractor +## Response Extractor From the request collection screen, on the response pane to the right, we can use the Mock Response tab to extract the most recent response and API path from the currently selected request to build an API mock. This feature is a time-saver when we already have our response structures within Insomnia that we would like to make available from our API mock. From e29ac663d1418f2792ff09c9e9cefee7d42633fa Mon Sep 17 00:00:00 2001 From: Filipe Freire Date: Mon, 22 Apr 2024 15:59:05 +0100 Subject: [PATCH 5/5] feat: add k8s instructions --- docs/assets/images/mock-extractor.jpg | Bin 77332 -> 0 bytes docs/insomnia/api-mocking.md | 158 +++++++++++++++++++++++--- 2 files changed, 141 insertions(+), 17 deletions(-) delete mode 100644 docs/assets/images/mock-extractor.jpg diff --git a/docs/assets/images/mock-extractor.jpg b/docs/assets/images/mock-extractor.jpg deleted file mode 100644 index fe46e2f714e91cddfd2c86f63103c3ab4f2a18f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77332 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

BBo@!{ph;+D5}RIha<2d2yex{L0ctNg7 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 diff --git a/docs/insomnia/api-mocking.md b/docs/insomnia/api-mocking.md index 5c0c2f7..4781ff8 100644 --- a/docs/insomnia/api-mocking.md +++ b/docs/insomnia/api-mocking.md @@ -7,38 +7,162 @@ category-url: requests-and-responses API mocks are useful for simulating an API endpoint. For example, when building a front end while the backend API is under construction and unstable, Insomnia allows us to customize responses from a set of API paths to simulate a static API. This mocked URL can then replace our front-end API backend URL. +## Response Extractor + +From the request collection screen, on the response pane to the right, we can use the Mock Response tab to extract the most recent response and API path from the currently selected request to build an API mock. + +This feature is a time-saver when we already have our response structures within Insomnia that we would like to make available from our API mock. + ## Insomnia Cloud Mocks Any logged-in user can create API mocks, accessible at [mock.insomnia.rest](https://mock.insomnia.rest). These mocks can be collaborated on with a team and accessed by anyone. -As a consumer of this mock server we can modify our api url to point at the insomnia cloud mock server. +As a consumer of this mock server we can modify our environment (e.g. `BACKEND_API_URL`) to point at the Insomnia Cloud Mock server. ```bash -// Example .env file -BACKEND_API_URL=https://mock_123456789.mock.insomnia.rest/ -THIRD_PARTY_API_KEY=xyz -REDIS_PORT=6379 -REDIS_HOST=127.0.0.1 +// Example .env file for your front-end application +BACKEND_API_URL=https://foobar.mock.insomnia.rest/ +THIRD_PARTY_API_KEY=foo ``` ## Self-hosted Mocks -Enterprise plans have access to self-hosted mocks, providing unrestricted access and more control over usage. +Enterprise plans have access to self-hosted mocks, providing increased control over usage. -Configuration details can be found at [GitHub - Kong Insomnia Mockbin](https://github.com/kong/insomnia-mockbin) and the Docker image is available at [ghcr.io/kong/insomnia-mockbin:master](https://ghcr.io/kong/insomnia-mockbin:master). +Configuration details can be found at [GitHub - Kong Insomnia Mockbin](https://github.com/kong/insomnia-mockbin) and a Docker image is available at [ghcr.io/kong/insomnia-mockbin:master](https://ghcr.io/kong/insomnia-mockbin:master). -In the following example we are running insomnia-mockbin locally. +Instructions for running locally with Docker or NodeJS can be found on [GitHub](https://github.com/kong/insomnia-mockbin): ```bash -// Example .env file -BACKEND_API_URL=https://localhost:8080/bin/mock_123456789 -THIRD_PARTY_API_KEY=xyz -REDIS_PORT=6379 -REDIS_HOST=127.0.0.1 +// Example .env file for your front-end application +BACKEND_API_URL=https://localhost:8080/bin/foobar +THIRD_PARTY_API_KEY=foo ``` -## Response Extractor +## Self-hosted Mocks (Example with Kubernetes) + +### Prerequisites + +1. **Kubernetes Cluster**: Ensure you have a Kubernetes cluster running. +2. **kubectl**: You need the `kubectl` command-line tool configured to interact with your cluster. +3. **Helm**: This is optional but useful if you're using Helm charts for deployments. + +### Steps + +1. **Create and modify the Deployment File**: Create/Open `deployment.yaml` and make sure to replace any placeholder values with actual data. You might need to set values for the number of replicas, resource limits, and Mockbin-specific environment variables. + + ```yaml + apiVersion: apps/v1 + kind: Deployment + metadata: + name: insomnia-mock + namespace: mock + spec: + replicas: 1 # Set the number of replicas + selector: + matchLabels: + app: insomnia-mock + template: + metadata: + labels: + app: insomnia-mock + spec: + containers: + - name: insomnia-mock + image: ghcr.io/kong/insomnia-mockbin:master + ports: + - containerPort: 9080 + env: + - name: MOCKBIN_PORT + value: "9080" + # Set other environment variables as required + ``` + +2. **Deploy Mockbin**: Run the following command to create the deployment in Kubernetes: + + ```bash + kubectl apply -f deployment.yaml + ``` + +3. **Configure the Service**: Create/Open `service.yaml`. This file configures the service to expose Mockbin internally in the cluster. + + ```yaml + apiVersion: v1 + kind: Service + metadata: + name: insomnia-mock + namespace: mock + spec: + type: ClusterIP + ports: + - name: mock + port: 9080 + targetPort: 9080 + selector: + app: insomnia-mock + ``` + +4. **Deploy the Service**: Run the following command: + + ```bash + kubectl apply -f service.yaml + ``` + +5. **Configure the Ingress**: Create/Edit `ingress.yaml` to manage external access. This configuration will depend heavily on your specific domain and TLS requirements. + + ```yaml + apiVersion: networking.k8s.io/v1 + kind: Ingress + metadata: + name: insomnia-mock-ingress + namespace: mock + spec: + ingressClassName: nginx + rules: + - host: mock.your-domain.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: insomnia-mock + port: + number: 9080 + tls: + - hosts: + - mock.your-domain.com + secretName: insomnia-mock-tls + ``` + +6. **Deploy the Ingress**: Replace `mock.your-domain.com` with your actual domain and update the TLS secret names accordingly. Then, apply the configuration: + + ```bash + kubectl apply -f ingress.yaml + ``` + +7. **Check the Deployment Status**: + + ```bash + kubectl get deployments -n mock + ``` + +8. **Check the Service**: + + ```bash + kubectl get services -n mock + ``` + +9. **Check the Ingress**: + + ```bash + kubectl get ingress -n mock + ``` -From the request collection screen, on the response pane to the right, we can use the Mock Response tab to extract the most recent response and API path from the currently selected request to build an API mock. This feature is a time-saver when we already have our response structures within Insomnia that we would like to make available from our API mock. +10. **Edit your your front-end application `.env` to point to the Ingress host**: -![mock extractor](../assets/images/mock-extractor.jpg) + ```bash + // Example .env file for your front-end application + BACKEND_API_URL=https://mock.your-domain.com/bin/foobar + THIRD_PARTY_API_KEY=foo + ```