Package net.csdn.junit

Source Code of net.csdn.junit.BaseControllerTest

package net.csdn.junit;

import net.csdn.ServiceFramwork;
import net.csdn.common.exception.RenderFinish;
import net.csdn.common.settings.Settings;
import net.csdn.modules.http.HttpServer;
import net.csdn.modules.http.RestController;
import net.csdn.modules.http.RestRequest;
import net.csdn.modules.http.RestResponse;
import net.csdn.modules.http.support.HttpHolder;
import net.csdn.modules.mock.MockRestRequest;
import net.csdn.modules.mock.MockRestResponse;

import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static net.csdn.common.collections.WowCollections.map;

/**
* 6/28/13 WilliamZhu(allwefantasy@gmail.com)
*/
public class BaseControllerTest extends IocTest {

    public RestResponse runAction(String path, Map params, RestRequest.Method method) throws Exception {
        RestResponse response = new MockRestResponse();

        Map newParams = new HashMap();
        for (Object key : params.keySet()) {
            newParams.put(key, params.get(key).toString());
        }

        RestController controller = injector.getInstance(RestController.class);
        try {
            RestRequest restRequest = new MockRestRequest(path, newParams, method, null);
            HttpServer.setHttpHolder(new HttpHolder(restRequest, response));
            controller.dispatchRequest(restRequest, response);
        } catch (Exception e) {
            catchRenderFinish(e);
        }
        return response;
    }

    boolean disableMysql = injector.getInstance(Settings.class).getAsBoolean(ServiceFramwork.mode + ".datasources.mysql.disable", false);

    private void catchRenderFinish(Exception e) throws Exception {
        if (e instanceof RenderFinish) {
            if (!disableMysql) {
                commitTransaction();
            }
        } else if (e instanceof InvocationTargetException) {
            if (((InvocationTargetException) e).getTargetException() instanceof RenderFinish) {
                if (!disableMysql) {
                    commitTransaction();
                }
            } else {
                throw e;
            }
        } else {
            throw e;
        }
    }

    public RestResponse runAction(String path, Map params, String rawParamsStr, RestRequest.Method method) throws Exception {
        RestResponse response = new MockRestResponse();

        Map newParams = new HashMap();
        if (params != null) {
            for (Object key : params.keySet()) {
                newParams.put(key, params.get(key).toString());
            }
        }

        RestController controller = injector.getInstance(RestController.class);
        try {
            controller.dispatchRequest(new MockRestRequest(path, newParams, method, rawParamsStr), response);
        } catch (Exception e) {
            catchRenderFinish(e);
        }
        return response;
    }

    public Map<RestRequest.Method, RestResponse> each(List<RestRequest.Method> methods, String path, Map params) throws Exception {
        Map<RestRequest.Method, RestResponse> maps = map();
        for (RestRequest.Method method : methods) {
            maps.put(method, runAction(path, params, method));
        }
        return maps;
    }

    public Map<RestRequest.Method, RestResponse> each(List<RestRequest.Method> methods, String path, String rawParamStr) throws Exception {
        Map<RestRequest.Method, RestResponse> maps = map();
        for (RestRequest.Method method : methods) {
            maps.put(method, runAction(path, null, rawParamStr, method));
        }
        return maps;
    }

    public RestResponse get(String path, Map params) throws Exception {
        return runAction(path, params, RestRequest.Method.GET);
    }

    public RestResponse post(String path, Map params) throws Exception {
        return runAction(path, params, RestRequest.Method.POST);
    }

    public RestResponse delete(String path, Map params) throws Exception {
        return runAction(path, params, RestRequest.Method.DELETE);
    }

    public RestResponse put(String path, Map params) throws Exception {
        return runAction(path, params, RestRequest.Method.PUT);
    }

    public RestResponse get(String path, String rawParamsStr) throws Exception {
        return runAction(path, null, rawParamsStr, RestRequest.Method.GET);
    }

    public RestResponse get(String path, Map params, String rawParamsStr) throws Exception {
        return runAction(path, params, rawParamsStr, RestRequest.Method.GET);
    }

    public RestResponse post(String path, Map params, String rawParamsStr) throws Exception {
        return runAction(path, params, rawParamsStr, RestRequest.Method.POST);
    }

    public RestResponse post(String path, String rawParamsStr) throws Exception {
        return runAction(path, null, rawParamsStr, RestRequest.Method.POST);
    }

    public RestResponse delete(String path, Map params, String rawParamsStr) throws Exception {
        return runAction(path, params, rawParamsStr, RestRequest.Method.DELETE);
    }

    public RestResponse delete(String path, String rawParamsStr) throws Exception {
        return runAction(path, null, rawParamsStr, RestRequest.Method.DELETE);
    }


    public RestResponse put(String path, Map params, String rawParamsStr) throws Exception {
        return runAction(path, params, rawParamsStr, RestRequest.Method.PUT);
    }

    public RestResponse put(String path, String rawParamsStr) throws Exception {
        return runAction(path, null, rawParamsStr, RestRequest.Method.PUT);
    }
}
TOP

Related Classes of net.csdn.junit.BaseControllerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.