我有一种方法用于通过弹簧安全性限制访问。以下是方法:
@PreAuthorize("isAuthenticated() and hasPermission(#request, 'CREATE_REQUISITION')")
@RequestMapping(method = RequestMethod.POST, value = "/trade/createrequisition")
public @ResponseBody
void createRequisition(@RequestBody CreateRequisitionRO[] request,
@RequestHeader("validateOnly") boolean validateOnly) {
logger.debug("Starting createRequisition()...");
for (int i = 0; i < request.length; i++) {
CreateRequisitionRO requisitionRequest = request[i];
// FIXME this has to be removed/moved
requisitionRequest.setFundManager(requisitionRequest.getUserId());
// FIXME might have to search using param level as well
SystemDefault sysDefault = dbFuncs.references.systemDefault
.findByCompanyAndDivisionAndPortfolio(
userContext.getCompany(),
userContext.getDivision(),
requisitionRequest.getPortfolio());
requisitionRequest.setCustodianN(sysDefault.getCustodianN());
gateKeeper.route(requisitionRequest);
}
}
现在我想在运行时使用 java Reflection 来测试该方法是否像单元测试一样工作正常。
我曾尝试为上述内容编写 TestNG,但由于我们拥有的项目架构而无法正常工作,因此决定使用反射进行测试[though which is not a good way of doing this and later we will find the solution for this]
。
我的问题是如何为该方法创建一个 java 反射类并调用上述方法并将 URL 发送/trade/createrequisition
到服务器,无论登录用户是否可以访问它。
这该怎么做。