完善 SaSession 模块相关单元测试

This commit is contained in:
click33
2022-09-04 06:04:42 +08:00
parent 37b11972b3
commit 153785880d
6 changed files with 158 additions and 62 deletions

View File

@@ -86,6 +86,8 @@ public class SaTokenConfigTest {
SaCookieConfig scc = new SaCookieConfig();
config.setCookie(scc);
Assertions.assertEquals(config.getCookie(), scc);
config.toString();
}
// 从文件读取

View File

@@ -0,0 +1,52 @@
package cn.dev33.satoken.core.session;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaSessionCustomUtil;
/**
* SaSession 测试
*
* @author kong
* @since: 2022-2-9
*/
public class SaSessionCustomUtilTest {
// 测试自定义Session
@Test
public void testCustomSession() {
SaTokenDao dao = SaManager.getSaTokenDao();
// 刚开始不存在
Assertions.assertFalse(SaSessionCustomUtil.isExists("art-1"));
SaSession session = dao.getSession("satoken:custom:session:" + "art-1");
Assertions.assertNull(session);
// 调用一下
SaSessionCustomUtil.getSessionById("art-1");
SaSessionCustomUtil.getSessionById("art-1", false);
// 就存在了
Assertions.assertTrue(SaSessionCustomUtil.isExists("art-1"));
SaSession session2 = dao.getSession("satoken:custom:session:" + "art-1");
Assertions.assertNotNull(session2);
// 给删除掉
SaSessionCustomUtil.deleteSessionById("art-1");
// 就又不存在了
Assertions.assertFalse(SaSessionCustomUtil.isExists("art-1"));
SaSession session3 = dao.getSession("satoken:custom:session:" + "art-1");
Assertions.assertNull(session3);
// 调用了也不会存在
SaSessionCustomUtil.getSessionById("art-4", false);
SaSession session4 = dao.getSession("satoken:custom:session:" + "art-2");
Assertions.assertNull(session4);
}
}

View File

@@ -1,9 +1,16 @@
package cn.dev33.satoken.core.session;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.TokenSign;
/**
* SaSession 测试
@@ -13,12 +20,27 @@ import cn.dev33.satoken.session.SaSession;
*/
public class SaSessionTest {
// 基础属性
@Test
public void test() {
public void testProp() {
SaSession session = new SaSession("session-1001");
Assertions.assertEquals(session.getId(), "session-1001");
// 属性读取
session = new SaSession();
session.setId("session-1009");
Assertions.assertEquals(session.getId(), "session-1009");
session.setCreateTime(1662241013902L);
Assertions.assertEquals(session.getCreateTime(), 1662241013902L);
}
// 基础存取值
@Test
public void testSetGet() {
// 基础取值
SaSession session = new SaSession("session-1002");
session.set("name", "zhangsan");
session.set("age", 18);
Assertions.assertEquals(session.get("name"), "zhangsan");
@@ -26,6 +48,12 @@ public class SaSessionTest {
Assertions.assertEquals((int)session.get("age2", 20), 20);
Assertions.assertEquals(session.getModel("age", Double.class).getClass(), Double.class);
// 原本无值时才会写入
session.setByNull("name", "lisi");
Assertions.assertEquals(session.get("name"), "zhangsan");
session.setByNull("name2", "lisi");
Assertions.assertEquals(session.get("name2"), "lisi");
// 复杂取值
class User {
String name;
@@ -42,17 +70,81 @@ public class SaSessionTest {
Assertions.assertNotNull(user2);
Assertions.assertEquals(user2.name, "zhangsan");
Assertions.assertEquals(user2.age, 18);
}
// 测试有效期
@Test
public void testSessionTimeout() {
// 修改剩余有效期
SaSession session = new SaSession("session-1005");
SaManager.getSaTokenDao().setSession(session, 20000);
session.updateMaxTimeout(100);
Assertions.assertTrue(session.getTimeout() <= 100);
System.out.println(session.getTimeout());
// 仍然是 <=100
session.updateMaxTimeout(1000);
Assertions.assertTrue(session.getTimeout() <= 100);
System.out.println(session.getTimeout());
// Min 修改
session.updateMinTimeout(-1);
System.out.println(session.getTimeout());
Assertions.assertTrue(session.getTimeout() == -1);
}
// 测试token 签名
@Test
public void testTokenSign() {
SaSession session = new SaSession("session-1002");
// Token签名
// 添加 Token 签名
session.addTokenSign("xxxx-xxxx-xxxx-xxxx-1", "PC");
session.addTokenSign("xxxx-xxxx-xxxx-xxxx-2", "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");
Assertions.assertEquals(session.getTokenSignList().size(), 1);
}
// 删除一个不存在的,则不影响 TokenSign 列表
session.removeTokenSign("xxxx-xxxx-xxxx-xxxx-999");
Assertions.assertEquals(session.getTokenSignList().size(), 1);
// 重置整个签名列表
List<TokenSign> list = Arrays.asList(
new TokenSign("xxxx-xxxx-xxxx-xxxx-1", "WEB"),
new TokenSign("xxxx-xxxx-xxxx-xxxx-2", "phone"),
new TokenSign("xxxx-xxxx-xxxx-xxxx-3", "ipad")
);
session.setTokenSignList(list);
Assertions.assertEquals(session.getTokenSignList().size(), 3);
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-1").getDevice(), "WEB");
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-2").getDevice(), "phone");
Assertions.assertEquals(session.getTokenSign("xxxx-xxxx-xxxx-xxxx-3").getDevice(), "ipad");
}
// 测试重置 DataMap
@Test
public void testDataMap() {
SaSession session = new SaSession("session-1003");
session.set("key1", "value1");
session.set("key2", "value2");
session.set("key3", "value3");
// 所有数据
Assertions.assertEquals(session.keys().size(), 3);
Assertions.assertEquals(session.getDataMap().size(), 3);
// 重置所有数据
Map<String, Object> dataMap = new ConcurrentHashMap<>();
dataMap.put("aaa", "111");
dataMap.put("bbb", "222");
session.refreshDataMap(dataMap);
Assertions.assertEquals(session.keys().size(), 2);
}
}

View File

@@ -17,7 +17,6 @@ import cn.dev33.satoken.exception.NotPermissionException;
import cn.dev33.satoken.exception.NotRoleException;
import cn.dev33.satoken.exception.NotSafeException;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaSessionCustomUtil;
import cn.dev33.satoken.stp.SaLoginConfig;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpLogic;
@@ -315,31 +314,6 @@ public class BasicsTest {
Assertions.assertEquals(tokenSession.getId(), tokenSession2.getId());
}
// 测试自定义Session
@Test
public void testCustomSession() {
// 刚开始不存在
Assertions.assertFalse(SaSessionCustomUtil.isExists("art-1"));
SaSession session = dao.getSession("satoken:custom:session:" + "art-1");
Assertions.assertNull(session);
// 调用一下
SaSessionCustomUtil.getSessionById("art-1");
// 就存在了
Assertions.assertTrue(SaSessionCustomUtil.isExists("art-1"));
SaSession session2 = dao.getSession("satoken:custom:session:" + "art-1");
Assertions.assertNotNull(session2);
// 给删除掉
SaSessionCustomUtil.deleteSessionById("art-1");
// 就又不存在了
Assertions.assertFalse(SaSessionCustomUtil.isExists("art-1"));
SaSession session3 = dao.getSession("satoken:custom:session:" + "art-1");
Assertions.assertNull(session3);
}
// 测试根据账号id踢人
@Test
public void kickoutByLoginId() {