package com.github.kristofa.test.http; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import org.apache.commons.lang3.Validate; /** * Indicates there are {@link HttpRequest http requests} that we expected but did not get and/or that we got unexpected * {@link HttpRequest http requests}. * * @see HttpResponseProvider * @author kristof */ public class UnsatisfiedExpectationException extends Exception { private static final long serialVersionUID = -6003072239642243697L; private final List<HttpRequest> missingHttpRequests = new ArrayList<HttpRequest>(); private final List<HttpRequest> unexpectedHttpRequests = new ArrayList<HttpRequest>(); /** * Creates a new instance. * <p> * Both collections should not be <code>null</code>. One of both collections can be empty. * * @param missingRequests Requests that we expected but did not get. * @param unexpectedRequests Requests that we got but did not expect. */ public UnsatisfiedExpectationException(final Collection<HttpRequest> missingRequests, final Collection<HttpRequest> unexpectedRequests) { super(); Validate.notNull(missingRequests); Validate.notNull(unexpectedRequests); Validate.isTrue(!missingRequests.isEmpty() || !unexpectedRequests.isEmpty()); missingHttpRequests.addAll(missingRequests); unexpectedHttpRequests.addAll(unexpectedRequests); } /** * Gets the http requests that we expected but did not get. * * @return Collection of http requests that we expected but did not get. */ public Collection<HttpRequest> getMissingHttpRequests() { return Collections.unmodifiableCollection(missingHttpRequests); } /** * Gets the http requests that we got but did not expect. * * @return Collection of http requests that we got but did not expect. */ public Collection<HttpRequest> getUnexpectedHttpRequests() { return Collections.unmodifiableCollection(unexpectedHttpRequests); } /** * {@inheritDoc} */ @Override public String toString() { final String missingExpectedRequestsString = "Missing expected requests: " + getMissingHttpRequests(); final String unexpectedReceivedRequestsString = "Unexpected received requests: " + getUnexpectedHttpRequests(); return missingExpectedRequestsString + "\n" + unexpectedReceivedRequestsString; } }