{"id":19725664,"url":"https://github.com/xdev-software/mockserver-neolight","last_synced_at":"2026-01-22T17:14:30.675Z","repository":{"id":241325717,"uuid":"802038755","full_name":"xdev-software/mockserver-neolight","owner":"xdev-software","description":"A lightweight rewrite of the MockServer project with focus on simplicity, maintainability and Testcontainers","archived":false,"fork":false,"pushed_at":"2025-02-24T04:11:39.000Z","size":3094,"stargazers_count":10,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-02-25T14:55:55.740Z","etag":null,"topics":["java","mock-server","mockserver","proxy","testcontainers"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xdev-software.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-17T11:58:57.000Z","updated_at":"2025-02-23T16:50:43.000Z","dependencies_parsed_at":"2025-01-27T03:21:54.936Z","dependency_job_id":"21f49e90-aea6-4ac3-9f7d-15c01e08ff91","html_url":"https://github.com/xdev-software/mockserver-neolight","commit_stats":null,"previous_names":["xdev-software/mockserver-neolight"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdev-software%2Fmockserver-neolight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdev-software%2Fmockserver-neolight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdev-software%2Fmockserver-neolight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xdev-software%2Fmockserver-neolight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xdev-software","download_url":"https://codeload.github.com/xdev-software/mockserver-neolight/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241049397,"owners_count":19900437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mock-server","mockserver","proxy","testcontainers"],"created_at":"2024-11-11T23:32:19.870Z","updated_at":"2026-01-22T17:14:30.656Z","avatar_url":"https://github.com/xdev-software.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maven latest version](https://img.shields.io/maven-central/v/software.xdev.mockserver/client?logo=apache%20maven)](https://mvnrepository.com/artifact/software.xdev.mockserver/client)\n[![DockerHub latest version](https://img.shields.io/docker/v/xdevsoftware/mockserver?sort=semver\u0026logo=docker\u0026label=DockerHub)](https://hub.docker.com/r/xdevsoftware/mockserver)\n[![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/mockserver-neolight/check-build.yml?branch=develop)](https://github.com/xdev-software/mockserver-neolight/actions/workflows/check-build.yml?query=branch%3Adevelop)\n\n# \u003cimg src=\"./assets/logo.avif\" height=34 /\u003e MockServer NeoLight\n\nA lightweight rewrite of the abandoned [MockServer project](https://github.com/mock-server/mockserver) with focus on simplicity, maintainability and [Testcontainers](https://java.testcontainers.org/).\n\n\u003e [!NOTE]\n\u003e The full list of changes can be found in the [changelog](./CHANGELOG.md#100).\u003cbr/\u003e\n\u003e You may also have a look at the [comparison with other frameworks](./COMPARISON.md).\n\n## Usage\n\n### In combination with Testcontainers\nBesides a few differences the usage is mostly identical to the original project.\n\n```java\ntry(MockServerContainer container = new MockServerContainer())\n{\n  container.start();\n  \n  try(MockServerClient client = new MockServerClient(\n    container.getHost(),\n    container.getServerPort()))\n  {\n    String expectedResponse = \"Test\";\n    // Setup expectation\n    client.when(request(\"/test\").withMethod(\"GET\"))\n      .respond(response().withBody(expectedResponse));\n    \n    HttpClient httpClient = HttpClient.newHttpClient();\n    \n    // Execute request\n    HttpResponse\u003cString\u003e resp = httpClient.send(\n      HttpRequest.newBuilder()\n        .uri(URI.create(container.getEndpoint() + \"/test\"))\n        .GET()\n        .build(),\n      HttpResponse.BodyHandlers.ofString());\n    \n    assertEquals(expectedResponse, resp.body());\n  }\n}\n```\n\n\u003cdetails\u003e\u003csummary\u003eExample using forwarding/recording\u003c/summary\u003e\n\n```java\ntry(MockServerContainer container = new MockServerContainer())\n{\n  container.start();\n  \n  try(MockServerClient client = new MockServerClient(\n    container.getHost(),\n    container.getServerPort()))\n  {\n    // Setup forwarding\n    client.when(request(\"/\"))\n      .forward(HttpForward.forward().withHost(\"my-nginx.local\"));\n    \n    HttpClient httpClient = HttpClient.newHttpClient();\n    \n    // Execute request\n    HttpResponse\u003cString\u003e resp = httpClient.send(\n      HttpRequest.newBuilder()\n        .uri(URI.create(container.getEndpoint() + \"/\"))\n        .GET()\n        .build(),\n      HttpResponse.BodyHandlers.ofString());\n    \n    assertTrue(resp.body().contains(\"Welcome to nginx!\"));\n    \n    // You can also retrieve requests, expectations and responses\n    String recorded =\n      client.retrieveRecordedRequestsAndResponses(request(\"/\"), Format.JSON);\n    // or generate the code for writing them\n    String codeToGenerateExpectation =\n      client.retrieveRecordedExpectations(request(\"/\"), Format.JAVA);\n  }\n}\n```\n\nThe returned ``codeToGenerateExpectation`` will look like this:\n```java\nnew MockServerClient(\"localhost\", 1080)\n.when(\n        request()\n                .withMethod(\"GET\")\n                .withPath(\"/\")\n                ...,\n        Times.once(),\n        TimeToLive.unlimited(),\n        0\n)\n.respond(\n        response()\n                .withStatusCode(200)\n                .withReasonPhrase(\"OK\")\n                .withHeaders(...)\n                .withBody(\"\u003c!DOCTYPE html\u003e\\n\u003chtml\u003e\\n\u003chead\u003e\\n\u003ctitle\u003eWelcome to nginx!\u003c/title\u003e...\")\n);\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eRequired dependencies in \u003ccode\u003epom.xml\u003c/code\u003e\u003c/summary\u003e\n\n```xml\n\u003cdependency\u003e\n   \u003cgroupId\u003esoftware.xdev.mockserver\u003c/groupId\u003e\n   \u003cartifactId\u003eclient\u003c/artifactId\u003e\n   \u003cversion\u003e...\u003c/version\u003e\n   \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n\u003cdependency\u003e\n   \u003cgroupId\u003esoftware.xdev.mockserver\u003c/groupId\u003e\n   \u003cartifactId\u003etestcontainers\u003c/artifactId\u003e\n   \u003cversion\u003e...\u003c/version\u003e\n   \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\n\u003c/details\u003e\n\n### Further related documentation\n* [Original project](https://www.mock-server.com/)\n* [Testcontainers (original) Mockserver module](https://java.testcontainers.org/modules/mockserver/)\n\nNote: MockServer also works really well together with a network failure simulation tools such as [ToxiProxy](https://java.testcontainers.org/modules/toxiproxy/).\n\n## Installation\n[Installation guide for the latest release](https://github.com/xdev-software/mockserver-neolight/releases/latest#Installation)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eModule\u003c/th\u003e\n    \u003cth\u003eDistribution via\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"./client/\"\u003eclient\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://mvnrepository.com/artifact/software.xdev.mockserver/client\"\u003e\n        \u003cimg src=\"https://img.shields.io/maven-central/v/software.xdev.mockserver/client?logo=apache%20maven\"/\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"./server/\"\u003eserver\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://hub.docker.com/r/xdevsoftware/mockserver\"\u003e\n        \u003cimg src=\"https://img.shields.io/docker/v/xdevsoftware/mockserver?sort=semver\u0026logo=docker\u0026label=DockerHub\"/\u003e\n        \u003cimg src=\"https://img.shields.io/docker/pulls/xdevsoftware/mockserver?logo=docker\u0026label=pulls\"/\u003e\n      \u003c/a\u003e\n      \u003cbr/\u003e\n      \u003ca href=\"https://github.com/xdev-software/mockserver-neolight/pkgs/container/mockserver-neolight\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/ghcr.io-available-blue?logo=docker\"/\u003e\n      \u003c/a\u003e\n      \u003cbr/\u003e\n      \u003ca href=\"https://github.com/xdev-software/mockserver-neolight/releases/latest\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/release/xdev-software/mockserver-neolight?logo=apache%20maven\u0026label=github\"/\u003e\n      \u003c/a\u003e\n      \u003cbr/\u003e\n      \u003ca href=\"https://mvnrepository.com/artifact/software.xdev.mockserver/server\"\u003e\n        \u003cimg src=\"https://img.shields.io/maven-central/v/software.xdev.mockserver/server?logo=apache%20maven\"/\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ca href=\"./testcontainers/\"\u003etestcontainers\u003c/a\u003e\u003c/td\u003e\n    \u003ctd\u003e\n      \u003ca href=\"https://mvnrepository.com/artifact/software.xdev.mockserver/testcontainers\"\u003e\n        \u003cimg src=\"https://img.shields.io/maven-central/v/software.xdev.mockserver/testcontainers?logo=apache%20maven\"/\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Support\nIf you need support as soon as possible and you can't wait for any pull request, feel free to use [our support](https://xdev.software/en/services/support).\n\n## Contributing\nSee the [contributing guide](./CONTRIBUTING.md) for detailed instructions on how to get started with our project.\n\n## Dependencies and Licenses\nView the [license of the current project](LICENSE) or the [docs that contain a dependency summary (per module)](https://xdev-software.github.io/mockserver-neolight/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdev-software%2Fmockserver-neolight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxdev-software%2Fmockserver-neolight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxdev-software%2Fmockserver-neolight/lists"}