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

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);
}
}