0

春のセキュリティを介してアクセスを制限するために使用する方法があります。方法は次のとおりです。

@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 リフレクション クラスを作成し、上記のメソッドを呼び出して/trade/createrequisition、ログインしているユーザーがアクセスできるかどうかをサーバーに送信する方法です。

これを行う方法。

4

1 に答える 1

1

メソッドにセキュリティ アノテーションが追加されているかどうかを確認したい場合は、単体テスト ケースで Java リフレクション API を使用して確認できます。

リフレクションを使用してメソッドを見つけ、そのチェックで method.getAnnotation(PreAuthorize.class)

しかし実際には、これを統合/機能テストとしてテストする必要があります。

于 2013-04-05T06:50:25.457 に答える