fix test and regex

This commit is contained in:
Looly 2021-09-23 17:05:06 +08:00
parent d2900600e0
commit ba00f03026
13 changed files with 74 additions and 116 deletions

View File

@ -3,10 +3,11 @@
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
# 5.7.14 (2021-09-22) # 5.7.14 (2021-09-23)
### 🐣新特性 ### 🐣新特性
* 【extra 】 修复HttpCookie设置cookies的方法不符合RFC6265规范问题issue#I4B70D@Gitee * 【extra 】 修复HttpCookie设置cookies的方法不符合RFC6265规范问题issue#I4B70D@Gitee
* 【http 】 优化Browser版本正则判断
### 🐞Bug修复 ### 🐞Bug修复
* 【http 】 修复HttpCookie设置cookies的方法不符合RFC6265规范问题pr#418@Gitee * 【http 】 修复HttpCookie设置cookies的方法不符合RFC6265规范问题pr#418@Gitee

View File

@ -32,9 +32,9 @@ public class Browser extends UserAgentInfo {
// 企业微信 企业微信使用微信浏览器内核,会包含 MicroMessenger 所以要放在前面 // 企业微信 企业微信使用微信浏览器内核,会包含 MicroMessenger 所以要放在前面
new Browser("wxwork", "wxwork", "wxwork\\/([\\d\\w\\.\\-]+)"), new Browser("wxwork", "wxwork", "wxwork\\/([\\d\\w\\.\\-]+)"),
// 微信 // 微信
new Browser("MicroMessenger", "MicroMessenger", "MicroMessenger\\/([\\d\\w\\.\\-]+)"), new Browser("MicroMessenger", "MicroMessenger", Other_Version),
// 微信小程序 // 微信小程序
new Browser("miniProgram", "miniProgram", "miniProgram\\/([\\d\\w\\.\\-]+)"), new Browser("miniProgram", "miniProgram", Other_Version),
// QQ浏览器 // QQ浏览器
new Browser("QQBrowser", "MQQBrowser", "MQQBrowser\\/([\\d\\w\\.\\-]+)"), new Browser("QQBrowser", "MQQBrowser", "MQQBrowser\\/([\\d\\w\\.\\-]+)"),
// 钉钉内置浏览器 // 钉钉内置浏览器
@ -46,10 +46,10 @@ public class Browser extends UserAgentInfo {
// UC浏览器 // UC浏览器
new Browser("UCBrowser", "UC?Browser", "UC?Browser\\/([\\d\\w\\.\\-]+)"), new Browser("UCBrowser", "UC?Browser", "UC?Browser\\/([\\d\\w\\.\\-]+)"),
// 夸克浏览器 // 夸克浏览器
new Browser("Quark", "Quark", "Quark\\/([\\d\\w\\.\\-]+)"), new Browser("Quark", "Quark", Other_Version),
new Browser("MSEdge", "Edge|Edg", "(?:edge|Edg)\\/([\\d\\w\\.\\-]+)"), new Browser("MSEdge", "Edge|Edg", "(?:edge|Edg)\\/([\\d\\w\\.\\-]+)"),
new Browser("Chrome", "chrome", "chrome\\/([\\d\\w\\.\\-]+)"), new Browser("Chrome", "chrome", Other_Version),
new Browser("Firefox", "firefox", Other_Version), new Browser("Firefox", "firefox", Other_Version),
new Browser("IEMobile", "iemobile", Other_Version), new Browser("IEMobile", "iemobile", Other_Version),
new Browser("Android Browser", "android", "version\\/([\\d\\w\\.\\-]+)"), new Browser("Android Browser", "android", "version\\/([\\d\\w\\.\\-]+)"),
@ -66,7 +66,7 @@ public class Browser extends UserAgentInfo {
new Browser("Evolution", "evolution", Other_Version), new Browser("Evolution", "evolution", Other_Version),
new Browser("MSIE", "msie", "msie ([\\d\\w\\.\\-]+)"), new Browser("MSIE", "msie", "msie ([\\d\\w\\.\\-]+)"),
new Browser("MSIE11", "rv:11", "rv:([\\d\\w\\.\\-]+)"), new Browser("MSIE11", "rv:11", "rv:([\\d\\w\\.\\-]+)"),
new Browser("Gabble", "Gabble", "Gabble\\/([\\d\\w\\.\\-]+)"), new Browser("Gabble", "Gabble", Other_Version),
new Browser("Yammer Desktop", "AdobeAir", "([\\d\\w\\.\\-]+)\\/Yammer"), new Browser("Yammer Desktop", "AdobeAir", "([\\d\\w\\.\\-]+)\\/Yammer"),
new Browser("Yammer Mobile", "Yammer[\\s]+([\\d\\w\\.\\-]+)", "Yammer[\\s]+([\\d\\w\\.\\-]+)"), new Browser("Yammer Mobile", "Yammer[\\s]+([\\d\\w\\.\\-]+)", "Yammer[\\s]+([\\d\\w\\.\\-]+)"),
new Browser("Apache HTTP Client", "Apache\\\\-HttpClient", "Apache\\-HttpClient\\/([\\d\\w\\.\\-]+)"), new Browser("Apache HTTP Client", "Apache\\\\-HttpClient", "Apache\\-HttpClient\\/([\\d\\w\\.\\-]+)"),

View File

@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.ConvertException; import cn.hutool.core.convert.ConvertException;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import cn.hutool.core.lang.TypeReference; import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.CharsetUtil;
@ -13,7 +12,6 @@ import cn.hutool.json.test.bean.JsonNode;
import cn.hutool.json.test.bean.KeyBean; import cn.hutool.json.test.bean.KeyBean;
import lombok.Data; import lombok.Data;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import java.util.ArrayList; import java.util.ArrayList;
@ -84,7 +82,6 @@ public class JSONArrayTest {
} }
@Test @Test
@Ignore
public void parseBeanListTest() { public void parseBeanListTest() {
KeyBean b1 = new KeyBean(); KeyBean b1 = new KeyBean();
b1.setAkey("aValue1"); b1.setAkey("aValue1");
@ -96,7 +93,8 @@ public class JSONArrayTest {
ArrayList<KeyBean> list = CollUtil.newArrayList(b1, b2); ArrayList<KeyBean> list = CollUtil.newArrayList(b1, b2);
JSONArray jsonArray = JSONUtil.parseArray(list); JSONArray jsonArray = JSONUtil.parseArray(list);
Console.log(jsonArray); Assert.assertEquals("aValue1", jsonArray.getJSONObject(0).getStr("akey"));
Assert.assertEquals("bValue2", jsonArray.getJSONObject(1).getStr("bkey"));
} }
@Test @Test

View File

@ -588,4 +588,11 @@ public class JSONObjectTest {
jsonObject.accumulate("key1", "value3"); jsonObject.accumulate("key1", "value3");
Assert.assertEquals("{\"key1\":[\"value1\",\"value2\",\"value3\"]}", jsonObject.toString()); Assert.assertEquals("{\"key1\":[\"value1\",\"value2\",\"value3\"]}", jsonObject.toString());
} }
@Test
public void putByPathTest() {
JSONObject json = new JSONObject();
json.putByPath("aa.bb", "BB");
Assert.assertEquals("{\"aa\":{\"bb\":\"BB\"}}", json.toString());
}
} }

