/*
 * Copyright 2015 JBoss Inc
 *
 * 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.
 */
package io.apiman.test.policies;

import io.apiman.gateway.engine.beans.ApiRequest;

/**
 * During a policy test, we need something to simulate an invoke to a back
 * end API.  This interface is that simulation.  Tests can provide
 * their own custom API implementation, or simply allow the test framework
 * to use the default "echo" API.
 *
 * @author eric.wittmann@redhat.com
 */
public interface IPolicyTestBackEndApi {

    /**
     * Called to invoke the back end API.  Includes full request details
     * as well as the request body.
     * @param request the API request
     * @param requestBody the request body or null if the body is empty
     * @return a back end response
     */
    PolicyTestBackEndApiResponse invoke(ApiRequest request, byte[] requestBody);

}
