Slide 29
Slide 29 text
@Test
void APIエンドポイントではユーザの権限を必ずチェックする
() {
methods().that(new DescribedPredicate<>("コントローラーのハンドラーメソッド
") {
@Override
public boolean apply(JavaMethod method) {
return method.isAnnotatedWith(RequestMapping.class) || method.isAnnotatedWith(GetMapping.class)
|| method.isAnnotatedWith(PostMapping.class) || method.isAnnotatedWith(PutMapping.class)
|| method.isAnnotatedWith(PatchMapping.class) || method.isAnnotatedWith(DeleteMapping.class);
}
})
.should(new ArchCondition<>("@Role でアノテートする") {
@Override
public void check(JavaMethod method, ConditionEvents events) {
if (! method.isAnnotatedWith(Role.class)) {
// 実装違反を通知
events.add(SimpleConditionEvent.violated(method.getOwner(),
String.format("%s is not annotated with @Role.", method.getFullName())
));
}
}
})
.check(CLASSES);
}
29