mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
add test
This commit is contained in:
parent
aa403cbe98
commit
47fe31cf41
@ -532,12 +532,7 @@ public final class UrlBuilder implements Builder<String> {
|
||||
*/
|
||||
public URI toURI() {
|
||||
try {
|
||||
return new URI(
|
||||
getSchemeWithDefault(),
|
||||
getAuthority(),
|
||||
getPathStr(),
|
||||
getQueryStr(),
|
||||
getFragmentEncoded());
|
||||
return toURL().toURI();
|
||||
} catch (final URISyntaxException e) {
|
||||
return null;
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildWithoutSlashTest(){
|
||||
public void buildWithoutSlashTest() {
|
||||
// https://github.com/dromara/hutool/issues/2459
|
||||
String buildUrl = UrlBuilder.of().setScheme("http").setHost("192.168.1.1").setPort(8080).setWithEndTag(false).build();
|
||||
Assert.assertEquals("http://192.168.1.1:8080", buildUrl);
|
||||
@ -204,7 +204,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void weixinUrlTest(){
|
||||
public void weixinUrlTest() {
|
||||
final String urlStr = "https://mp.weixin.qq.com/s?" +
|
||||
"__biz=MzI5NjkyNTIxMg==" +
|
||||
"&mid=100000465" +
|
||||
@ -214,15 +214,15 @@ public class UrlBuilderTest {
|
||||
final UrlBuilder builder = UrlBuilder.ofHttp(urlStr, CharsetUtil.UTF_8);
|
||||
// 原URL中的&替换为&
|
||||
Assert.assertEquals("https://mp.weixin.qq.com/s?" +
|
||||
"__biz=MzI5NjkyNTIxMg==" +
|
||||
"&mid=100000465&idx=1" +
|
||||
"&sn=1044c0d19723f74f04f4c1da34eefa35" +
|
||||
"&chksm=6cbda3a25bca2ab4516410db6ce6e125badaac2f8c5548ea6e18eab6dc3c5422cb8cbe1095f7",
|
||||
"__biz=MzI5NjkyNTIxMg==" +
|
||||
"&mid=100000465&idx=1" +
|
||||
"&sn=1044c0d19723f74f04f4c1da34eefa35" +
|
||||
"&chksm=6cbda3a25bca2ab4516410db6ce6e125badaac2f8c5548ea6e18eab6dc3c5422cb8cbe1095f7",
|
||||
builder.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void endWithSlashTest(){
|
||||
public void endWithSlashTest() {
|
||||
// 原URL中以/结尾,则这个规则需保留,issue#I1G44J@Gitee
|
||||
final String today = DateUtil.date().toString("yyyyMMdd");
|
||||
final String getWorkDayUrl = "https://tool.bitefu.net/jiari/?info=1&d=" + today;
|
||||
@ -231,19 +231,19 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void blankEncodeTest(){
|
||||
public void blankEncodeTest() {
|
||||
final UrlBuilder urlBuilder = UrlBuilder.ofHttp("http://a.com/aaa bbb.html", CharsetUtil.UTF_8);
|
||||
Assert.assertEquals("http://a.com/aaa%20bbb.html", urlBuilder.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dotEncodeTest(){
|
||||
public void dotEncodeTest() {
|
||||
final UrlBuilder urlBuilder = UrlBuilder.ofHttp("http://xtbgyy.digitalgd.com.cn/ebus/../../..", CharsetUtil.UTF_8);
|
||||
Assert.assertEquals("http://xtbgyy.digitalgd.com.cn/ebus/../../..", urlBuilder.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multiSlashTest(){
|
||||
public void multiSlashTest() {
|
||||
//issue#I25MZL,某些URL中有多个斜杠,此为合法路径
|
||||
final UrlBuilder urlBuilder = UrlBuilder.ofHttp("https://hutool.cn//file/test.jpg", CharsetUtil.UTF_8);
|
||||
Assert.assertEquals("https://hutool.cn//file/test.jpg", urlBuilder.toString());
|
||||
@ -264,7 +264,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void encodePathTest(){
|
||||
public void encodePathTest() {
|
||||
// Path中的某些符号无需转义,比如=
|
||||
final String urlStr = "http://hq.sinajs.cn/list=sh600519";
|
||||
final UrlBuilder urlBuilder = UrlBuilder.ofHttp(urlStr, CharsetUtil.UTF_8);
|
||||
@ -272,7 +272,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void encodePathTest2(){
|
||||
public void encodePathTest2() {
|
||||
// https://gitee.com/dromara/hutool/issues/I4RA42
|
||||
// Path中`:`在第一个segment需要转义,之后的不需要
|
||||
final String urlStr = "https://hutool.cn/aa/bb/Pre-K,Kindergarten,First,Second,Third,Fourth,Fifth/Page:3";
|
||||
@ -281,7 +281,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void gimg2Test(){
|
||||
public void gimg2Test() {
|
||||
final String url = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.jj20.com%2Fup%2Fallimg%2F1114%2F0H320120Z3%2F200H3120Z3-6-1200.jpg&refer=http%3A%2F%2Fpic.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1621996490&t=8c384c2823ea453da15a1b9cd5183eea";
|
||||
final UrlBuilder urlBuilder = UrlBuilder.of(url);
|
||||
|
||||
@ -291,7 +291,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fragmentEncodeTest(){
|
||||
public void fragmentEncodeTest() {
|
||||
// https://gitee.com/dromara/hutool/issues/I49KAL
|
||||
// 见:https://stackoverflow.com/questions/26088849/url-fragment-allowed-characters
|
||||
final String url = "https://hutool.cn/docs/#/?id=简介";
|
||||
@ -303,7 +303,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void slashEncodeTest(){
|
||||
public void slashEncodeTest() {
|
||||
// https://github.com/dromara/hutool/issues/1904
|
||||
// 在query中,"/"是不可转义字符
|
||||
// 见:https://www.rfc-editor.org/rfc/rfc3986.html#section-3.4
|
||||
@ -313,7 +313,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addPathEncodeTest(){
|
||||
public void addPathEncodeTest() {
|
||||
final String url = UrlBuilder.of()
|
||||
.setScheme("https")
|
||||
.setHost("domain.cn")
|
||||
@ -326,7 +326,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addPathEncodeTest2(){
|
||||
public void addPathEncodeTest2() {
|
||||
// https://github.com/dromara/hutool/issues/1912
|
||||
final String url = UrlBuilder.of()
|
||||
.setScheme("https")
|
||||
@ -338,21 +338,21 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void percent2BTest(){
|
||||
public void percent2BTest() {
|
||||
final String url = "http://xxx.cn/a?Signature=3R013Bj9Uq4YeISzAs2iC%2BTVCL8%3D";
|
||||
final UrlBuilder of = UrlBuilder.ofHttpWithoutEncode(url);
|
||||
Assert.assertEquals(url, of.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void paramTest(){
|
||||
public void paramTest() {
|
||||
final String url = "http://ci.xiaohongshu.com/spectrum/c136c98aa2047babe25b994a26ffa7b492bd8058?imageMogr2/thumbnail/x800/format/jpg";
|
||||
final UrlBuilder builder = UrlBuilder.ofHttp(url);
|
||||
Assert.assertEquals(url, builder.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fragmentTest(){
|
||||
public void fragmentTest() {
|
||||
// https://gitee.com/dromara/hutool/issues/I49KAL#note_8060874
|
||||
final String url = "https://www.hutool.cn/#/a/b?timestamp=1640391380204";
|
||||
final UrlBuilder builder = UrlBuilder.ofHttp(url);
|
||||
@ -361,7 +361,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fragmentAppendParamTest(){
|
||||
public void fragmentAppendParamTest() {
|
||||
// https://gitee.com/dromara/hutool/issues/I49KAL#note_8060874
|
||||
final String url = "https://www.hutool.cn/#/a/b";
|
||||
final UrlBuilder builder = UrlBuilder.ofHttp(url);
|
||||
@ -370,7 +370,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void paramWithPlusTest(){
|
||||
public void paramWithPlusTest() {
|
||||
final String url = "http://127.0.0.1/?" +
|
||||
"Expires=1642734164&" +
|
||||
"security-token=CAIS+AF1q6Ft5B2yfSjIr5fYEeju1b1ggpPee2KGpjlgQtdfl43urjz2IHtKdXRvBu8Xs" +
|
||||
@ -385,7 +385,7 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issueI4Z2ETTest(){
|
||||
public void issueI4Z2ETTest() {
|
||||
// =是url参数值中的合法字符,但是某些URL强制编码了
|
||||
final String url = "http://dsl-fd.dslbuy.com/fssc/1647947565522.pdf?" +
|
||||
"Expires=1647949365" +
|
||||
@ -397,21 +397,21 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issue2215Test(){
|
||||
public void issue2215Test() {
|
||||
final String url = "https://hutool.cn/v1/104303371/messages:send";
|
||||
final String build = UrlBuilder.of(url).build();
|
||||
Assert.assertEquals(url, build);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issuesI4Z2ETTest(){
|
||||
public void issuesI4Z2ETTest() {
|
||||
final String url = "http://hutool.cn/2022/03/09/123.zip?Expires=1648704684&OSSAccessKeyId=LTAI4FncgaVtwZGBnYHHi8ox&Signature=%2BK%2B%3D";
|
||||
final String build = UrlBuilder.of(url, null).build();
|
||||
Assert.assertEquals(url, build);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issueI50NHQTest(){
|
||||
public void issueI50NHQTest() {
|
||||
final String url = "http://127.0.0.1/devicerecord/list";
|
||||
final HashMap<String, Object> params = new LinkedHashMap<>();
|
||||
params.put("start", "2022-03-31 00:00:00");
|
||||
@ -425,12 +425,12 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issue2242Test(){
|
||||
public void issue2242Test() {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issue2243Test(){
|
||||
public void issue2243Test() {
|
||||
// https://github.com/dromara/hutool/issues/2243
|
||||
// 如果用户已经做了%编码,不应该重复编码
|
||||
final String url = "https://hutool.cn/v1.0?privateNum=%2B8616512884988";
|
||||
@ -439,10 +439,35 @@ public class UrlBuilderTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void issueI51T0VTest(){
|
||||
public void issueI51T0VTest() {
|
||||
// &自动转换为&
|
||||
final String url = "https://hutool.cn/a.mp3?Expires=1652423884&key=JMv2rKNc7Pz&sign=12zva00BpVqgZcX1wcb%2BrmN7H3E%3D";
|
||||
final UrlBuilder of = UrlBuilder.of(url, null);
|
||||
Assert.assertEquals(url.replace("&", "&"), of.toString());
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Test
|
||||
public void issues2503Test() throws URISyntaxException {
|
||||
String duplicate = UrlBuilder.ofHttp("127.0.0.1:8080")
|
||||
.addQuery("param[0].field", "编码")
|
||||
.toURI()
|
||||
.toString();
|
||||
Assert.assertEquals("http://127.0.0.1:8080?param%5B0%5D.field=%E7%BC%96%E7%A0%81", duplicate);
|
||||
|
||||
String normal = UrlBuilder.ofHttp("127.0.0.1:8080")
|
||||
.addQuery("param[0].field", "编码")
|
||||
.toURL()
|
||||
.toURI()
|
||||
.toString();
|
||||
Assert.assertEquals(duplicate, normal);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAuthorityTest(){
|
||||
final UrlBuilder builder = UrlBuilder.ofHttp("127.0.0.1:8080")
|
||||
.addQuery("param[0].field", "编码");
|
||||
|
||||
Assert.assertEquals("127.0.0.1:8080", builder.getAuthority());
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
<c3p0.version>0.9.5.5</c3p0.version>
|
||||
<dbcp2.version>2.9.0</dbcp2.version>
|
||||
<tomcat-jdbc.version>10.0.20</tomcat-jdbc.version>
|
||||
<druid.version>1.2.9</druid.version>
|
||||
<druid.version>1.2.11</druid.version>
|
||||
<hikariCP.version>4.0.3</hikariCP.version>
|
||||
<sqlite.version>3.36.0.3</sqlite.version>
|
||||
<!-- 此处固定2.5.x,支持到JDK8 -->
|
||||
@ -123,7 +123,7 @@
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<version>42.3.4</version>
|
||||
<version>42.4.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -133,4 +133,11 @@ public class DbTest {
|
||||
return ps;
|
||||
}), new EntityListHandler());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void findWithDotTest() {
|
||||
// 当字段带有点时,导致被拆分分别wrap了,因此此时关闭自动包装即可
|
||||
Db.of().disableWrapper().find(Entity.of("user").set("a.b", "1"));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user