• Stars
    star
    48
  • Rank 573,041 (Top 12 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ€– A simulated HTTP server for testing client code with configurable responses.

Ersatz Server

If you use this project and would like to help keep it running, please consider making a donation.

β˜• Buy me a coffee?

Quick Links

Introduction

The Ersatz Server is a HTTP client testing tool which allows for request/response expectations to be configured in a flexible manner. The expectations will respond in a configured manner to requests and allow testing with different responses and/or error conditions without having to write a lot of boiler-plate code.

Warning: v3.x is NOT directly backwards compatible with the 2.x releases. Some lesser-used features have been removed and the Groovy DSL has been extracted into its own extension library - see the What's New in 3.0 section of the User Guide for details and a migration guide.

Warning: v2.x has removed some unused features of the library and extracted the Groovy support into it's own extension library. See the What's New in 2.0 section of the User Guide for details and a migration guide.

Getting Started

Project artifacts are available via the Maven Central repository. Below are the dependency coordinates for Gradle and Maven, more details are provided in the Getting Started section of the User Guide.

Gradle

testImplementation 'io.github.cjstehno.ersatz:ersatz:4.0.1'

// or, for the Groovy DSL extensions
testImplementation 'io.github.cjstehno.ersatz:ersatz-groovy:4.0.1'

Maven

<dependency>
    <groupId>io.github.cjstehno.ersatz</groupId>
    <artifactId>ersatz</artifactId>
    <version>4.0.1</version>
    <scope>test</scope>
</dependency>

<!-- or, for the Groovy DSL extensions -->
<dependency>
    <groupId>io.github.cjstehno.ersatz</groupId>
    <artifactId>ersatz-groovy</artifactId>
    <version>4.0.1</version>
    <scope>test</scope>
</dependency>

Shadowed

There is a safe (shadowed) version of each library available, which is useful in cases where you already have a version of Undertow in use (to avoid version collisions). See the Shadow Jar section of the User Guide for more information.

Build Instructions

Ersatz is built using Gradle:

./gradlew clean build

Or, if the "shadow" artifact is desired:

./gradlew clean build shadowJar

If you are interested in building the website, with all documentation and reports, you can run the following:

./gradlew site

In order to build specific reports, run the appropriate one of the following:

./gradlew asciidoctor
./gradlew javadoc
./gradlew jacocoTestReport
./gradlew test

Publishing

To Local Maven Repo

You can publish the all the source, javadoc, "safe" and regular jars to your local maven repository (~/.m2/repository directory) using the following command:

./gradlew publishToMavenLocal -x signErsatzGroovyPublication signErsatzPublication

// or, if you have not built recently
./gradlew clean build publishToMavenLocal -x signErsatzGroovyPublication signErsatzPublication

The -x sign skips the signing step, which requires signing information. See the section on "signing" below if you need to have the locally published artifacts signed.

To Maven Central

Before you publish a release, be sure to generate a release build (see signing section for details):

./gradlew clean build shadowJar signErsatzGroovyPublication signErsatzPublication -Psigning.gnupg.keyName=<key-id> -Psigning.gnupg.passphrase=<key-pass>

Then, to publish the artifacts to the Maven Central Repository, run

./gradlew publish -PossrhUser=<jira-user> -PossrhPass=<jira-pass> -Psigning.gnupg.keyName=<key-id> -Psigning.gnupg.passphrase=<key-pass>

The additional "signing." properties are required to sign the artifacts, see the Signing section below for more details.

Once the artifacts have been published, sign-in to https://s01.oss.sonatype.org and navigate to the "Staging Repositories" and "Close" the published artifacts - this may take some time to appear. If there are errors, you can "Drop" it, fix them and publish again.

After you have successfully "closed" the staging repository, you can release it by pressing the "Release" button.

Signing

When publishing the artifacts to the Maven Central Repository, they need to be signed. In order to keep the signing information secret, the properties are added only when the publishing task is executed, on the command line.

When you want to sign the published artifacts, add the following parameters to the command line:

-Psigning.gnupg.keyName=<last-8-of-key> -Psigning.gnupg.passphrase=<key-password>

where <last-8-of-key> is the last 8 characters of the key, and <key-password> is the password for the key.

You can list the available keys using:

gpg -k

Documentation Site

Building

You can build the documentation website using the following:

./gradlew site

Which will build all Javadocs, User Guide, build reports and the website itself.

Publishing

Publishing the website is a bit of an odd process:

  1. Create a separate clone of the ersatz project repo with a different name (e.g. ersatz-site).
  2. In the ersatz-site repo checkout the gh-pages branch - you should see only website content in that repo now.
  3. Publish the updated site content from the main project by running: rsync -r build/site/* ../ersatz-site/
  4. In the ersatz-site project add, commit and push the changes into the gh-pages branch.

At this point the website will be published but it may take some time for GitHub to reload the changes.

License

Copyright (C) 2023 Christopher J. Stehno

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

gradle-natives

Gradle plugin to aid in managing native libraries associated with Java-based projects.
Groovy
32
star
2

coffeaelectronica

My technical blog.
CSS
18
star
3

dependency-checker

Gradle plugin for validating dependency configurations.
Groovy
10
star
4

vanilla

Some helpful reusable libraries.
Groovy
7
star
5

effigy

Groovy annotation-driven JDBC row mapping framework.
Groovy
6
star
6

groovy-di

Demo of using default Groovy constructs to throw together a simple DI model.
Groovy
4
star
7

gradle-site

Gradle plugin providing project documentation creation and management tools.
Groovy
3
star
8

codeperks

[abandoned] - see my Vanilla project instead.
Java
3
star
9

PillCounter

Android app for helping to double check prescription pill counts.
Java
3
star
10

rest-dev

Code repository for my "Take a REST with HttpBuilder-NG and Ersatz" blog post
Java
2
star
11

taggerplugin

[Abandoned] File tagging plugin for Eclipse
2
star
12

MyMdb

My Movie Database - a simple personal movie indexing application.
Groovy
2
star
13

ColaPop

ColaPop Server - toy pop3 email server
Java
2
star
14

gradle-webpreview-plugin

Gradle plugin used to serve local web content previews.
Groovy
2
star
15

deskclock

A simple desktop clock (and weather) widget.
Kotlin
1
star
16

depdiff

Maven repo diff tool
Rust
1
star
17

test-things

A collection of unit testing tools for Java.
Java
1
star
18

starhunter

Simple alien-blasting game used to learn 2D game development.
Groovy
1
star
19

polyglot

Some Kotlin code that provides DSL-like support for Kotlin, Java and Groovy without loss of functionalilty.
Kotlin
1
star
20

ersatz-usage-tests

Java
1
star
21

dmtools

Tools for DMs.
Kotlin
1
star
22

cjstehno.github.com

Christopher J. Stehno's Projects
JavaScript
1
star
23

ersatz-socket

Prototype for a socket server testing library (inspired by ersatz server)
Java
1
star
24

eclipsefrills

[Abandoned] EclipseFrills Plugin
1
star
25

sjdbcx

[Abandoned] A lightweight extension of the Spring JDBC libraries.
Java
1
star
26

campaign-tools

D&D Campaign Tools
FreeMarker
1
star
27

tally

Simple game score keeper web app written in Flutter.
Dart
1
star
28

boredom

Ratpack demo application providing humorous content from Cards Against Humanity decks.
Groovy
1
star
29

proving

Useful utilities for writing unit tests in Dart.
HTML
1
star