MerchantSessionAuthAnnotationTest.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.ruoyi.app.user;
  2. import com.ruoyi.app.mendian.FoodSpecController;
  3. import com.ruoyi.app.mendian.PosFenleiController;
  4. import com.ruoyi.app.mendian.PosFoodController;
  5. import com.ruoyi.app.mendian.PosStoreController;
  6. import com.ruoyi.app.order.PosOrderController;
  7. import com.ruoyi.app.order.PosOrderShOprateController;
  8. import com.ruoyi.system.utils.Auth;
  9. import org.junit.jupiter.api.Test;
  10. import java.lang.reflect.Method;
  11. import java.util.Arrays;
  12. import static org.junit.jupiter.api.Assertions.assertNotNull;
  13. import static org.junit.jupiter.api.Assertions.assertTrue;
  14. class MerchantSessionAuthAnnotationTest {
  15. @Test
  16. void merchantEndpointsRequireServerSessionValidation() {
  17. assertSessionAuth(MerchantSubaccountController.class,
  18. "list", "create", "update", "updatePassword", "updateStatus");
  19. assertSessionAuth(InfoUserController.class, "merchantLogout");
  20. assertSessionAuth(FoodSpecController.class,
  21. "foodSpecPageList", "saveFoodSpec", "getSpecs", "deleteFoodSpec",
  22. "getAvailableSpecsList", "changeOpen", "changeSpecValueOpen");
  23. assertSessionAuth(PosFenleiController.class, "delefenlei", "addfenlei");
  24. assertSessionAuth(PosFoodController.class,
  25. "delefood", "changerecommend", "setposfood", "getidlist", "getFoodPageList");
  26. assertSessionAuth(PosStoreController.class,
  27. "delemendian", "storelistlist", "getmystorelist", "addmendian",
  28. "getMdBusinessHours", "saveMdBusinessHours");
  29. assertSessionAuth(PosOrderController.class,
  30. "setorderuzt", "getorderxq", "getstoreorderlist");
  31. assertSessionAuth(PosOrderShOprateController.class,
  32. "getInvoice", "invalidInvoice", "createOrder", "acceptOrder", "dispatchOrder",
  33. "completeOrder", "confirmCashPayment", "cancelOrder", "orderList", "orderDetail");
  34. }
  35. private void assertSessionAuth(Class<?> controllerType, String... methodNames) {
  36. for (String methodName : methodNames) {
  37. Method method = Arrays.stream(controllerType.getDeclaredMethods())
  38. .filter(candidate -> candidate.getName().equals(methodName))
  39. .findFirst()
  40. .orElseThrow(() -> new AssertionError(controllerType.getSimpleName()
  41. + "." + methodName + " not found"));
  42. Auth auth = method.getAnnotation(Auth.class);
  43. assertNotNull(auth, controllerType.getSimpleName() + "." + methodName
  44. + " must declare @Auth");
  45. assertTrue(auth.session(), controllerType.getSimpleName() + "." + methodName
  46. + " must validate the Redis session");
  47. }
  48. }
  49. }