You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
74 KiB
103 lines
74 KiB
4 years ago
|
package com.fr.plugin.pack.http;
|
||
|
|
||
|
import com.finebi.activate.foundation.StableManager;
|
||
|
import com.finebi.common.api.vo.table.parameter.Parameters;
|
||
|
import com.finebi.common.exception.FineEngineException;
|
||
|
import com.finebi.dashboard.api.bean.report.ReportBean;
|
||
|
import com.finebi.dashboard.api.bean.widget.WidgetBean;
|
||
|
import com.finebi.dashboard.api.service.FineDashBoardService;
|
||
|
import com.finebi.dashboard.api.service.FineWidgetExecutorService;
|
||
|
import com.finebi.dashboard.impl.helper.FineDashBoardUtils;
|
||
|
import com.finebi.dashboard.impl.service.FineDashBoardServiceImpl;
|
||
|
import com.finebi.dashboard.impl.service.FineWidgetExecutorServiceImpl;
|
||
|
import com.finebi.dashboard.impl.widget.visitor.TableAbsentChecker;
|
||
|
import com.finebi.foundation.api.reponse.FineRespond;
|
||
|
import com.finebi.web.mock.web.test.DelegatingServletInputStream;
|
||
|
import com.fr.decision.authority.data.User;
|
||
|
import com.fr.plugin.pack.conf.PackPluginConfig;
|
||
|
import mockit.Expectations;
|
||
|
import mockit.Mock;
|
||
|
import mockit.MockUp;
|
||
|
import mockit.Mocked;
|
||
|
import org.junit.Test;
|
||
|
import sun.misc.IOUtils;
|
||
|
|
||
|
import javax.servlet.ServletInputStream;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
|
||
|
import java.io.ByteArrayInputStream;
|
||
|
import java.io.IOException;
|
||
|
|
||
|
import static org.junit.Assert.*;
|
||
|
|
||
|
/**
|
||
|
* @author Jonas
|
||
|
* @version 5.1.3
|
||
|
* Created by Jonas on 2020-10-20
|
||
|
*/
|
||
|
public class PackHttpHandlerTest {
|
||
|
private String body = "{\"widgets\":{\"4339cd8362f546e99fc90d54e3755ddb\":{\"type\":1,\"tableName\":\"kyligence_NULLCS_D\",\"timeStamp\":1602758845193,\"bounds\":{\"left\":0,\"top\":0,\"width\":742.2222222222223,\"height\":248.61111111111111},\"name\":\"未命名组件\",\"viewAttr\":{\"10000\":{\"type\":1,\"left\":{\"sharedAxis\":null,\"reversed\":false,\"log\":false},\"right\":{\"sharedAxis\":null,\"reversed\":false,\"log\":false},\"size\":0},\"20000\":{\"type\":1,\"size\":0},\"30000\":{\"type\":1,\"left\":{\"sharedAxis\":null,\"reversed\":false,\"log\":false},\"right\":{\"sharedAxis\":null,\"reversed\":false,\"log\":false},\"size\":0}},\"allowOverlap\":false,\"showTitle\":true,\"mobile\":false,\"view\":{\"10000\":[],\"20000\":[],\"30000\":[\"8c4ed96759776abd\"]},\"dimensions\":{\"16e524b5e619b609\":{\"name\":\"NAME\",\"type\":1,\"notShowNull\":false,\"id\":\"16e524b5e619b609\",\"fieldId\":\"kyligence[5f]NULLCS[5f]D_NAME\",\"toCountType\":0,\"group\":{\"type\":2},\"calculation\":{\"type\":0,\"value\":0},\"settings\":{\"trendLine\":[],\"cordon\":[],\"categoryAxis\":{},\"valueAxis\":{\"sharedAxis\":null,\"reversed\":false,\"log\":false},\"annotate\":[],\"size\":0,\"stack\":false,\"formatStyle\":1,\"formatDecimal\":-1,\"numLevel\":1,\"numSeparators\":true,\"tableShape\":{\"shape\":-1,\"color\":\"\",\"filters\":[]},\"tableColor\":{\"color\":\"\",\"backgroundColor\":\"\",\"filters\":[]},\"unit\":\"\",\"dateFormat\":{},\"flash\":[],\"imageData\":[]},\"showMissingTime\":false,\"metric\":0,\"counterDep\":\"TOTAL_ROWS\",\"repeatCal\":true,\"formatStyle\":0,\"formatDecimal\":0,\"numLevel\":0,\"numSeparators\":false,\"used\":true,\"drillDimensions\":{}},\"8c4ed96759776abd\":{\"name\":\"ID\",\"type\":2,\"notShowNull\":false,\"id\":\"8c4ed96759776abd\",\"fieldId\":\"kyligence[5f]NULLCS[5f]D_ID\",\"toCountType\":0,\"group\":{\"type\":3},\"calculation\":{\"type\":0,\"value\":0},\"settings\":{\"trendLine\":[],\"cordon\":[],\"categoryAxis\":{},\"valueAxis\":{\"sharedAxis\":null,\"reversed\":false,\"log\":false},\"annotate\":[],\"size\":0,\"stack\":false,\"formatStyle\":1,\"formatDecimal\":-1,\"numLevel\":1,\"numSeparators\":true,\"tableShape\":{\"shape\":-1,\"color\":\"\",\"filters\":[]},\"tableColor\":{\"color\":\"\",\"backgroundColor\":\"\",\"filters\":[]},\"unit\":\"\",\"dateFormat\":{},\"flash\":[],\"imageData\":[]},\"showMissingTime\":false,\"metric\":0,\"counterDep\":\"TOTAL_ROWS\",\"repeatCal\":true,\"formatStyle\":0,\"formatDecimal\":0,\"numLevel\":0,\"numSeparators\":false,\"used\":true,\"drillDimensions\":{}}},\"page\":0,\"realData\":false,\"allData\":false,\"templateChartColorChange\":false,\"detailSetting\":false,\"settings\":{\"chartAttr\":{\"graphic\":{\"dimensionId\":\"\",\"color\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true,\"gradient\":true,\"overlayEffect\":false,\"opacity\":-1},\"size\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true,\"intervalWidth\":-1,\"roundRadius\":-1,\"pointRadius\":-1,\"heatRadius\":-1,\"lineWidth\":-1,\"funnelWidth\":-1,\"gaugeRadius\":-1,\"lastSliderPosition\":0},\"label\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true,\"allowOverlap\":false,\"hasPositionModified\":false,\"valid\":true},\"tooltip\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true,\"forecastKey\":\"预测\",\"shared\":false},\"granularity\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true},\"type\":\"interval\"},\"entire\":{\"dimensionId\":\"entire\",\"color\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true,\"gradient\":true,\"overlayEffect\":false,\"opacity\":-1,\"borderColor\":\"\",\"nonField\":{\"color\":\"\"},\"dimension\":{\"auto\":true,\"customize\":false,\"colors\":[],\"colorMap\":{}},\"measure\":{\"gradientType\":\"continuous\",\"name\":\"auto\",\"autoInterval\":true,\"count\":2,\"custom\":{\"min\":0,\"max\":0,\"ranges\":[]}},\"gauge\":{\"pointColor\":\"\",\"tickColor\":\"\",\"tickSlotColor\":\"\",\"hubColor\":\"\",\"hubBackgroundColor\":\"\",\"backgroundColor\":\"\"}},\"size\":{\"dimensionIds\":[],\"hasModified\":false,\"auto\":true,\"intervalWidth\":30,\"
|
||
|
|
||
|
@Test
|
||
|
public void testHandle(@Mocked HttpServletRequest request, @Mocked HttpServletResponse response) throws Exception {
|
||
|
StableManager.getContext().register(FineDashBoardServiceImpl.class);
|
||
|
StableManager.getContext().register(FineWidgetExecutorServiceImpl.class);
|
||
|
new MockUp<TableAbsentChecker>() {
|
||
|
@Mock
|
||
|
public void check(WidgetBean widgetBean) throws FineEngineException {
|
||
|
}
|
||
|
};
|
||
|
new MockUp<PackHttpHandler>() {
|
||
|
@Mock
|
||
|
private FineRespond handleException(Exception e) {
|
||
|
return FineRespond.fail();
|
||
|
}
|
||
|
};
|
||
|
new MockUp<FineDashBoardService>() {
|
||
|
@Mock
|
||
|
private ReportBean getReportById(String reportId) throws Exception {
|
||
|
return new ReportBean();
|
||
|
}
|
||
|
};
|
||
|
new MockUp<PackPluginConfig>() {
|
||
|
@Mock
|
||
|
public PackPluginConfig getInstance() {
|
||
|
return new PackPluginConfig();
|
||
|
}
|
||
|
|
||
|
public int getSqlQueryTimeout() {
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
public int getWidgetQueryTimeout() {
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
public int getReportQueryMax() {
|
||
|
return 3;
|
||
|
}
|
||
|
|
||
|
public int getWidgetQueryMax() {
|
||
|
return 3;
|
||
|
}
|
||
|
};
|
||
|
new Expectations(FineDashBoardUtils.class) {
|
||
|
{
|
||
|
request.getInputStream();
|
||
|
result = new DelegatingServletInputStream(new ByteArrayInputStream(body.getBytes()));
|
||
|
|
||
|
FineDashBoardUtils.getUserFromReq(request, (String) any);
|
||
|
result = new User();
|
||
|
|
||
|
FineDashBoardUtils.isMobile(request);
|
||
|
result = false;
|
||
|
|
||
|
FineDashBoardUtils.getParameterFromRequest(request);
|
||
|
result = new Parameters.Builder().build();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
new PackHttpHandler().handle(request, response);
|
||
|
}
|
||
|
}
|