Simple and efficient HTTP mock server with specification written in yaml, edn or OpenAPI.
πΎ Download the
.jarfile with the latest version of moclojer to test on your computer here.
π See the complete documentation for moclojer here, if you want to contribute (or complement) the documentation, it is here.
YAML example
# This mock register route: GET /hello/:username
- endpoint:
    # Note: the method could be omitted because GET is the default
    method: GET
    path: /hello/:username
    response:
      # Note: the status could be omitted because 200 is the default
      status: 200
      headers:
        Content-Type: application/json
      # Note: the body will receive the value passed in the url using the
      # :username placeholder
      body: >
        {
          "hello": "{{path-params.username}}!"
        }WebSocket Support
Moclojer also supports WebSocket connections with a simple configuration approach:
# WebSocket echo server
- websocket:
    path: /ws/echo
    on-connect:
      # Message sent when client connects
      response: '{"status": "connected", "message": "Welcome to WebSocket Echo!"}'
    on-message:
      # Simple echo for "ping" message
      - pattern: "ping"
        response: "pong"
      # Echo back any JSON content with an "echo" field
      - pattern: '{"echo": "{{json-params.echo}}"}'
        response: '{"echoed": "{{json-params.echo}}"}'You can test the WebSocket connection using tools like websocat:
websocat "ws://localhost:8000/ws/echo" --text- image: ghcr.io/moclojer/moclojer:latest
- port (default): 8000, if you want to change the port set the environment variablePORT
docker run -it \
  -p 8000:8000 -v $(pwd)/moclojer.yml:/app/moclojer.yml \
  ghcr.io/moclojer/moclojer:latestWe have two versions available:
- dev: main branch docker image
- latest: latest stable version image
We distribute via the .jar file, you need to have Java installed on your operating system.
bash < <(curl -s https://raw.githubusercontent.com/moclojer/moclojer/main/install.sh)If you are using Linux you maybe need
sudo.
- clj -M:run [OPTIONS]
- java -jar moclojer.jar [OPTIONS]
- moclojer_Linux [OPTIONS]
| parameter | description | 
|---|---|
| -c, --config | Config path or the CONFIG environment variable. [default: ~/.config/moclojer.yml] | 
| -m, --mocks | OpenAPI v3 mocks path or the MOCKS environment variable. | 
| -f, --format | Output and logging format. Either printlnorjson. | 
| -h, --help | Show help information | 
| -v, --version | Show version information | 
sentry: set environment var SENTRY_DSN (sentry doc), automatic send backtrace to <sentry.io>
Config uses
XDG_CONFIG_HOMEto fetch the default moclojer configuration file, if you want to set a different directory you must use the-cor environment variableCONFIG
moclojer is written in Clojure, to run the commands below we assume you have clojure installed on your operating system.
run:
clj -M:runtest:
clj -M:testif you want to run a specific test:
clj -M:test -n com.moclojer.external-body.excel-test
moclojer.jar generate:
clj -A:dev -M --report stderr -m com.moclojer.buildWe distribute the library via Clojars.
com.moclojer/moclojer {:mvn/version "0.3.1"}[com.moclojer/moclojer "0.3.1"]git in deps.edn
{:deps
 {com.moclojer/moclojer {:git/url "https://github.com/moclojer/moclojer.git"
                         :git/tag "v0.3.1"
                         :git/sha "c4ca0f2cfcfbe47de6eb0c601b26106190e20793"}}}(ns my-app.core
  (:require [com.moclojer.adapters :as adapters]
            [com.moclojer.server :as server]))
(def *router
  "create a router from a config map"
  (adapters/generate-routes
   [{:endpoint
     {:method "GET"
      :path "/example"
      :response {:status 200
                 :headers {:Content-Type "application/json"}
                 :body {:id 123}}}}]))
(defn -main
  "start the server"
  [& args]
  (server/start-server! *router))