From cfc11d0ba82cc5fdb664b884c10bd9a881295f37 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 23 Apr 2022 19:12:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=20junit5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/dev33/satoken/SaManager.java | 21 -- .../dev33/satoken/action/SaTokenAction.java | 108 +++---- .../action/SaTokenActionDefaultImpl.java | 300 +++++++++--------- .../cn/dev33/satoken/strategy/SaStrategy.java | 96 +++++- .../filter/SaTokenDubboProviderFilter.java | 4 + .../satoken/reactor/spring/SaBeanInject.java | 10 - .../cn/dev33/satoken/solon/XPluginImp.java | 7 - .../cn/dev33/satoken/spring/SaBeanInject.java | 10 - sa-token-test/pom.xml | 4 +- .../satoken/context/model/SaCookieTest.java | 9 +- .../cn/dev33/satoken/dao/SaTokenDaoTest.java | 39 ++- .../dev33/satoken/fun/IsRunFunctionTest.java | 9 +- .../cn/dev33/satoken/secure/BCryptTest.java | 11 +- .../satoken/secure/SaBase64UtilTest.java | 11 +- .../satoken/secure/SaSecureUtilTest.java | 21 +- .../dev33/satoken/session/SaSessionTest.java | 31 +- .../cn/dev33/satoken/util/SaFoxUtilTest.java | 138 ++++---- .../cn/dev33/satoken/util/SaResultTest.java | 23 +- .../test/java/com/pj/test/JwtForMixTest.java | 202 ++++++------ .../java/com/pj/test/JwtForStatelessTest.java | 119 +++---- .../java/com/pj/test/JwtForStyleTest.java | 34 +- .../java/com/pj/test/LoginControllerTest.java | 27 +- .../src/test/java/com/pj/test/BasicsTest.java | 200 ++++++------ .../test/java/com/pj/test/ManyLoginTest.java | 51 ++- 24 files changed, 744 insertions(+), 741 deletions(-) diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java index a43c739e..d687b838 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java @@ -3,8 +3,6 @@ package cn.dev33.satoken; import java.util.HashMap; import java.util.Map; -import cn.dev33.satoken.action.SaTokenAction; -import cn.dev33.satoken.action.SaTokenActionDefaultImpl; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.config.SaTokenConfigFactory; import cn.dev33.satoken.context.SaTokenContext; @@ -28,7 +26,6 @@ import cn.dev33.satoken.util.SaFoxUtil; * @author kong * */ -@SuppressWarnings("deprecation") public class SaManager { /** @@ -93,24 +90,6 @@ public class SaManager { return stpInterface; } - /** - * 框架行为 Bean - */ - private volatile static SaTokenAction saTokenAction; - public static void setSaTokenAction(SaTokenAction saTokenAction) { - SaManager.saTokenAction = saTokenAction; - } - public static SaTokenAction getSaTokenAction() { - if (saTokenAction == null) { - synchronized (SaManager.class) { - if (saTokenAction == null) { - setSaTokenAction(new SaTokenActionDefaultImpl()); - } - } - } - return saTokenAction; - } - /** * 上下文Context Bean */ diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java index 749041dd..31a4833e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenAction.java @@ -1,54 +1,54 @@ -package cn.dev33.satoken.action; - -import java.lang.reflect.AnnotatedElement; -import java.lang.reflect.Method; -import java.util.List; - -import cn.dev33.satoken.session.SaSession; - -/** - *

v1.27+ 此接口已废弃,目前版本暂时向下兼容,请及时更换为 SaStrategy

- *

Sa-Token 逻辑代理接口

- *

此接口将会代理框架内部的一些关键性逻辑,方便开发者进行按需重写

- * @author kong - * - */ -@Deprecated -public interface SaTokenAction { - - /** - * 创建一个Token - * @param loginId 账号id - * @param loginType 账号类型 - * @return token - */ - public String createToken(Object loginId, String loginType); - - /** - * 创建一个Session - * @param sessionId Session的Id - * @return 创建后的Session - */ - public SaSession createSession(String sessionId); - - /** - * 判断:集合中是否包含指定元素(模糊匹配) - * @param list 集合 - * @param element 元素 - * @return 是否包含 - */ - public boolean hasElement(List list, String element); - - /** - * 对一个Method对象进行注解检查(注解鉴权内部实现) - * @param method Method对象 - */ - public void checkMethodAnnotation(Method method); - - /** - * 从指定元素校验注解 - * @param target / - */ - public void validateAnnotation(AnnotatedElement target); - -} +//package cn.dev33.satoken.action; +// +//import java.lang.reflect.AnnotatedElement; +//import java.lang.reflect.Method; +//import java.util.List; +// +//import cn.dev33.satoken.session.SaSession; +// +///** +// *

v1.27+ 此接口已废弃,目前版本暂时向下兼容,请及时更换为 SaStrategy

+// *

Sa-Token 逻辑代理接口

+// *

此接口将会代理框架内部的一些关键性逻辑,方便开发者进行按需重写

+// * @author kong +// * +// */ +//@Deprecated +//public interface SaTokenAction { +// +// /** +// * 创建一个Token +// * @param loginId 账号id +// * @param loginType 账号类型 +// * @return token +// */ +// public String createToken(Object loginId, String loginType); +// +// /** +// * 创建一个Session +// * @param sessionId Session的Id +// * @return 创建后的Session +// */ +// public SaSession createSession(String sessionId); +// +// /** +// * 判断:集合中是否包含指定元素(模糊匹配) +// * @param list 集合 +// * @param element 元素 +// * @return 是否包含 +// */ +// public boolean hasElement(List list, String element); +// +// /** +// * 对一个Method对象进行注解检查(注解鉴权内部实现) +// * @param method Method对象 +// */ +// public void checkMethodAnnotation(Method method); +// +// /** +// * 从指定元素校验注解 +// * @param target / +// */ +// public void validateAnnotation(AnnotatedElement target); +// +//} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java index a8890e55..8aa217c9 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java @@ -1,150 +1,150 @@ -package cn.dev33.satoken.action; - -import java.lang.reflect.AnnotatedElement; -import java.lang.reflect.Method; -import java.util.List; -import java.util.UUID; - -import cn.dev33.satoken.SaManager; -import cn.dev33.satoken.annotation.SaCheckBasic; -import cn.dev33.satoken.annotation.SaCheckLogin; -import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.dev33.satoken.annotation.SaCheckRole; -import cn.dev33.satoken.annotation.SaCheckSafe; -import cn.dev33.satoken.basic.SaBasicUtil; -import cn.dev33.satoken.session.SaSession; -import cn.dev33.satoken.strategy.SaStrategy; -import cn.dev33.satoken.util.SaFoxUtil; -import cn.dev33.satoken.util.SaTokenConsts; - -/** - *

v1.27+ 此接口已废弃,目前版本暂时向下兼容,请及时更换为 SaStrategy

- *

Sa-Token 逻辑代理接口 [默认实现类]

- * @author kong - * - */ -@Deprecated -public class SaTokenActionDefaultImpl implements SaTokenAction { - - /** - * 创建一个Token - */ - @Override - public String createToken(Object loginId, String loginType) { - // 根据配置的tokenStyle生成不同风格的token - String tokenStyle = SaManager.getConfig().getTokenStyle(); - // uuid - if(SaTokenConsts.TOKEN_STYLE_UUID.equals(tokenStyle)) { - return UUID.randomUUID().toString(); - } - // 简单uuid (不带下划线) - if(SaTokenConsts.TOKEN_STYLE_SIMPLE_UUID.equals(tokenStyle)) { - return UUID.randomUUID().toString().replaceAll("-", ""); - } - // 32位随机字符串 - if(SaTokenConsts.TOKEN_STYLE_RANDOM_32.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(32); - } - // 64位随机字符串 - if(SaTokenConsts.TOKEN_STYLE_RANDOM_64.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(64); - } - // 128位随机字符串 - if(SaTokenConsts.TOKEN_STYLE_RANDOM_128.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(128); - } - // tik风格 (2_14_16) - if(SaTokenConsts.TOKEN_STYLE_TIK.equals(tokenStyle)) { - return SaFoxUtil.getRandomString(2) + "_" + SaFoxUtil.getRandomString(14) + "_" + SaFoxUtil.getRandomString(16) + "__"; - } - // 默认,还是uuid - return UUID.randomUUID().toString(); - } - - /** - * 创建一个Session - */ - @Override - public SaSession createSession(String sessionId) { - return new SaSession(sessionId); - } - - /** - * 判断:集合中是否包含指定元素(模糊匹配) - */ - @Override - public boolean hasElement(List list, String element) { - - // 空集合直接返回false - if(list == null || list.size() == 0) { - return false; - } - - // 先尝试一下简单匹配,如果可以匹配成功则无需继续模糊匹配 - if (list.contains(element)) { - return true; - } - - // 开始模糊匹配 - for (String patt : list) { - if(SaFoxUtil.vagueMatch(patt, element)) { - return true; - } - } - - // 走出for循环说明没有一个元素可以匹配成功 - return false; - } - - /** - * 对一个Method对象进行注解检查(注解鉴权内部实现) - */ - @Override - public void checkMethodAnnotation(Method method) { - - // 先校验 Method 所属 Class 上的注解 - validateAnnotation(method.getDeclaringClass()); - - // 再校验 Method 上的注解 - validateAnnotation(method); - } - - /** - * 从指定元素校验注解 - * @param target see note - */ - public void validateAnnotation(AnnotatedElement target) { - - // 校验 @SaCheckLogin 注解 - SaCheckLogin checkLogin = (SaCheckLogin) SaStrategy.me.getAnnotation.apply(target, SaCheckLogin.class); - if(checkLogin != null) { - SaManager.getStpLogic(checkLogin.type()).checkByAnnotation(checkLogin); - } - - // 校验 @SaCheckRole 注解 - SaCheckRole checkRole = (SaCheckRole) SaStrategy.me.getAnnotation.apply(target, SaCheckRole.class); - if(checkRole != null) { - SaManager.getStpLogic(checkRole.type()).checkByAnnotation(checkRole); - } - - // 校验 @SaCheckPermission 注解 - SaCheckPermission checkPermission = (SaCheckPermission) SaStrategy.me.getAnnotation.apply(target, SaCheckPermission.class); - if(checkPermission != null) { - SaManager.getStpLogic(checkPermission.type()).checkByAnnotation(checkPermission); - } - - // 校验 @SaCheckSafe 注解 - SaCheckSafe checkSafe = (SaCheckSafe) SaStrategy.me.getAnnotation.apply(target, SaCheckSafe.class); - if(checkSafe != null) { - SaManager.getStpLogic(checkSafe.type()).checkByAnnotation(checkSafe); - } - - // 校验 @SaCheckBasic 注解 - SaCheckBasic checkBasic = (SaCheckBasic) SaStrategy.me.getAnnotation.apply(target, SaCheckBasic.class); - if(checkBasic != null) { - SaBasicUtil.check(checkBasic.realm(), checkBasic.account()); - } - - } - -} +//package cn.dev33.satoken.action; +// +//import java.lang.reflect.AnnotatedElement; +//import java.lang.reflect.Method; +//import java.util.List; +//import java.util.UUID; +// +//import cn.dev33.satoken.SaManager; +//import cn.dev33.satoken.annotation.SaCheckBasic; +//import cn.dev33.satoken.annotation.SaCheckLogin; +//import cn.dev33.satoken.annotation.SaCheckPermission; +//import cn.dev33.satoken.annotation.SaCheckRole; +//import cn.dev33.satoken.annotation.SaCheckSafe; +//import cn.dev33.satoken.basic.SaBasicUtil; +//import cn.dev33.satoken.session.SaSession; +//import cn.dev33.satoken.strategy.SaStrategy; +//import cn.dev33.satoken.util.SaFoxUtil; +//import cn.dev33.satoken.util.SaTokenConsts; +// +///** +// *

v1.27+ 此接口已废弃,目前版本暂时向下兼容,请及时更换为 SaStrategy

+// *

Sa-Token 逻辑代理接口 [默认实现类]

+// * @author kong +// * +// */ +//@Deprecated +//public class SaTokenActionDefaultImpl implements SaTokenAction { +// +// /** +// * 创建一个Token +// */ +// @Override +// public String createToken(Object loginId, String loginType) { +// // 根据配置的tokenStyle生成不同风格的token +// String tokenStyle = SaManager.getConfig().getTokenStyle(); +// // uuid +// if(SaTokenConsts.TOKEN_STYLE_UUID.equals(tokenStyle)) { +// return UUID.randomUUID().toString(); +// } +// // 简单uuid (不带下划线) +// if(SaTokenConsts.TOKEN_STYLE_SIMPLE_UUID.equals(tokenStyle)) { +// return UUID.randomUUID().toString().replaceAll("-", ""); +// } +// // 32位随机字符串 +// if(SaTokenConsts.TOKEN_STYLE_RANDOM_32.equals(tokenStyle)) { +// return SaFoxUtil.getRandomString(32); +// } +// // 64位随机字符串 +// if(SaTokenConsts.TOKEN_STYLE_RANDOM_64.equals(tokenStyle)) { +// return SaFoxUtil.getRandomString(64); +// } +// // 128位随机字符串 +// if(SaTokenConsts.TOKEN_STYLE_RANDOM_128.equals(tokenStyle)) { +// return SaFoxUtil.getRandomString(128); +// } +// // tik风格 (2_14_16) +// if(SaTokenConsts.TOKEN_STYLE_TIK.equals(tokenStyle)) { +// return SaFoxUtil.getRandomString(2) + "_" + SaFoxUtil.getRandomString(14) + "_" + SaFoxUtil.getRandomString(16) + "__"; +// } +// // 默认,还是uuid +// return UUID.randomUUID().toString(); +// } +// +// /** +// * 创建一个Session +// */ +// @Override +// public SaSession createSession(String sessionId) { +// return new SaSession(sessionId); +// } +// +// /** +// * 判断:集合中是否包含指定元素(模糊匹配) +// */ +// @Override +// public boolean hasElement(List list, String element) { +// +// // 空集合直接返回false +// if(list == null || list.size() == 0) { +// return false; +// } +// +// // 先尝试一下简单匹配,如果可以匹配成功则无需继续模糊匹配 +// if (list.contains(element)) { +// return true; +// } +// +// // 开始模糊匹配 +// for (String patt : list) { +// if(SaFoxUtil.vagueMatch(patt, element)) { +// return true; +// } +// } +// +// // 走出for循环说明没有一个元素可以匹配成功 +// return false; +// } +// +// /** +// * 对一个Method对象进行注解检查(注解鉴权内部实现) +// */ +// @Override +// public void checkMethodAnnotation(Method method) { +// +// // 先校验 Method 所属 Class 上的注解 +// validateAnnotation(method.getDeclaringClass()); +// +// // 再校验 Method 上的注解 +// validateAnnotation(method); +// } +// +// /** +// * 从指定元素校验注解 +// * @param target see note +// */ +// public void validateAnnotation(AnnotatedElement target) { +// +// // 校验 @SaCheckLogin 注解 +// SaCheckLogin checkLogin = (SaCheckLogin) SaStrategy.me.getAnnotation.apply(target, SaCheckLogin.class); +// if(checkLogin != null) { +// SaManager.getStpLogic(checkLogin.type()).checkByAnnotation(checkLogin); +// } +// +// // 校验 @SaCheckRole 注解 +// SaCheckRole checkRole = (SaCheckRole) SaStrategy.me.getAnnotation.apply(target, SaCheckRole.class); +// if(checkRole != null) { +// SaManager.getStpLogic(checkRole.type()).checkByAnnotation(checkRole); +// } +// +// // 校验 @SaCheckPermission 注解 +// SaCheckPermission checkPermission = (SaCheckPermission) SaStrategy.me.getAnnotation.apply(target, SaCheckPermission.class); +// if(checkPermission != null) { +// SaManager.getStpLogic(checkPermission.type()).checkByAnnotation(checkPermission); +// } +// +// // 校验 @SaCheckSafe 注解 +// SaCheckSafe checkSafe = (SaCheckSafe) SaStrategy.me.getAnnotation.apply(target, SaCheckSafe.class); +// if(checkSafe != null) { +// SaManager.getStpLogic(checkSafe.type()).checkByAnnotation(checkSafe); +// } +// +// // 校验 @SaCheckBasic 注解 +// SaCheckBasic checkBasic = (SaCheckBasic) SaStrategy.me.getAnnotation.apply(target, SaCheckBasic.class); +// if(checkBasic != null) { +// SaBasicUtil.check(checkBasic.realm(), checkBasic.account()); +// } +// +// } +// +//} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java index 646e4f42..657c7bce 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java @@ -4,12 +4,21 @@ import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; import java.util.List; +import java.util.UUID; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; import cn.dev33.satoken.SaManager; +import cn.dev33.satoken.annotation.SaCheckBasic; +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaCheckSafe; +import cn.dev33.satoken.basic.SaBasicUtil; import cn.dev33.satoken.session.SaSession; +import cn.dev33.satoken.util.SaFoxUtil; +import cn.dev33.satoken.util.SaTokenConsts; /** * Sa-Token 策略对象 @@ -27,7 +36,6 @@ import cn.dev33.satoken.session.SaSession; * @author kong * */ -@SuppressWarnings("deprecation") public final class SaStrategy { private SaStrategy() { @@ -47,7 +55,34 @@ public final class SaStrategy { *

参数 [账号id, 账号类型] */ public BiFunction createToken = (loginId, loginType) -> { - return SaManager.getSaTokenAction().createToken(loginId, loginType); + // 根据配置的tokenStyle生成不同风格的token + String tokenStyle = SaManager.getConfig().getTokenStyle(); + // uuid + if(SaTokenConsts.TOKEN_STYLE_UUID.equals(tokenStyle)) { + return UUID.randomUUID().toString(); + } + // 简单uuid (不带下划线) + if(SaTokenConsts.TOKEN_STYLE_SIMPLE_UUID.equals(tokenStyle)) { + return UUID.randomUUID().toString().replaceAll("-", ""); + } + // 32位随机字符串 + if(SaTokenConsts.TOKEN_STYLE_RANDOM_32.equals(tokenStyle)) { + return SaFoxUtil.getRandomString(32); + } + // 64位随机字符串 + if(SaTokenConsts.TOKEN_STYLE_RANDOM_64.equals(tokenStyle)) { + return SaFoxUtil.getRandomString(64); + } + // 128位随机字符串 + if(SaTokenConsts.TOKEN_STYLE_RANDOM_128.equals(tokenStyle)) { + return SaFoxUtil.getRandomString(128); + } + // tik风格 (2_14_16) + if(SaTokenConsts.TOKEN_STYLE_TIK.equals(tokenStyle)) { + return SaFoxUtil.getRandomString(2) + "_" + SaFoxUtil.getRandomString(14) + "_" + SaFoxUtil.getRandomString(16) + "__"; + } + // 默认,还是uuid + return UUID.randomUUID().toString(); }; /** @@ -55,7 +90,7 @@ public final class SaStrategy { *

参数 [SessionId] */ public Function createSession = (sessionId) -> { - return SaManager.getSaTokenAction().createSession(sessionId); + return new SaSession(sessionId); }; /** @@ -63,7 +98,26 @@ public final class SaStrategy { *

参数 [集合, 元素] */ public BiFunction, String, Boolean> hasElement = (list, element) -> { - return SaManager.getSaTokenAction().hasElement(list, element); + + // 空集合直接返回false + if(list == null || list.size() == 0) { + return false; + } + + // 先尝试一下简单匹配,如果可以匹配成功则无需继续模糊匹配 + if (list.contains(element)) { + return true; + } + + // 开始模糊匹配 + for (String patt : list) { + if(SaFoxUtil.vagueMatch(patt, element)) { + return true; + } + } + + // 走出for循环说明没有一个元素可以匹配成功 + return false; }; /** @@ -83,9 +137,37 @@ public final class SaStrategy { * 对一个 [元素] 对象进行注解校验 (注解鉴权内部实现) *

参数 [element元素] */ - public Consumer checkElementAnnotation = (element) -> { - // 为了兼容旧版本 - SaManager.getSaTokenAction().validateAnnotation(element); + public Consumer checkElementAnnotation = (target) -> { + // 校验 @SaCheckLogin 注解 + SaCheckLogin checkLogin = (SaCheckLogin) SaStrategy.me.getAnnotation.apply(target, SaCheckLogin.class); + if(checkLogin != null) { + SaManager.getStpLogic(checkLogin.type()).checkByAnnotation(checkLogin); + } + + // 校验 @SaCheckRole 注解 + SaCheckRole checkRole = (SaCheckRole) SaStrategy.me.getAnnotation.apply(target, SaCheckRole.class); + if(checkRole != null) { + SaManager.getStpLogic(checkRole.type()).checkByAnnotation(checkRole); + } + + // 校验 @SaCheckPermission 注解 + SaCheckPermission checkPermission = (SaCheckPermission) SaStrategy.me.getAnnotation.apply(target, SaCheckPermission.class); + if(checkPermission != null) { + SaManager.getStpLogic(checkPermission.type()).checkByAnnotation(checkPermission); + } + + // 校验 @SaCheckSafe 注解 + SaCheckSafe checkSafe = (SaCheckSafe) SaStrategy.me.getAnnotation.apply(target, SaCheckSafe.class); + if(checkSafe != null) { + SaManager.getStpLogic(checkSafe.type()).checkByAnnotation(checkSafe); + } + + // 校验 @SaCheckBasic 注解 + SaCheckBasic checkBasic = (SaCheckBasic) SaStrategy.me.getAnnotation.apply(target, SaCheckBasic.class); + if(checkBasic != null) { + SaBasicUtil.check(checkBasic.realm(), checkBasic.account()); + } + }; /** diff --git a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java index 2adab5a1..e6510bfd 100644 --- a/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java +++ b/sa-token-plugin/sa-token-context-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboProviderFilter.java @@ -27,6 +27,10 @@ public class SaTokenDubboProviderFilter implements Filter { // RPC 调用鉴权 if(SaManager.getConfig().getCheckIdToken()) { String idToken = invocation.getAttachment(SaIdUtil.ID_TOKEN); + // dubbo部分协议会将参数变为小写,详细参考:https://gitee.com/dromara/sa-token/issues/I4WXQG + if(idToken == null) { + idToken = invocation.getAttachment(SaIdUtil.ID_TOKEN.toLowerCase()); + } SaIdUtil.checkToken(idToken); } diff --git a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaBeanInject.java b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaBeanInject.java index 895ea9e6..e2332ea3 100644 --- a/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaBeanInject.java +++ b/sa-token-starter/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaBeanInject.java @@ -59,16 +59,6 @@ public class SaBeanInject { SaManager.setStpInterface(stpInterface); } - /** - * 注入框架行为Bean - * - * @param saTokenAction SaTokenAction对象 - */ - @Autowired(required = false) - public void setSaTokenAction(@SuppressWarnings("deprecation") cn.dev33.satoken.action.SaTokenAction saTokenAction) { - SaManager.setSaTokenAction(saTokenAction); - } - /** * 注入上下文Bean * diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java index cca7fd1c..4ae866fe 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java +++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java @@ -6,7 +6,6 @@ import org.noear.solon.core.Aop; import org.noear.solon.core.Plugin; import cn.dev33.satoken.SaManager; -import cn.dev33.satoken.action.SaTokenAction; import cn.dev33.satoken.annotation.SaCheckBasic; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; @@ -33,7 +32,6 @@ import cn.dev33.satoken.temp.SaTempInterface; * @author noear * @since 1.4 */ -@SuppressWarnings("deprecation") public class XPluginImp implements Plugin { @Override @@ -69,11 +67,6 @@ public class XPluginImp implements Plugin { SaManager.setSaTokenListener(bw.raw()); }); - // 注入框架行为 Bean - Aop.getAsyn(SaTokenAction.class, bw->{ - SaManager.setSaTokenAction(bw.raw()); - }); - // 注入权限认证 Bean Aop.getAsyn(StpInterface.class, bw->{ SaManager.setStpInterface(bw.raw()); diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java index fc74fd28..5d70f8e4 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaBeanInject.java @@ -59,16 +59,6 @@ public class SaBeanInject { SaManager.setStpInterface(stpInterface); } - /** - * 注入框架行为Bean - * - * @param saTokenAction SaTokenAction对象 - */ - @Autowired(required = false) - public void setSaTokenAction(@SuppressWarnings("deprecation") cn.dev33.satoken.action.SaTokenAction saTokenAction) { - SaManager.setSaTokenAction(saTokenAction); - } - /** * 注入上下文Bean * diff --git a/sa-token-test/pom.xml b/sa-token-test/pom.xml index f97e5142..4190e85b 100644 --- a/sa-token-test/pom.xml +++ b/sa-token-test/pom.xml @@ -31,14 +31,14 @@ org.springframework.boot spring-boot-starter-test - 2.0.0.RELEASE + 2.5.12 test org.springframework.boot spring-boot-configuration-processor - 2.0.0.RELEASE + 2.5.12 true diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/context/model/SaCookieTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/context/model/SaCookieTest.java index a67b1f19..b2af5944 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/context/model/SaCookieTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/context/model/SaCookieTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.context.model; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * SaFoxUtil 工具类测试 @@ -11,7 +9,6 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-8 22:14:25 */ -@RunWith(SpringRunner.class) public class SaCookieTest { @Test @@ -24,7 +21,7 @@ public class SaCookieTest { .setHttpOnly(true) .setSecure(true); - Assert.assertEquals(cookie.toHeaderValue(), "satoken=xxxx-xxxx-xxxx-xxxx; Domain=https://sa-token.dev33.cn/; Path=/; Secure; HttpOnly; sameSite=Lax"); + Assertions.assertEquals(cookie.toHeaderValue(), "satoken=xxxx-xxxx-xxxx-xxxx; Domain=https://sa-token.dev33.cn/; Path=/; Secure; HttpOnly; sameSite=Lax"); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/dao/SaTokenDaoTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/dao/SaTokenDaoTest.java index ed9bff15..4b46e150 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/dao/SaTokenDaoTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/dao/SaTokenDaoTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.dao; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import cn.dev33.satoken.session.SaSession; @@ -13,7 +11,6 @@ import cn.dev33.satoken.session.SaSession; * @author kong * @date: 2022-2-9 15:39:38 */ -@RunWith(SpringRunner.class) public class SaTokenDaoTest { SaTokenDao dao = new SaTokenDaoDefaultImpl(); @@ -21,34 +18,34 @@ public class SaTokenDaoTest { @Test public void get() { dao.set("name", "zhangsan", 60); - Assert.assertEquals(dao.get("name"), "zhangsan"); - Assert.assertTrue(dao.getTimeout("name") <= 60); - Assert.assertEquals(dao.getTimeout("name2"), -2); + Assertions.assertEquals(dao.get("name"), "zhangsan"); + Assertions.assertTrue(dao.getTimeout("name") <= 60); + Assertions.assertEquals(dao.getTimeout("name2"), -2); dao.update("name", "lisi"); - Assert.assertEquals(dao.get("name"), "lisi"); + Assertions.assertEquals(dao.get("name"), "lisi"); dao.updateTimeout("name", 100); - Assert.assertTrue(dao.getTimeout("name") <= 100); + Assertions.assertTrue(dao.getTimeout("name") <= 100); dao.delete("name"); - Assert.assertEquals(dao.get("name"), null); + Assertions.assertEquals(dao.get("name"), null); } @Test public void getObject() { dao.setObject("name", "zhangsan", 60); - Assert.assertEquals(dao.getObject("name"), "zhangsan"); - Assert.assertTrue(dao.getObjectTimeout("name") <= 60); + Assertions.assertEquals(dao.getObject("name"), "zhangsan"); + Assertions.assertTrue(dao.getObjectTimeout("name") <= 60); dao.updateObject("name", "lisi"); - Assert.assertEquals(dao.getObject("name"), "lisi"); + Assertions.assertEquals(dao.getObject("name"), "lisi"); dao.updateObjectTimeout("name", 100); - Assert.assertTrue(dao.getObjectTimeout("name") <= 100); + Assertions.assertTrue(dao.getObjectTimeout("name") <= 100); dao.deleteObject("name"); - Assert.assertEquals(dao.getObject("name"), null); + Assertions.assertEquals(dao.getObject("name"), null); } @Test @@ -56,18 +53,18 @@ public class SaTokenDaoTest { SaSession session = new SaSession("session-1001"); dao.setSession(session, 60); - Assert.assertEquals(dao.getSession("session-1001").getId(), session.getId()); - Assert.assertTrue(dao.getSessionTimeout("session-1001") <= 60); + Assertions.assertEquals(dao.getSession("session-1001").getId(), session.getId()); + Assertions.assertTrue(dao.getSessionTimeout("session-1001") <= 60); SaSession session2 = new SaSession("session-1001"); dao.updateSession(session2); - Assert.assertEquals(dao.getSession("session-1001").getId(), session2.getId()); + Assertions.assertEquals(dao.getSession("session-1001").getId(), session2.getId()); dao.updateSessionTimeout("session-1001", 100); - Assert.assertTrue(dao.getSessionTimeout("session-1001") <= 100); + Assertions.assertTrue(dao.getSessionTimeout("session-1001") <= 100); dao.deleteSession("session-1001"); - Assert.assertEquals(dao.getSession("session-1001"), null); + Assertions.assertEquals(dao.getSession("session-1001"), null); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/fun/IsRunFunctionTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/fun/IsRunFunctionTest.java index d9b69f7f..e1721760 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/fun/IsRunFunctionTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/fun/IsRunFunctionTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.fun; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * IsRunFunction 测试 @@ -11,7 +9,6 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-9 16:11:10 */ -@RunWith(SpringRunner.class) public class IsRunFunctionTest { @Test @@ -29,7 +26,7 @@ public class IsRunFunctionTest { obj.count = 3; }); - Assert.assertEquals(obj.count, 2); + Assertions.assertEquals(obj.count, 2); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/BCryptTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/BCryptTest.java index 6a4744b4..6929bb1b 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/BCryptTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/BCryptTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.secure; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * BCrypt 加密测试 @@ -11,15 +9,14 @@ import org.springframework.test.context.junit4.SpringRunner; * @author dream. * @date 2022/1/20 */ -@RunWith(SpringRunner.class) public class BCryptTest { @Test public void checkpwTest() { final String hashed = BCrypt.hashpw("12345"); // System.out.println(hashed); - Assert.assertTrue(BCrypt.checkpw("12345", hashed)); - Assert.assertFalse(BCrypt.checkpw("123456", hashed)); + Assertions.assertTrue(BCrypt.checkpw("12345", hashed)); + Assertions.assertFalse(BCrypt.checkpw("123456", hashed)); } } \ No newline at end of file diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaBase64UtilTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaBase64UtilTest.java index 8306bd1c..8d915ea0 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaBase64UtilTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaBase64UtilTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.secure; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * SaBase64Util 测试 @@ -11,7 +9,6 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-9 */ -@RunWith(SpringRunner.class) public class SaBase64UtilTest { @Test @@ -21,11 +18,11 @@ public class SaBase64UtilTest { // 使用Base64编码 String base64Text = SaBase64Util.encode(text); - Assert.assertEquals(base64Text, "U2EtVG9rZW4g5LiA5Liq6L276YeP57qnamF2Yeadg+mZkOiupOivgeahhuaetg=="); + Assertions.assertEquals(base64Text, "U2EtVG9rZW4g5LiA5Liq6L276YeP57qnamF2Yeadg+mZkOiupOivgeahhuaetg=="); // 使用Base64解码 String text2 = SaBase64Util.decode(base64Text); - Assert.assertEquals(text2, "Sa-Token 一个轻量级java权限认证框架"); + Assertions.assertEquals(text2, "Sa-Token 一个轻量级java权限认证框架"); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaSecureUtilTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaSecureUtilTest.java index 1bca1c57..761e955d 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaSecureUtilTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/secure/SaSecureUtilTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.secure; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * SaSecureUtil 加密工具类 测试 @@ -11,23 +9,22 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-9 */ -@RunWith(SpringRunner.class) public class SaSecureUtilTest { @Test public void test() { // md5加密 - Assert.assertEquals(SaSecureUtil.md5("123456"), "e10adc3949ba59abbe56e057f20f883e"); + Assertions.assertEquals(SaSecureUtil.md5("123456"), "e10adc3949ba59abbe56e057f20f883e"); // sha1加密 - Assert.assertEquals(SaSecureUtil.sha1("123456"), "7c4a8d09ca3762af61e59520943dc26494f8941b"); + Assertions.assertEquals(SaSecureUtil.sha1("123456"), "7c4a8d09ca3762af61e59520943dc26494f8941b"); // sha256加密 - Assert.assertEquals(SaSecureUtil.sha256("123456"), "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"); + Assertions.assertEquals(SaSecureUtil.sha256("123456"), "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"); // md5加盐加密: md5(md5(str) + md5(salt)) - Assert.assertEquals(SaSecureUtil.md5BySalt("123456", "salt"), "f52020dca765fd3943ed40a615dc2c5c"); + Assertions.assertEquals(SaSecureUtil.md5BySalt("123456", "salt"), "f52020dca765fd3943ed40a615dc2c5c"); } @@ -39,11 +36,11 @@ public class SaSecureUtilTest { // 加密 String ciphertext = SaSecureUtil.aesEncrypt(key, text); - Assert.assertEquals(ciphertext, "KmSqfwxY5BRuWoHMWJqtebcOZ2lEEZaj2OSi1Ei8pRx4zdi24wsnwsTQVjbXRQ0M"); + Assertions.assertEquals(ciphertext, "KmSqfwxY5BRuWoHMWJqtebcOZ2lEEZaj2OSi1Ei8pRx4zdi24wsnwsTQVjbXRQ0M"); // 解密 String text2 = SaSecureUtil.aesDecrypt(key, ciphertext); - Assert.assertEquals(text2, "Sa-Token 一个轻量级java权限认证框架"); + Assertions.assertEquals(text2, "Sa-Token 一个轻量级java权限认证框架"); } @Test @@ -61,7 +58,7 @@ public class SaSecureUtilTest { // 使用私钥解密 String text2 = SaSecureUtil.rsaDecryptByPrivate(privateKey, ciphertext); - Assert.assertEquals(text2, "Sa-Token 一个轻量级java权限认证框架"); + Assertions.assertEquals(text2, "Sa-Token 一个轻量级java权限认证框架"); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/session/SaSessionTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/session/SaSessionTest.java index 928971c5..3c64b929 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/session/SaSessionTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/session/SaSessionTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.session; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * SaSession 测试 @@ -11,21 +9,20 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-9 */ -@RunWith(SpringRunner.class) public class SaSessionTest { @Test public void test() { SaSession session = new SaSession("session-1001"); - Assert.assertEquals(session.getId(), "session-1001"); + Assertions.assertEquals(session.getId(), "session-1001"); // 基础取值 session.set("name", "zhangsan"); session.set("age", 18); - Assert.assertEquals(session.get("name"), "zhangsan"); - Assert.assertEquals((int)session.get("age", 20), 18); - Assert.assertEquals((int)session.get("age2", 20), 20); - Assert.assertEquals(session.getModel("age", Double.class).getClass(), Double.class); + Assertions.assertEquals(session.get("name"), "zhangsan"); + Assertions.assertEquals((int)session.get("age", 20), 18); + Assertions.assertEquals((int)session.get("age2", 20), 20); + Assertions.assertEquals(session.getModel("age", Double.class).getClass(), Double.class); // 复杂取值 class User { @@ -40,20 +37,20 @@ public class SaSessionTest { session.set("user", user); User user2 = session.getModel("user", User.class); - Assert.assertNotNull(user2); - Assert.assertEquals(user2.name, "zhangsan"); - Assert.assertEquals(user2.age, 18); + Assertions.assertNotNull(user2); + Assertions.assertEquals(user2.name, "zhangsan"); + Assertions.assertEquals(user2.age, 18); // Token签名 session.addTokenSign("xxxx-xxxx-xxxx-xxxx-1", "PC"); session.addTokenSign("xxxx-xxxx-xxxx-xxxx-2", "APP"); - Assert.assertEquals(session.getTokenSignList().size(), 2); - Assert.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-1").getDevice(), "PC"); - Assert.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-2").getDevice(), "APP"); + Assertions.assertEquals(session.getTokenSignList().size(), 2); + Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-1").getDevice(), "PC"); + Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-2").getDevice(), "APP"); session.removeTokenSign("xxxx-xxxx-xxxx-xxxx-1"); - Assert.assertEquals(session.getTokenSignList().size(), 1); + Assertions.assertEquals(session.getTokenSignList().size(), 1); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaFoxUtilTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaFoxUtilTest.java index 05659195..d1db2184 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaFoxUtilTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaFoxUtilTest.java @@ -1,14 +1,11 @@ package cn.dev33.satoken.util; -import org.junit.Test; -import org.junit.runner.RunWith; - import java.util.Arrays; import java.util.Date; import java.util.List; -import org.junit.Assert; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * SaFoxUtil 工具类测试 @@ -16,33 +13,32 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-8 22:14:25 */ -@RunWith(SpringRunner.class) public class SaFoxUtilTest { @Test public void getRandomString() { String randomString = SaFoxUtil.getRandomString(8); - Assert.assertEquals(randomString.length(), 8); + Assertions.assertEquals(randomString.length(), 8); } @Test public void isEmpty() { - Assert.assertFalse(SaFoxUtil.isEmpty("abc")); - Assert.assertTrue(SaFoxUtil.isEmpty("")); - Assert.assertTrue(SaFoxUtil.isEmpty(null)); + Assertions.assertFalse(SaFoxUtil.isEmpty("abc")); + Assertions.assertTrue(SaFoxUtil.isEmpty("")); + Assertions.assertTrue(SaFoxUtil.isEmpty(null)); - Assert.assertTrue(SaFoxUtil.isNotEmpty("abc")); + Assertions.assertTrue(SaFoxUtil.isNotEmpty("abc")); } @Test public void getMarking28() { - Assert.assertNotEquals(SaFoxUtil.getMarking28(), SaFoxUtil.getMarking28()); + Assertions.assertNotEquals(SaFoxUtil.getMarking28(), SaFoxUtil.getMarking28()); } @Test public void formatDate() { String formatDate = SaFoxUtil.formatDate(new Date(1644328600364L)); - Assert.assertEquals(formatDate, "2022-02-08 21:56:40"); + Assertions.assertEquals(formatDate, "2022-02-08 21:56:40"); } @Test @@ -52,154 +48,154 @@ public class SaFoxUtilTest { // 分页 List list1 = SaFoxUtil.searchList(dataList, 1, 2); - Assert.assertEquals(list1.size(), 2); - Assert.assertEquals(list1.get(0), "token2"); - Assert.assertEquals(list1.get(1), "token3"); + Assertions.assertEquals(list1.size(), 2); + Assertions.assertEquals(list1.get(0), "token2"); + Assertions.assertEquals(list1.get(1), "token3"); // 前缀筛选 List list2 = SaFoxUtil.searchList(dataList, "token", "", 0, 10); - Assert.assertEquals(list2.size(), 5); + Assertions.assertEquals(list2.size(), 5); // 关键字筛选 List list3 = SaFoxUtil.searchList(dataList, "", "1", 0, 10); - Assert.assertEquals(list3.size(), 2); + Assertions.assertEquals(list3.size(), 2); // 综合筛选 List list4 = SaFoxUtil.searchList(dataList, "token", "1", 0, 10); - Assert.assertEquals(list4.size(), 1); + Assertions.assertEquals(list4.size(), 1); } @Test public void vagueMatch() { - Assert.assertTrue(SaFoxUtil.vagueMatch("hello*", "hello")); - Assert.assertTrue(SaFoxUtil.vagueMatch("hello*", "hello world")); - Assert.assertFalse(SaFoxUtil.vagueMatch("hello*", "he")); - Assert.assertTrue(SaFoxUtil.vagueMatch("hello*", "hello*")); + Assertions.assertTrue(SaFoxUtil.vagueMatch("hello*", "hello")); + Assertions.assertTrue(SaFoxUtil.vagueMatch("hello*", "hello world")); + Assertions.assertFalse(SaFoxUtil.vagueMatch("hello*", "he")); + Assertions.assertTrue(SaFoxUtil.vagueMatch("hello*", "hello*")); } @Test public void getValueByType() { - Assert.assertEquals(SaFoxUtil.getValueByType("1", Integer.class).getClass(), Integer.class); - Assert.assertEquals(SaFoxUtil.getValueByType("1", Long.class).getClass(), Long.class); - Assert.assertEquals(SaFoxUtil.getValueByType("1", Double.class).getClass(), Double.class); + Assertions.assertEquals(SaFoxUtil.getValueByType("1", Integer.class).getClass(), Integer.class); + Assertions.assertEquals(SaFoxUtil.getValueByType("1", Long.class).getClass(), Long.class); + Assertions.assertEquals(SaFoxUtil.getValueByType("1", Double.class).getClass(), Double.class); } @Test public void joinParam() { - Assert.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn", "id=1"), "https://sa-token.dev33.cn?id=1"); - Assert.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?", "id=1"), "https://sa-token.dev33.cn?id=1"); - Assert.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?name=zhang", "id=1"), "https://sa-token.dev33.cn?name=zhang&id=1"); - Assert.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?name=zhang&", "id=1"), "https://sa-token.dev33.cn?name=zhang&id=1"); + Assertions.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn", "id=1"), "https://sa-token.dev33.cn?id=1"); + Assertions.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?", "id=1"), "https://sa-token.dev33.cn?id=1"); + Assertions.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?name=zhang", "id=1"), "https://sa-token.dev33.cn?name=zhang&id=1"); + Assertions.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?name=zhang&", "id=1"), "https://sa-token.dev33.cn?name=zhang&id=1"); - Assert.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?name=zhang&", "id", 1), "https://sa-token.dev33.cn?name=zhang&id=1"); + Assertions.assertEquals(SaFoxUtil.joinParam("https://sa-token.dev33.cn?name=zhang&", "id", 1), "https://sa-token.dev33.cn?name=zhang&id=1"); } @Test public void joinSharpParam() { - Assert.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn", "id=1"), "https://sa-token.dev33.cn#id=1"); - Assert.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#", "id=1"), "https://sa-token.dev33.cn#id=1"); - Assert.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#name=zhang", "id=1"), "https://sa-token.dev33.cn#name=zhang&id=1"); - Assert.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#name=zhang&", "id=1"), "https://sa-token.dev33.cn#name=zhang&id=1"); + Assertions.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn", "id=1"), "https://sa-token.dev33.cn#id=1"); + Assertions.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#", "id=1"), "https://sa-token.dev33.cn#id=1"); + Assertions.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#name=zhang", "id=1"), "https://sa-token.dev33.cn#name=zhang&id=1"); + Assertions.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#name=zhang&", "id=1"), "https://sa-token.dev33.cn#name=zhang&id=1"); - Assert.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#name=zhang&", "id", 1), "https://sa-token.dev33.cn#name=zhang&id=1"); + Assertions.assertEquals(SaFoxUtil.joinSharpParam("https://sa-token.dev33.cn#name=zhang&", "id", 1), "https://sa-token.dev33.cn#name=zhang&id=1"); } @Test public void arrayJoin() { - Assert.assertEquals(SaFoxUtil.arrayJoin(new String[] {"a", "b", "c"}), "a,b,c"); - Assert.assertEquals(SaFoxUtil.arrayJoin(new String[] {}), ""); + Assertions.assertEquals(SaFoxUtil.arrayJoin(new String[] {"a", "b", "c"}), "a,b,c"); + Assertions.assertEquals(SaFoxUtil.arrayJoin(new String[] {}), ""); } @Test public void isUrl() { - Assert.assertTrue(SaFoxUtil.isUrl("https://sa-token.dev33.cn")); - Assert.assertTrue(SaFoxUtil.isUrl("https://www.baidu.com/")); + Assertions.assertTrue(SaFoxUtil.isUrl("https://sa-token.dev33.cn")); + Assertions.assertTrue(SaFoxUtil.isUrl("https://www.baidu.com/")); - Assert.assertFalse(SaFoxUtil.isUrl("htt://www.baidu.com/")); - Assert.assertFalse(SaFoxUtil.isUrl("https:www.baidu.com/")); - Assert.assertFalse(SaFoxUtil.isUrl("httpswwwbaiducom/")); - Assert.assertFalse(SaFoxUtil.isUrl("https://www.baidu.com/,")); + Assertions.assertFalse(SaFoxUtil.isUrl("htt://www.baidu.com/")); + Assertions.assertFalse(SaFoxUtil.isUrl("https:www.baidu.com/")); + Assertions.assertFalse(SaFoxUtil.isUrl("httpswwwbaiducom/")); + Assertions.assertFalse(SaFoxUtil.isUrl("https://www.baidu.com/,")); } @Test public void encodeUrl() { - Assert.assertEquals(SaFoxUtil.encodeUrl("https://sa-token.dev33.cn"), "https%3A%2F%2Fsa-token.dev33.cn"); - Assert.assertEquals(SaFoxUtil.decoderUrl("https%3A%2F%2Fsa-token.dev33.cn"), "https://sa-token.dev33.cn"); + Assertions.assertEquals(SaFoxUtil.encodeUrl("https://sa-token.dev33.cn"), "https%3A%2F%2Fsa-token.dev33.cn"); + Assertions.assertEquals(SaFoxUtil.decoderUrl("https%3A%2F%2Fsa-token.dev33.cn"), "https://sa-token.dev33.cn"); } @Test public void convertStringToList() { List list = SaFoxUtil.convertStringToList("a,b,c"); - Assert.assertEquals(list.size(), 3); - Assert.assertEquals(list.get(0), "a"); - Assert.assertEquals(list.get(1), "b"); - Assert.assertEquals(list.get(2), "c"); + Assertions.assertEquals(list.size(), 3); + Assertions.assertEquals(list.get(0), "a"); + Assertions.assertEquals(list.get(1), "b"); + Assertions.assertEquals(list.get(2), "c"); List list2 = SaFoxUtil.convertStringToList("a,"); - Assert.assertEquals(list2.size(), 1); + Assertions.assertEquals(list2.size(), 1); List list3 = SaFoxUtil.convertStringToList(","); - Assert.assertEquals(list3.size(), 0); + Assertions.assertEquals(list3.size(), 0); List list4 = SaFoxUtil.convertStringToList(""); - Assert.assertEquals(list4.size(), 0); + Assertions.assertEquals(list4.size(), 0); List list5 = SaFoxUtil.convertStringToList(null); - Assert.assertEquals(list5.size(), 0); + Assertions.assertEquals(list5.size(), 0); } @Test public void convertListToString() { List list = Arrays.asList("a", "b", "c"); - Assert.assertEquals(SaFoxUtil.convertListToString(list), "a,b,c"); + Assertions.assertEquals(SaFoxUtil.convertListToString(list), "a,b,c"); List list2 = Arrays.asList(); - Assert.assertEquals(SaFoxUtil.convertListToString(list2), ""); + Assertions.assertEquals(SaFoxUtil.convertListToString(list2), ""); } @Test public void convertStringToArray() { String[] array = SaFoxUtil.convertStringToArray("a,b,c"); - Assert.assertEquals(array.length, 3); - Assert.assertEquals(array[0], "a"); - Assert.assertEquals(array[1], "b"); - Assert.assertEquals(array[2], "c"); + Assertions.assertEquals(array.length, 3); + Assertions.assertEquals(array[0], "a"); + Assertions.assertEquals(array[1], "b"); + Assertions.assertEquals(array[2], "c"); String[] array2 = SaFoxUtil.convertStringToArray("a,"); - Assert.assertEquals(array2.length, 1); + Assertions.assertEquals(array2.length, 1); String[] array3 = SaFoxUtil.convertStringToArray(","); - Assert.assertEquals(array3.length, 0); + Assertions.assertEquals(array3.length, 0); String[] array4 = SaFoxUtil.convertStringToArray(""); - Assert.assertEquals(array4.length, 0); + Assertions.assertEquals(array4.length, 0); String[] array5 = SaFoxUtil.convertStringToArray(null); - Assert.assertEquals(array5.length, 0); + Assertions.assertEquals(array5.length, 0); } @Test public void convertArrayToString() { String[] array = new String[] {"a", "b", "c"}; - Assert.assertEquals(SaFoxUtil.convertArrayToString(array), "a,b,c"); + Assertions.assertEquals(SaFoxUtil.convertArrayToString(array), "a,b,c"); String[] array2 = new String[] {}; - Assert.assertEquals(SaFoxUtil.convertArrayToString(array2), ""); + Assertions.assertEquals(SaFoxUtil.convertArrayToString(array2), ""); } @Test public void emptyList() { List list = SaFoxUtil.emptyList(); - Assert.assertEquals(list.size(), 0); + Assertions.assertEquals(list.size(), 0); } @Test public void toList() { List list = SaFoxUtil.toList("a","b", "c"); - Assert.assertEquals(list.size(), 3); - Assert.assertEquals(list.get(0), "a"); - Assert.assertEquals(list.get(1), "b"); - Assert.assertEquals(list.get(2), "c"); + Assertions.assertEquals(list.size(), 3); + Assertions.assertEquals(list.get(0), "a"); + Assertions.assertEquals(list.get(1), "b"); + Assertions.assertEquals(list.get(2), "c"); } } diff --git a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaResultTest.java b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaResultTest.java index 2303f214..fc493661 100644 --- a/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaResultTest.java +++ b/sa-token-test/sa-token-core-test/src/test/java/cn/dev33/satoken/util/SaResultTest.java @@ -1,9 +1,7 @@ package cn.dev33.satoken.util; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.junit4.SpringRunner; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * SaResult 结果集 测试 @@ -11,26 +9,25 @@ import org.springframework.test.context.junit4.SpringRunner; * @author kong * @date: 2022-2-8 22:14:25 */ -@RunWith(SpringRunner.class) public class SaResultTest { @Test public void test() { SaResult res = new SaResult(200, "ok", "zhangsan"); - Assert.assertEquals((int)res.getCode(), 200); - Assert.assertEquals(res.getMsg(), "ok"); - Assert.assertEquals(res.getData(), "zhangsan"); + Assertions.assertEquals((int)res.getCode(), 200); + Assertions.assertEquals(res.getMsg(), "ok"); + Assertions.assertEquals(res.getData(), "zhangsan"); res.set("age", 18); - Assert.assertEquals(res.get("age"), 18); - Assert.assertEquals(res.getOrDefault("age", 20), 18); - Assert.assertEquals(res.getOrDefault("age2", 20), 20); + Assertions.assertEquals(res.get("age"), 18); + Assertions.assertEquals(res.getOrDefault("age", 20), 18); + Assertions.assertEquals(res.getOrDefault("age2", 20), 20); } @Test public void test2() { - Assert.assertEquals((int)SaResult.ok().getCode(), 200); - Assert.assertEquals((int)SaResult.error().getCode(), 500); + Assertions.assertEquals((int)SaResult.ok().getCode(), 200); + Assertions.assertEquals((int)SaResult.error().getCode(), 500); } } diff --git a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixTest.java b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixTest.java index adff041c..a42e58b7 100644 --- a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixTest.java +++ b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForMixTest.java @@ -2,14 +2,12 @@ package com.pj.test; import java.util.List; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.dao.SaTokenDao; @@ -29,7 +27,6 @@ import cn.hutool.jwt.JWT; * @author kong * */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class) public class JwtForMixTest { @@ -38,14 +35,14 @@ public class JwtForMixTest { SaTokenDao dao = SaManager.getSaTokenDao(); // 开始 - @BeforeClass + @BeforeAll public static void beforeClass() { System.out.println("\n\n------------------------ JwtForMixTest star ..."); StpUtil.setStpLogic(new StpLogicJwtForMix()); } // 结束 - @AfterClass + @AfterAll public static void afterClass() { System.out.println("\n\n------------------------ JwtForMixTest end ... \n"); } @@ -58,26 +55,26 @@ public class JwtForMixTest { String token = StpUtil.getTokenValue(); // API 验证 - Assert.assertTrue(StpUtil.isLogin()); - Assert.assertNotNull(token); // token不为null - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 - Assert.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 + Assertions.assertTrue(StpUtil.isLogin()); + Assertions.assertNotNull(token); // token不为null + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 + Assertions.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 // token 验证 JWT jwt = JWT.of(token); JSONObject payloads = jwt.getPayloads(); - Assert.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_ID), "10001"); // 账号 - Assert.assertEquals(payloads.getStr(SaJwtUtil.DEVICE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 - Assert.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_TYPE), StpUtil.TYPE); // 账号类型 + Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_ID), "10001"); // 账号 + Assertions.assertEquals(payloads.getStr(SaJwtUtil.DEVICE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 + Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_TYPE), StpUtil.TYPE); // 账号类型 // db数据 验证 // token不存在 - Assert.assertNull(dao.get("satoken:login:token:" + token)); + Assertions.assertNull(dao.get("satoken:login:token:" + token)); // Session 存在 SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNotNull(session); - Assert.assertEquals(session.getId(), "satoken:login:session:" + 10001); - Assert.assertTrue(session.getTokenSignList().size() >= 1); + Assertions.assertNotNull(session); + Assertions.assertEquals(session.getId(), "satoken:login:session:" + 10001); + Assertions.assertTrue(session.getTokenSignList().size() >= 1); } // 测试:注销 @@ -86,13 +83,13 @@ public class JwtForMixTest { // 登录 StpUtil.login(10001); String token = StpUtil.getTokenValue(); - Assert.assertEquals(JWT.of(token).getPayloads().getStr("loginId"), "10001"); + Assertions.assertEquals(JWT.of(token).getPayloads().getStr("loginId"), "10001"); // 注销 StpUtil.logout(); // token 应该被清除 - Assert.assertNull(StpUtil.getTokenValue()); - Assert.assertFalse(StpUtil.isLogin()); + Assertions.assertNull(StpUtil.getTokenValue()); + Assertions.assertFalse(StpUtil.isLogin()); } // 测试:Session会话 @@ -101,23 +98,23 @@ public class JwtForMixTest { StpUtil.login(10001); // API 应该可以获取 Session - Assert.assertNotNull(StpUtil.getSession(false)); + Assertions.assertNotNull(StpUtil.getSession(false)); // db中应该存在 Session SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNotNull(session); + Assertions.assertNotNull(session); // 存取值 session.set("name", "zhang"); session.set("age", "18"); - Assert.assertEquals(session.get("name"), "zhang"); - Assert.assertEquals(session.getInt("age"), 18); - Assert.assertEquals((int)session.getModel("age", int.class), 18); - Assert.assertEquals((int)session.get("age", 20), 18); - Assert.assertEquals((int)session.get("name2", 20), 20); - Assert.assertEquals((int)session.get("name2", () -> 30), 30); + Assertions.assertEquals(session.get("name"), "zhang"); + Assertions.assertEquals(session.getInt("age"), 18); + Assertions.assertEquals((int)session.getModel("age", int.class), 18); + Assertions.assertEquals((int)session.get("age", 20), 18); + Assertions.assertEquals((int)session.get("name2", 20), 20); + Assertions.assertEquals((int)session.get("name2", () -> 30), 30); session.clear(); - Assert.assertEquals(session.get("name"), null); + Assertions.assertEquals(session.get("name"), null); } // 测试:权限认证 @@ -126,17 +123,17 @@ public class JwtForMixTest { StpUtil.login(10001); // 权限认证 - Assert.assertTrue(StpUtil.hasPermission("user-add")); - Assert.assertTrue(StpUtil.hasPermission("user-list")); - Assert.assertTrue(StpUtil.hasPermission("user")); - Assert.assertTrue(StpUtil.hasPermission("art-add")); - Assert.assertFalse(StpUtil.hasPermission("get-user")); + Assertions.assertTrue(StpUtil.hasPermission("user-add")); + Assertions.assertTrue(StpUtil.hasPermission("user-list")); + Assertions.assertTrue(StpUtil.hasPermission("user")); + Assertions.assertTrue(StpUtil.hasPermission("art-add")); + Assertions.assertFalse(StpUtil.hasPermission("get-user")); // and - Assert.assertTrue(StpUtil.hasPermissionAnd("art-add", "art-get")); - Assert.assertFalse(StpUtil.hasPermissionAnd("art-add", "comment-add")); + Assertions.assertTrue(StpUtil.hasPermissionAnd("art-add", "art-get")); + Assertions.assertFalse(StpUtil.hasPermissionAnd("art-add", "comment-add")); // or - Assert.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); - Assert.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); + Assertions.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); + Assertions.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); } // 测试:角色认证 @@ -145,39 +142,41 @@ public class JwtForMixTest { StpUtil.login(10001); // 角色认证 - Assert.assertTrue(StpUtil.hasRole("admin")); - Assert.assertFalse(StpUtil.hasRole("teacher")); + Assertions.assertTrue(StpUtil.hasRole("admin")); + Assertions.assertFalse(StpUtil.hasRole("teacher")); // and - Assert.assertTrue(StpUtil.hasRoleAnd("admin", "super-admin")); - Assert.assertFalse(StpUtil.hasRoleAnd("admin", "ceo")); + Assertions.assertTrue(StpUtil.hasRoleAnd("admin", "super-admin")); + Assertions.assertFalse(StpUtil.hasRoleAnd("admin", "ceo")); // or - Assert.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); - Assert.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); + Assertions.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); + Assertions.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); } // 测试:根据token强制注销 - @Test(expected = ApiDisabledException.class) + @Test public void testLogoutByToken() { - - // 先登录上 - StpUtil.login(10001); - Assert.assertTrue(StpUtil.isLogin()); - String token = StpUtil.getTokenValue(); - - // 根据token注销 - StpUtil.logoutByTokenValue(token); + Assertions.assertThrows(ApiDisabledException.class, () -> { + // 先登录上 + StpUtil.login(10001); + Assertions.assertTrue(StpUtil.isLogin()); + String token = StpUtil.getTokenValue(); + + // 根据token注销 + StpUtil.logoutByTokenValue(token); + }); } // 测试:根据账号id强制注销 - @Test(expected = ApiDisabledException.class) + @Test public void testLogoutByLoginId() { - - // 先登录上 - StpUtil.login(10001); - Assert.assertTrue(StpUtil.isLogin()); - - // 根据账号id注销 - StpUtil.logout(10001); + Assertions.assertThrows(ApiDisabledException.class, () -> { + // 先登录上 + StpUtil.login(10001); + Assertions.assertTrue(StpUtil.isLogin()); + + // 根据账号id注销 + StpUtil.logout(10001); + }); } // 测试Token-Session @@ -189,34 +188,35 @@ public class JwtForMixTest { String token = StpUtil.getTokenValue(); // 刚开始不存在 - Assert.assertNull(StpUtil.stpLogic.getTokenSession(false)); + Assertions.assertNull(StpUtil.stpLogic.getTokenSession(false)); SaSession session = dao.getSession("satoken:login:token-session:" + token); - Assert.assertNull(session); + Assertions.assertNull(session); // 调用一次就存在了 StpUtil.getTokenSession(); - Assert.assertNotNull(StpUtil.stpLogic.getTokenSession(false)); + Assertions.assertNotNull(StpUtil.stpLogic.getTokenSession(false)); SaSession session2 = dao.getSession("satoken:login:token-session:" + token); - Assert.assertNotNull(session2); + Assertions.assertNotNull(session2); } // 测试:账号封禁 - @Test(expected = DisableLoginException.class) + @Test public void testDisable() { - - // 封号 - StpUtil.disable(10007, 200); - Assert.assertTrue(StpUtil.isDisable(10007)); - Assert.assertEquals(dao.get("satoken:login:disable:" + 10007), DisableLoginException.BE_VALUE); - - // 解封 - StpUtil.untieDisable(10007); - Assert.assertFalse(StpUtil.isDisable(10007)); - Assert.assertEquals(dao.get("satoken:login:disable:" + 10007), null); - - // 封号后登陆 (会抛出 DisableLoginException 异常) - StpUtil.disable(10007, 200); - StpUtil.login(10007); + Assertions.assertThrows(DisableLoginException.class, () -> { + // 封号 + StpUtil.disable(10007, 200); + Assertions.assertTrue(StpUtil.isDisable(10007)); + Assertions.assertEquals(dao.get("satoken:login:disable:" + 10007), DisableLoginException.BE_VALUE); + + // 解封 + StpUtil.untieDisable(10007); + Assertions.assertFalse(StpUtil.isDisable(10007)); + Assertions.assertEquals(dao.get("satoken:login:disable:" + 10007), null); + + // 封号后登陆 (会抛出 DisableLoginException 异常) + StpUtil.disable(10007, 200); + StpUtil.login(10007); + }); } // 测试:身份切换 @@ -224,33 +224,35 @@ public class JwtForMixTest { public void testSwitch() { // 登录 StpUtil.login(10001); - Assert.assertFalse(StpUtil.isSwitch()); - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); + Assertions.assertFalse(StpUtil.isSwitch()); + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // 开始身份切换 StpUtil.switchTo(10044); - Assert.assertTrue(StpUtil.isSwitch()); - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10044); + Assertions.assertTrue(StpUtil.isSwitch()); + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10044); // 结束切换 StpUtil.endSwitch(); - Assert.assertFalse(StpUtil.isSwitch()); - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); + Assertions.assertFalse(StpUtil.isSwitch()); + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); } // 测试:会话管理 - @Test(expected = ApiDisabledException.class) + @Test public void testSearchTokenValue() { - // 登录 - StpUtil.login(10001); - StpUtil.login(10002); - StpUtil.login(10003); - StpUtil.login(10004); - StpUtil.login(10005); - - // 查询 - List list = StpUtil.searchTokenValue("", 0, 10); - Assert.assertTrue(list.size() >= 5); + Assertions.assertThrows(ApiDisabledException.class, () -> { + // 登录 + StpUtil.login(10001); + StpUtil.login(10002); + StpUtil.login(10003); + StpUtil.login(10004); + StpUtil.login(10005); + + // 查询 + List list = StpUtil.searchTokenValue("", 0, 10); + Assertions.assertTrue(list.size() >= 5); + }); } } diff --git a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java index 3d546b2c..0e299178 100644 --- a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java +++ b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStatelessTest.java @@ -1,13 +1,11 @@ package com.pj.test; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.dao.SaTokenDao; @@ -25,7 +23,6 @@ import cn.hutool.jwt.JWT; * @author kong * */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class) public class JwtForStatelessTest { @@ -34,14 +31,14 @@ public class JwtForStatelessTest { SaTokenDao dao = SaManager.getSaTokenDao(); // 开始 - @BeforeClass + @BeforeAll public static void beforeClass() { System.out.println("\n\n------------------------ JwtForStatelessTest star ..."); StpUtil.setStpLogic(new StpLogicJwtForStateless()); } // 结束 - @AfterClass + @AfterAll public static void afterClass() { System.out.println("\n\n------------------------ JwtForStatelessTest end ... \n"); } @@ -54,26 +51,26 @@ public class JwtForStatelessTest { String token = StpUtil.getTokenValue(); // API 验证 - Assert.assertTrue(StpUtil.isLogin()); - Assert.assertNotNull(token); // token不为null - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 - Assert.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 + Assertions.assertTrue(StpUtil.isLogin()); + Assertions.assertNotNull(token); // token不为null + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 + Assertions.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 // token 验证 JWT jwt = JWT.of(token); JSONObject payloads = jwt.getPayloads(); - Assert.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_ID), "10001"); // 账号 - Assert.assertEquals(payloads.getStr(SaJwtUtil.DEVICE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 - Assert.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_TYPE), StpUtil.TYPE); // 账号类型 + Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_ID), "10001"); // 账号 + Assertions.assertEquals(payloads.getStr(SaJwtUtil.DEVICE), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 + Assertions.assertEquals(payloads.getStr(SaJwtUtil.LOGIN_TYPE), StpUtil.TYPE); // 账号类型 // 时间 - Assert.assertTrue(StpUtil.getTokenTimeout() <= SaManager.getConfig().getTimeout()); - Assert.assertTrue(StpUtil.getTokenTimeout() > SaManager.getConfig().getTimeout() - 10000); + Assertions.assertTrue(StpUtil.getTokenTimeout() <= SaManager.getConfig().getTimeout()); + Assertions.assertTrue(StpUtil.getTokenTimeout() > SaManager.getConfig().getTimeout() - 10000); try { // 尝试获取Session会抛出异常 StpUtil.getSession(); - Assert.assertTrue(false); + Assertions.assertTrue(false); } catch (Exception e) { } } @@ -84,23 +81,25 @@ public class JwtForStatelessTest { // 登录 StpUtil.login(10001); String token = StpUtil.getTokenValue(); - Assert.assertEquals(JWT.of(token).getPayloads().getStr("loginId"), "10001"); + Assertions.assertEquals(JWT.of(token).getPayloads().getStr("loginId"), "10001"); // 注销 StpUtil.logout(); // token 应该被清除 - Assert.assertNull(StpUtil.getTokenValue()); - Assert.assertFalse(StpUtil.isLogin()); + Assertions.assertNull(StpUtil.getTokenValue()); + Assertions.assertFalse(StpUtil.isLogin()); } // 测试:Session会话 - @Test(expected = ApiDisabledException.class) + @Test public void testSession() { - StpUtil.login(10001); - - // 会抛异常 - StpUtil.getSession(); + Assertions.assertThrows(ApiDisabledException.class, () -> { + StpUtil.login(10001); + + // 会抛异常 + StpUtil.getSession(); + }); } // 测试:权限认证 @@ -109,17 +108,17 @@ public class JwtForStatelessTest { StpUtil.login(10001); // 权限认证 - Assert.assertTrue(StpUtil.hasPermission("user-add")); - Assert.assertTrue(StpUtil.hasPermission("user-list")); - Assert.assertTrue(StpUtil.hasPermission("user")); - Assert.assertTrue(StpUtil.hasPermission("art-add")); - Assert.assertFalse(StpUtil.hasPermission("get-user")); + Assertions.assertTrue(StpUtil.hasPermission("user-add")); + Assertions.assertTrue(StpUtil.hasPermission("user-list")); + Assertions.assertTrue(StpUtil.hasPermission("user")); + Assertions.assertTrue(StpUtil.hasPermission("art-add")); + Assertions.assertFalse(StpUtil.hasPermission("get-user")); // and - Assert.assertTrue(StpUtil.hasPermissionAnd("art-add", "art-get")); - Assert.assertFalse(StpUtil.hasPermissionAnd("art-add", "comment-add")); + Assertions.assertTrue(StpUtil.hasPermissionAnd("art-add", "art-get")); + Assertions.assertFalse(StpUtil.hasPermissionAnd("art-add", "comment-add")); // or - Assert.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); - Assert.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); + Assertions.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); + Assertions.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); } // 测试:角色认证 @@ -128,39 +127,41 @@ public class JwtForStatelessTest { StpUtil.login(10001); // 角色认证 - Assert.assertTrue(StpUtil.hasRole("admin")); - Assert.assertFalse(StpUtil.hasRole("teacher")); + Assertions.assertTrue(StpUtil.hasRole("admin")); + Assertions.assertFalse(StpUtil.hasRole("teacher")); // and - Assert.assertTrue(StpUtil.hasRoleAnd("admin", "super-admin")); - Assert.assertFalse(StpUtil.hasRoleAnd("admin", "ceo")); + Assertions.assertTrue(StpUtil.hasRoleAnd("admin", "super-admin")); + Assertions.assertFalse(StpUtil.hasRoleAnd("admin", "ceo")); // or - Assert.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); - Assert.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); + Assertions.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); + Assertions.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); } // 测试:根据token强制注销 - @Test(expected = ApiDisabledException.class) + @Test public void testLogoutByToken() { - - // 先登录上 - StpUtil.login(10001); - Assert.assertTrue(StpUtil.isLogin()); - String token = StpUtil.getTokenValue(); - - // 根据token注销 - StpUtil.logoutByTokenValue(token); + Assertions.assertThrows(ApiDisabledException.class, () -> { + // 先登录上 + StpUtil.login(10001); + Assertions.assertTrue(StpUtil.isLogin()); + String token = StpUtil.getTokenValue(); + + // 根据token注销 + StpUtil.logoutByTokenValue(token); + }); } // 测试:根据账号id强制注销 - @Test(expected = ApiDisabledException.class) + @Test public void testLogoutByLoginId() { - - // 先登录上 - StpUtil.login(10001); - Assert.assertTrue(StpUtil.isLogin()); - - // 根据账号id注销 - StpUtil.logout(10001); + Assertions.assertThrows(ApiDisabledException.class, () -> { + // 先登录上 + StpUtil.login(10001); + Assertions.assertTrue(StpUtil.isLogin()); + + // 根据账号id注销 + StpUtil.logout(10001); + }); } } diff --git a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStyleTest.java b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStyleTest.java index d29eb9b7..c1a5d35c 100644 --- a/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStyleTest.java +++ b/sa-token-test/sa-token-jwt-test/src/test/java/com/pj/test/JwtForStyleTest.java @@ -1,12 +1,10 @@ package com.pj.test; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.dao.SaTokenDao; @@ -23,7 +21,7 @@ import cn.hutool.jwt.JWT; * @author kong * */ -@RunWith(SpringRunner.class) +//@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class) public class JwtForStyleTest { @@ -31,7 +29,7 @@ public class JwtForStyleTest { static SaTokenDao dao; // 开始 - @BeforeClass + @BeforeAll public static void beforeClass() { System.out.println("\n\n------------------------ JwtForStyleTest star ..."); dao = SaManager.getSaTokenDao(); @@ -39,7 +37,7 @@ public class JwtForStyleTest { } // 结束 - @AfterClass + @AfterAll public static void afterClass() { System.out.println("\n\n------------------------ JwtForStyleTest end ... \n"); } @@ -52,24 +50,24 @@ public class JwtForStyleTest { String token = StpUtil.getTokenValue(); // API 验证 - Assert.assertTrue(StpUtil.isLogin()); - Assert.assertNotNull(token); // token不为null - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 - Assert.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 + Assertions.assertTrue(StpUtil.isLogin()); + Assertions.assertNotNull(token); // token不为null + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 + Assertions.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 // token 验证 JWT jwt = JWT.of(token); JSONObject payloads = jwt.getPayloads(); - Assert.assertEquals(payloads.getStr("loginId"), "10001"); + Assertions.assertEquals(payloads.getStr("loginId"), "10001"); // db数据 验证 // token存在 - Assert.assertEquals(dao.get("satoken:login:token:" + token), "10001"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token), "10001"); // Session 存在 SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNotNull(session); - Assert.assertEquals(session.getId(), "satoken:login:session:" + 10001); - Assert.assertTrue(session.getTokenSignList().size() >= 1); + Assertions.assertNotNull(session); + Assertions.assertEquals(session.getId(), "satoken:login:session:" + 10001); + Assertions.assertTrue(session.getTokenSignList().size() >= 1); } } diff --git a/sa-token-test/sa-token-springboot-integrate-test/src/test/java/com/pj/test/LoginControllerTest.java b/sa-token-test/sa-token-springboot-integrate-test/src/test/java/com/pj/test/LoginControllerTest.java index 43ed7364..24680e9d 100644 --- a/sa-token-test/sa-token-springboot-integrate-test/src/test/java/com/pj/test/LoginControllerTest.java +++ b/sa-token-test/sa-token-springboot-integrate-test/src/test/java/com/pj/test/LoginControllerTest.java @@ -2,14 +2,12 @@ package com.pj.test; import java.util.Map; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @@ -25,7 +23,6 @@ import com.pj.test.util.SoMap; * @author Auster * */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class) @SuppressWarnings("deprecation") public class LoginControllerTest { @@ -36,7 +33,7 @@ public class LoginControllerTest { private MockMvc mvc; // 开始 - @Before + @BeforeEach public void before() { mvc = MockMvcBuilders.webAppContextSetup(wac).build(); } @@ -61,9 +58,9 @@ public class LoginControllerTest { String token = so.getString("token"); // 断言 - Assert.assertTrue(mvcResult.getResponse().getHeader("Set-Cookie") != null); - Assert.assertEquals(so.getInt("code"), 200); - Assert.assertNotNull(token); + Assertions.assertTrue(mvcResult.getResponse().getHeader("Set-Cookie") != null); + Assertions.assertEquals(so.getInt("code"), 200); + Assertions.assertNotNull(token); } @Test @@ -71,26 +68,26 @@ public class LoginControllerTest { public void testLogin2() throws Exception{ // 获取token SoMap so = request("/acc/doLogin?name=zhang&pwd=123456"); - Assert.assertNotNull(so.getString("token")); + Assertions.assertNotNull(so.getString("token")); String token = so.getString("token"); // 是否登录 SoMap so2 = request("/acc/isLogin?satoken=" + token); - Assert.assertTrue(so2.getBoolean("data")); + Assertions.assertTrue(so2.getBoolean("data")); // tokenInfo SoMap so3 = request("/acc/tokenInfo?satoken=" + token); SoMap so4 = SoMap.getSoMap((Map)so3.get("data")); - Assert.assertEquals(so4.getString("tokenName"), "satoken"); - Assert.assertEquals(so4.getString("tokenValue"), token); + Assertions.assertEquals(so4.getString("tokenName"), "satoken"); + Assertions.assertEquals(so4.getString("tokenValue"), token); // 注销 request("/acc/logout?satoken=" + token); // 是否登录 SoMap so5 = request("/acc/isLogin?satoken=" + token); - Assert.assertFalse(so5.getBoolean("data")); + Assertions.assertFalse(so5.getBoolean("data")); } // 封装请求 diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/BasicsTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/BasicsTest.java index c6bd9af3..a0dada01 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/BasicsTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/BasicsTest.java @@ -2,14 +2,12 @@ package com.pj.test; import java.util.List; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.dao.SaTokenDao; @@ -28,7 +26,6 @@ import cn.dev33.satoken.util.SaTokenConsts; * @author Auster * */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class) public class BasicsTest { @@ -37,13 +34,13 @@ public class BasicsTest { SaTokenDao dao = SaManager.getSaTokenDao(); // 开始 - @BeforeClass + @BeforeAll public static void beforeClass() { System.out.println("\n\n------------------------ 基础测试 star ..."); } // 结束 - @AfterClass + @AfterAll public static void afterClass() { System.out.println("\n\n------------------------ 基础测试 end ... \n"); } @@ -56,19 +53,19 @@ public class BasicsTest { String token = StpUtil.getTokenValue(); // API 验证 - Assert.assertTrue(StpUtil.isLogin()); - Assert.assertNotNull(token); // token不为null - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 - Assert.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 + Assertions.assertTrue(StpUtil.isLogin()); + Assertions.assertNotNull(token); // token不为null + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // loginId=10001 + Assertions.assertEquals(StpUtil.getLoginDevice(), SaTokenConsts.DEFAULT_LOGIN_DEVICE); // 登录设备类型 // db数据 验证 // token存在 - Assert.assertEquals(dao.get("satoken:login:token:" + token), "10001"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token), "10001"); // Session 存在 SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNotNull(session); - Assert.assertEquals(session.getId(), "satoken:login:session:" + 10001); - Assert.assertTrue(session.getTokenSignList().size() >= 1); + Assertions.assertNotNull(session); + Assertions.assertEquals(session.getId(), "satoken:login:session:" + 10001); + Assertions.assertTrue(session.getTokenSignList().size() >= 1); } // 测试:注销 @@ -77,17 +74,17 @@ public class BasicsTest { // 登录 StpUtil.login(10001); String token = StpUtil.getTokenValue(); - Assert.assertEquals(dao.get("satoken:login:token:" + token), "10001"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token), "10001"); // 注销 StpUtil.logout(); // token 应该被清除 - Assert.assertNull(StpUtil.getTokenValue()); - Assert.assertFalse(StpUtil.isLogin()); - Assert.assertNull(dao.get("satoken:login:token:" + token)); + Assertions.assertNull(StpUtil.getTokenValue()); + Assertions.assertFalse(StpUtil.isLogin()); + Assertions.assertNull(dao.get("satoken:login:token:" + token)); // Session 应该被清除 SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNull(session); + Assertions.assertNull(session); } // 测试:Session会话 @@ -96,23 +93,23 @@ public class BasicsTest { StpUtil.login(10001); // API 应该可以获取 Session - Assert.assertNotNull(StpUtil.getSession(false)); + Assertions.assertNotNull(StpUtil.getSession(false)); // db中应该存在 Session SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNotNull(session); + Assertions.assertNotNull(session); // 存取值 session.set("name", "zhang"); session.set("age", "18"); - Assert.assertEquals(session.get("name"), "zhang"); - Assert.assertEquals(session.getInt("age"), 18); - Assert.assertEquals((int)session.getModel("age", int.class), 18); - Assert.assertEquals((int)session.get("age", 20), 18); - Assert.assertEquals((int)session.get("name2", 20), 20); - Assert.assertEquals((int)session.get("name2", () -> 30), 30); + Assertions.assertEquals(session.get("name"), "zhang"); + Assertions.assertEquals(session.getInt("age"), 18); + Assertions.assertEquals((int)session.getModel("age", int.class), 18); + Assertions.assertEquals((int)session.get("age", 20), 18); + Assertions.assertEquals((int)session.get("name2", 20), 20); + Assertions.assertEquals((int)session.get("name2", () -> 30), 30); session.clear(); - Assert.assertEquals(session.get("name"), null); + Assertions.assertEquals(session.get("name"), null); } // 测试:权限认证 @@ -121,17 +118,17 @@ public class BasicsTest { StpUtil.login(10001); // 权限认证 - Assert.assertTrue(StpUtil.hasPermission("user-add")); - Assert.assertTrue(StpUtil.hasPermission("user-list")); - Assert.assertTrue(StpUtil.hasPermission("user")); - Assert.assertTrue(StpUtil.hasPermission("art-add")); - Assert.assertFalse(StpUtil.hasPermission("get-user")); + Assertions.assertTrue(StpUtil.hasPermission("user-add")); + Assertions.assertTrue(StpUtil.hasPermission("user-list")); + Assertions.assertTrue(StpUtil.hasPermission("user")); + Assertions.assertTrue(StpUtil.hasPermission("art-add")); + Assertions.assertFalse(StpUtil.hasPermission("get-user")); // and - Assert.assertTrue(StpUtil.hasPermissionAnd("art-add", "art-get")); - Assert.assertFalse(StpUtil.hasPermissionAnd("art-add", "comment-add")); + Assertions.assertTrue(StpUtil.hasPermissionAnd("art-add", "art-get")); + Assertions.assertFalse(StpUtil.hasPermissionAnd("art-add", "comment-add")); // or - Assert.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); - Assert.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); + Assertions.assertTrue(StpUtil.hasPermissionOr("art-add", "comment-add")); + Assertions.assertFalse(StpUtil.hasPermissionOr("comment-add", "comment-delete")); } // 测试:角色认证 @@ -140,14 +137,14 @@ public class BasicsTest { StpUtil.login(10001); // 角色认证 - Assert.assertTrue(StpUtil.hasRole("admin")); - Assert.assertFalse(StpUtil.hasRole("teacher")); + Assertions.assertTrue(StpUtil.hasRole("admin")); + Assertions.assertFalse(StpUtil.hasRole("teacher")); // and - Assert.assertTrue(StpUtil.hasRoleAnd("admin", "super-admin")); - Assert.assertFalse(StpUtil.hasRoleAnd("admin", "ceo")); + Assertions.assertTrue(StpUtil.hasRoleAnd("admin", "super-admin")); + Assertions.assertFalse(StpUtil.hasRoleAnd("admin", "ceo")); // or - Assert.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); - Assert.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); + Assertions.assertTrue(StpUtil.hasRoleOr("admin", "ceo")); + Assertions.assertFalse(StpUtil.hasRoleOr("ceo", "cto")); } // 测试:根据token强制注销 @@ -156,24 +153,24 @@ public class BasicsTest { // 先登录上 StpUtil.login(10001); - Assert.assertTrue(StpUtil.isLogin()); + Assertions.assertTrue(StpUtil.isLogin()); String token = StpUtil.getTokenValue(); // 根据token注销 StpUtil.logoutByTokenValue(token); - Assert.assertFalse(StpUtil.isLogin()); + Assertions.assertFalse(StpUtil.isLogin()); // token 应该被清除 - Assert.assertNull(dao.get("satoken:login:token:" + token)); + Assertions.assertNull(dao.get("satoken:login:token:" + token)); // Session 应该被清除 SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNull(session); + Assertions.assertNull(session); // 场景值应该是token无效 try { StpUtil.checkLogin(); } catch (NotLoginException e) { - Assert.assertEquals(e.getType(), NotLoginException.INVALID_TOKEN); + Assertions.assertEquals(e.getType(), NotLoginException.INVALID_TOKEN); } } @@ -183,24 +180,24 @@ public class BasicsTest { // 先登录上 StpUtil.login(10001); - Assert.assertTrue(StpUtil.isLogin()); + Assertions.assertTrue(StpUtil.isLogin()); String token = StpUtil.getTokenValue(); // 根据账号id注销 StpUtil.logout(10001); - Assert.assertFalse(StpUtil.isLogin()); + Assertions.assertFalse(StpUtil.isLogin()); // token 应该被清除 - Assert.assertNull(dao.get("satoken:login:token:" + token)); + Assertions.assertNull(dao.get("satoken:login:token:" + token)); // Session 应该被清除 SaSession session = dao.getSession("satoken:login:session:" + 10001); - Assert.assertNull(session); + Assertions.assertNull(session); // 场景值应该是token无效 try { StpUtil.checkLogin(); } catch (NotLoginException e) { - Assert.assertEquals(e.getType(), NotLoginException.INVALID_TOKEN); + Assertions.assertEquals(e.getType(), NotLoginException.INVALID_TOKEN); } } @@ -213,40 +210,40 @@ public class BasicsTest { String token = StpUtil.getTokenValue(); // 刚开始不存在 - Assert.assertNull(StpUtil.stpLogic.getTokenSession(false)); + Assertions.assertNull(StpUtil.stpLogic.getTokenSession(false)); SaSession session = dao.getSession("satoken:login:token-session:" + token); - Assert.assertNull(session); + Assertions.assertNull(session); // 调用一次就存在了 StpUtil.getTokenSession(); - Assert.assertNotNull(StpUtil.stpLogic.getTokenSession(false)); + Assertions.assertNotNull(StpUtil.stpLogic.getTokenSession(false)); SaSession session2 = dao.getSession("satoken:login:token-session:" + token); - Assert.assertNotNull(session2); + Assertions.assertNotNull(session2); } // 测试自定义Session @Test public void testCustomSession() { // 刚开始不存在 - Assert.assertFalse(SaSessionCustomUtil.isExists("art-1")); + Assertions.assertFalse(SaSessionCustomUtil.isExists("art-1")); SaSession session = dao.getSession("satoken:custom:session:" + "art-1"); - Assert.assertNull(session); + Assertions.assertNull(session); // 调用一下 SaSessionCustomUtil.getSessionById("art-1"); // 就存在了 - Assert.assertTrue(SaSessionCustomUtil.isExists("art-1")); + Assertions.assertTrue(SaSessionCustomUtil.isExists("art-1")); SaSession session2 = dao.getSession("satoken:custom:session:" + "art-1"); - Assert.assertNotNull(session2); + Assertions.assertNotNull(session2); // 给删除掉 SaSessionCustomUtil.deleteSessionById("art-1"); // 就又不存在了 - Assert.assertFalse(SaSessionCustomUtil.isExists("art-1")); + Assertions.assertFalse(SaSessionCustomUtil.isExists("art-1")); SaSession session3 = dao.getSession("satoken:custom:session:" + "art-1"); - Assert.assertNull(session3); + Assertions.assertNull(session3); } // 测试:根据账号id踢人 @@ -259,33 +256,34 @@ public class BasicsTest { StpUtil.kickout(10001); // token 应该被打标记 - Assert.assertEquals(dao.get("satoken:login:token:" + token), NotLoginException.KICK_OUT); + Assertions.assertEquals(dao.get("satoken:login:token:" + token), NotLoginException.KICK_OUT); // 场景值应该是token已被踢下线 try { StpUtil.checkLogin(); } catch (NotLoginException e) { - Assert.assertEquals(e.getType(), NotLoginException.KICK_OUT); + Assertions.assertEquals(e.getType(), NotLoginException.KICK_OUT); } } // 测试:账号封禁 - @Test(expected = DisableLoginException.class) + @Test public void testDisable() { - - // 封号 - StpUtil.disable(10007, 200); - Assert.assertTrue(StpUtil.isDisable(10007)); - Assert.assertEquals(dao.get("satoken:login:disable:" + 10007), DisableLoginException.BE_VALUE); - - // 解封 - StpUtil.untieDisable(10007); - Assert.assertFalse(StpUtil.isDisable(10007)); - Assert.assertEquals(dao.get("satoken:login:disable:" + 10007), null); - - // 封号后登陆 (会抛出 DisableLoginException 异常) - StpUtil.disable(10007, 200); - StpUtil.login(10007); + Assertions.assertThrows(DisableLoginException.class, () -> { + // 封号 + StpUtil.disable(10007, 200); + Assertions.assertTrue(StpUtil.isDisable(10007)); + Assertions.assertEquals(dao.get("satoken:login:disable:" + 10007), DisableLoginException.BE_VALUE); + + // 解封 + StpUtil.untieDisable(10007); + Assertions.assertFalse(StpUtil.isDisable(10007)); + Assertions.assertEquals(dao.get("satoken:login:disable:" + 10007), null); + + // 封号后登陆 (会抛出 DisableLoginException 异常) + StpUtil.disable(10007, 200); + StpUtil.login(10007); + }); } // 测试:身份切换 @@ -293,18 +291,18 @@ public class BasicsTest { public void testSwitch() { // 登录 StpUtil.login(10001); - Assert.assertFalse(StpUtil.isSwitch()); - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); + Assertions.assertFalse(StpUtil.isSwitch()); + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); // 开始身份切换 StpUtil.switchTo(10044); - Assert.assertTrue(StpUtil.isSwitch()); - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10044); + Assertions.assertTrue(StpUtil.isSwitch()); + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10044); // 结束切换 StpUtil.endSwitch(); - Assert.assertFalse(StpUtil.isSwitch()); - Assert.assertEquals(StpUtil.getLoginIdAsLong(), 10001); + Assertions.assertFalse(StpUtil.isSwitch()); + Assertions.assertEquals(StpUtil.getLoginIdAsLong(), 10001); } // 测试:会话管理 @@ -319,7 +317,7 @@ public class BasicsTest { // 查询 List list = StpUtil.searchTokenValue("", 0, 10); - Assert.assertTrue(list.size() >= 5); + Assertions.assertTrue(list.size() >= 5); } // 测试:临时Token认证模块 @@ -327,22 +325,22 @@ public class BasicsTest { public void testSaTemp() { // 生成token String token = SaTempUtil.createToken("group-1014", 200); - Assert.assertNotNull(token); + Assertions.assertNotNull(token); // 解析token String value = SaTempUtil.parseToken(token, String.class); - Assert.assertEquals(value, "group-1014"); - Assert.assertEquals(dao.getObject("satoken:temp-token:" + token), "group-1014"); + Assertions.assertEquals(value, "group-1014"); + Assertions.assertEquals(dao.getObject("satoken:temp-token:" + token), "group-1014"); // 过期时间 long timeout = SaTempUtil.getTimeout(token); - Assert.assertTrue(timeout > 195); + Assertions.assertTrue(timeout > 195); // 回收token SaTempUtil.deleteToken(token); String value2 = SaTempUtil.parseToken(token, String.class); - Assert.assertEquals(value2, null); - Assert.assertEquals(dao.getObject("satoken:temp-token:" + token), null); + Assertions.assertEquals(value2, null); + Assertions.assertEquals(dao.getObject("satoken:temp-token:" + token), null); } // 测试:二级认证 @@ -350,21 +348,21 @@ public class BasicsTest { public void testSafe() { // 登录 StpUtil.login(10001); - Assert.assertFalse(StpUtil.isSafe()); + Assertions.assertFalse(StpUtil.isSafe()); // 开启二级认证 StpUtil.openSafe(2); - Assert.assertTrue(StpUtil.isSafe()); - Assert.assertTrue(StpUtil.getSafeTime() > 0); + Assertions.assertTrue(StpUtil.isSafe()); + Assertions.assertTrue(StpUtil.getSafeTime() > 0); // 自然结束 // Thread.sleep(2500); -// Assert.assertFalse(StpUtil.isSafe()); +// Assertions.assertFalse(StpUtil.isSafe()); // 手动结束 // StpUtil.openSafe(2); StpUtil.closeSafe(); - Assert.assertFalse(StpUtil.isSafe()); + Assertions.assertFalse(StpUtil.isSafe()); } } diff --git a/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/ManyLoginTest.java b/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/ManyLoginTest.java index 141f4538..9392da2c 100644 --- a/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/ManyLoginTest.java +++ b/sa-token-test/sa-token-springboot-test/src/test/java/com/pj/test/ManyLoginTest.java @@ -2,14 +2,12 @@ package com.pj.test; import java.util.List; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.config.SaTokenConfig; @@ -24,7 +22,6 @@ import cn.dev33.satoken.stp.StpUtil; * @author kong * */ -@RunWith(SpringRunner.class) @SpringBootTest(classes = StartUpApplication.class) public class ManyLoginTest { @@ -33,12 +30,12 @@ public class ManyLoginTest { SaTokenDao dao = SaManager.getSaTokenDao(); // 开始 - @BeforeClass + @BeforeAll public static void beforeClass() { System.out.println("\n------------ 多端登录测试 star ..."); } // 结束 - @AfterClass + @AfterAll public static void afterClass() { // System.out.println("\n---------- 多端登录测试 end ... \n"); } @@ -54,7 +51,7 @@ public class ManyLoginTest { StpUtil.login(10001); String token2 = StpUtil.getTokenValue(); - Assert.assertEquals(token1, token2); + Assertions.assertEquals(token1, token2); } // 测试:并发登录、共享token、不同端 @@ -68,7 +65,7 @@ public class ManyLoginTest { StpUtil.login(10001, "PC"); String token2 = StpUtil.getTokenValue(); - Assert.assertNotEquals(token1, token2); + Assertions.assertNotEquals(token1, token2); } // 测试:并发登录、不共享token @@ -82,7 +79,7 @@ public class ManyLoginTest { StpUtil.login(10001); String token2 = StpUtil.getTokenValue(); - Assert.assertNotEquals(token1, token2); + Assertions.assertNotEquals(token1, token2); } // 测试:禁并发登录,后者顶出前者 @@ -97,15 +94,15 @@ public class ManyLoginTest { String token2 = StpUtil.getTokenValue(); // token不同 - Assert.assertNotEquals(token1, token2); + Assertions.assertNotEquals(token1, token2); // token1会被标记为:已被顶下线 - Assert.assertEquals(dao.get("satoken:login:token:" + token1), "-4"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token1), "-4"); // User-Session里的 token1 签名会被移除 List tokenSignList = StpUtil.getSessionByLoginId(10001).getTokenSignList(); for (TokenSign tokenSign : tokenSignList) { - Assert.assertNotEquals(tokenSign.getValue(), token1); + Assertions.assertNotEquals(tokenSign.getValue(), token1); } } @@ -127,13 +124,13 @@ public class ManyLoginTest { StpUtil.logout(10001); // 三个Token应该全部无效 - Assert.assertNull(dao.get("satoken:login:token:" + token1)); - Assert.assertNull(dao.get("satoken:login:token:" + token2)); - Assert.assertNull(dao.get("satoken:login:token:" + token3)); + Assertions.assertNull(dao.get("satoken:login:token:" + token1)); + Assertions.assertNull(dao.get("satoken:login:token:" + token2)); + Assertions.assertNull(dao.get("satoken:login:token:" + token3)); // User-Session也应该被清除掉 - Assert.assertNull(StpUtil.getSessionByLoginId(10001, false)); - Assert.assertNull(dao.getSession("satoken:login:session:" + 10001)); + Assertions.assertNull(StpUtil.getSessionByLoginId(10001, false)); + Assertions.assertNull(dao.getSession("satoken:login:session:" + 10001)); } // 测试:多端登录,一起强制踢下线 @@ -154,13 +151,13 @@ public class ManyLoginTest { StpUtil.kickout(10001); // 三个Token应该全部无效 - Assert.assertEquals(dao.get("satoken:login:token:" + token1), "-5"); - Assert.assertEquals(dao.get("satoken:login:token:" + token2), "-5"); - Assert.assertEquals(dao.get("satoken:login:token:" + token3), "-5"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token1), "-5"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token2), "-5"); + Assertions.assertEquals(dao.get("satoken:login:token:" + token3), "-5"); // User-Session也应该被清除掉 - Assert.assertNull(StpUtil.getSessionByLoginId(10001, false)); - Assert.assertNull(dao.getSession("satoken:login:session:" + 10001)); + Assertions.assertNull(StpUtil.getSessionByLoginId(10001, false)); + Assertions.assertNull(dao.getSession("satoken:login:session:" + 10001)); } // 测试:多账号模式,在一个账号体系里登录成功,在另一个账号体系不会校验通过 @@ -173,7 +170,7 @@ public class ManyLoginTest { StpLogic stp = new StpLogic("user"); - Assert.assertNotNull(StpUtil.getLoginIdByToken(token1)); - Assert.assertNull(stp.getLoginIdByToken(token1)); + Assertions.assertNotNull(StpUtil.getLoginIdByToken(token1)); + Assertions.assertNull(stp.getLoginIdByToken(token1)); } }