View File

@ -143,13 +143,6 @@ public class JSONUtilTest {
// Assert.assertEquals("{\"age\":18,\"gender\":\"\"}", user.getProp()); // Assert.assertEquals("{\"age\":18,\"gender\":\"\"}", user.getProp());
} }
@Test
public void putByPathTest() {
JSONObject json = new JSONObject();
json.putByPath("aa.bb", "BB");
Assert.assertEquals("{\"aa\":{\"bb\":\"BB\"}}", json.toString());
}
@Test @Test
public void getStrTest() { public void getStrTest() {
String html = "{\"name\":\"Something must have been changed since you leave\"}"; String html = "{\"name\":\"Something must have been changed since you leave\"}";

View File

@ -1,16 +1,10 @@
package cn.hutool.json.test.bean; package cn.hutool.json.test.bean;
import lombok.Data;
import java.util.List; import java.util.List;
@Data
public class ADT { public class ADT {
private List<String> BookingCode; private List<String> BookingCode;
public void setBookingCode(List<String> BookingCode) {
this.BookingCode = BookingCode;
}
public List<String> getBookingCode() {
return BookingCode;
}
} }

View File

@ -1,7 +1,8 @@
package cn.hutool.json.test.bean; package cn.hutool.json.test.bean;
import java.util.Arrays; import lombok.Data;
@Data
public class Exam { public class Exam {
private String id; private String id;
private String examNumber; private String examNumber;
@ -9,59 +10,4 @@ public class Exam {
private Seq[] answerArray; private Seq[] answerArray;
private String isRight; private String isRight;
private String isSubject; private String isSubject;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getExamNumber() {
return examNumber;
}
public void setExamNumber(String examNumber) {
this.examNumber = examNumber;
}
public String getIsAnswer() {
return isAnswer;
}
public void setIsAnswer(String isAnswer) {
this.isAnswer = isAnswer;
}
public Seq[] getAnswerArray() {
return answerArray;
}
public void setAnswerArray(Seq[] answerArray) {
this.answerArray = answerArray;
}
public String getIsRight() {
return isRight;
}
public void setIsRight(String isRight) {
this.isRight = isRight;
}
public String getIsSubject() {
return isSubject;
}
public void setIsSubject(String isSubject) {
this.isSubject = isSubject;
}
@Override
public String toString() {
return "Exam [id=" + id + ", examNumber=" + examNumber + ", isAnswer=" + isAnswer + ", answerArray=" + Arrays.toString(answerArray) + ", isRight=" + isRight + ", isSubject=" + isSubject + "]";
}
} }

View File

@ -1,24 +1,9 @@
package cn.hutool.json.test.bean; package cn.hutool.json.test.bean;
import lombok.Data;
@Data
public class KeyBean{ public class KeyBean{
private String akey; private String akey;
private String bkey; private String bkey;
public String getAkey() {
return akey;
}
public void setAkey(String akey) {
this.akey = akey;
}
public String getBkey() {
return bkey;
}
public void setBkey(String bkey) {
this.bkey = bkey;
}
@Override
public String toString() {
return "KeyBean [akey=" + akey + ", bkey=" + bkey + "]";
}
} }

View File

@ -1,16 +1,10 @@
package cn.hutool.json.test.bean; package cn.hutool.json.test.bean;
import lombok.Data;
import java.util.List; import java.util.List;
@Data
public class Price { public class Price {
private List<List<ADT>> ADT; private List<List<ADT>> ADT;
}
public void setADT(List<List<ADT>> ADT) {
this.ADT = ADT;
}
public List<List<ADT>> getADT() {
return ADT;
}
}

View File

@ -50,7 +50,7 @@ public class JWT implements RegisteredPayload<JWT> {
/** /**
* 创建空的JWT对象 * 创建空的JWT对象
* *
* @return {@link JWT} * @return JWT
*/ */
public static JWT create() { public static JWT create() {
return new JWT(); return new JWT();
@ -60,7 +60,7 @@ public class JWT implements RegisteredPayload<JWT> {
* 创建并解析JWT对象 * 创建并解析JWT对象
* *
* @param token JWT Token字符串格式为xxxx.yyyy.zzzz * @param token JWT Token字符串格式为xxxx.yyyy.zzzz
* @return {@link JWT} * @return JWT
*/ */
public static JWT of(String token) { public static JWT of(String token) {
return new JWT(token); return new JWT(token);

View File

@ -27,7 +27,7 @@ public class JWTValidator {
* 创建JWT验证器 * 创建JWT验证器
* *
* @param token JWT Token * @param token JWT Token
* @return {@link JWTValidator} * @return JWTValidator
*/ */
public static JWTValidator of(String token) { public static JWTValidator of(String token) {
return new JWTValidator(JWT.of(token)); return new JWTValidator(JWT.of(token));
@ -37,7 +37,7 @@ public class JWTValidator {
* 创建JWT验证器 * 创建JWT验证器
* *
* @param jwt JWT对象 * @param jwt JWT对象
* @return {@link JWTValidator} * @return JWTValidator
*/ */
public static JWTValidator of(JWT jwt) { public static JWTValidator of(JWT jwt) {
return new JWTValidator(jwt); return new JWTValidator(jwt);
@ -209,7 +209,8 @@ public class JWTValidator {
} }
/** /**
* 验证指定字段的时间不能晚于当前时间 * 验证指定字段的时间不能晚于当前时间<br>
* 被检查的日期不存在则跳过
* *
* @param fieldName 字段名 * @param fieldName 字段名
* @param dateToCheck 被检查的字段日期 * @param dateToCheck 被检查的字段日期
@ -229,7 +230,8 @@ public class JWTValidator {
} }
/** /**
* 验证指定字段的时间不能早于当前时间 * 验证指定字段的时间不能早于当前时间<br>
* 被检查的日期不存在则跳过
* *
* @param fieldName 字段名 * @param fieldName 字段名
* @param dateToCheck 被检查的字段日期 * @param dateToCheck 被检查的字段日期

View File

@ -19,6 +19,13 @@ public class JWTSignerTest {
signAndVerify(signer); signAndVerify(signer);
} }
@Test
public void hs256Test2(){
final JWTSigner signer = JWTSignerUtil.hs256("123456".getBytes());
signAndVerify(signer);
}
@Test @Test
public void hs384Test(){ public void hs384Test(){
String id = "hs384"; String id = "hs384";

View File

@ -1,5 +1,6 @@
package cn.hutool.jwt; package cn.hutool.jwt;
import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import java.util.HashMap; import java.util.HashMap;
@ -21,4 +22,34 @@ public class JWTUtilTest {
JWTUtil.createToken(map, key); JWTUtil.createToken(map, key);
} }
@Test
public void parseTest(){
String rightToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9." +
"eyJzdWIiOiIxMjM0NTY3ODkwIiwiYWRtaW4iOnRydWUsIm5hbWUiOiJsb29seSJ9." +
"U2aQkC2THYV9L0fTN-yBBI7gmo5xhmvMhATtu8v0zEA";
final JWT jwt = JWTUtil.parseToken(rightToken);
Assert.assertTrue(jwt.setKey("1234567890".getBytes()).verify());
//header
Assert.assertEquals("JWT", jwt.getHeader(JWTHeader.TYPE));
Assert.assertEquals("HS256", jwt.getHeader(JWTHeader.ALGORITHM));
Assert.assertNull(jwt.getHeader(JWTHeader.CONTENT_TYPE));
//payload
Assert.assertEquals("1234567890", jwt.getPayload("sub"));
Assert.assertEquals("looly", jwt.getPayload("name"));
Assert.assertEquals(true, jwt.getPayload("admin"));
}
@Test
public void verifyTest(){
String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." +
"eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbImFsbCJdLCJleHAiOjE2MjQwMDQ4MjIsInVzZXJJZCI6MSwiYXV0aG9yaXRpZXMiOlsiUk9MRV_op5LoibLkuozlj7ciLCJzeXNfbWVudV8xIiwiUk9MRV_op5LoibLkuIDlj7ciLCJzeXNfbWVudV8yIl0sImp0aSI6ImQ0YzVlYjgwLTA5ZTctNGU0ZC1hZTg3LTVkNGI5M2FhNmFiNiIsImNsaWVudF9pZCI6ImhhbmR5LXNob3AifQ." +
"aixF1eKlAKS_k3ynFnStE7-IRGiD5YaqznvK2xEjBew";
final boolean verify = JWTUtil.verify(token, "123456".getBytes());
Assert.assertTrue(verify);
}
} }