Files
emo-grab/src/test/java/quant/rich/PatchOkHttpTest.java
Doghole d56ec783a3 修改代理 IP 获取设置,新增 GeoLite 本地归属地查询,修正 devtools 配置导致 ByteBuddy 重定义方法类
ClassLoader 不一致,进一步导致重定义方法内无法获取到自定义规则的问题
2025-05-15 01:35:53 +08:00

60 lines
2.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package quant.rich;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.function.Consumer;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import quant.rich.emoney.patch.okhttp.RequestContext;
import quant.rich.emoney.patch.okhttp.PatchOkHttp;
import quant.rich.emoney.patch.okhttp.PatchOkHttpRule;
public class PatchOkHttpTest {
@Test
void test() {
PatchOkHttpRule rule;
RequestContext context;
rule = PatchOkHttpRule.when().isHttps().build();
context = new RequestContext(Map.of(), "https", "localhost");
Assertions.assertTrue(rule.matches(context), "测试失败");
rule = PatchOkHttpRule.when().hostEndsWith("emoney.cn")
.or(c -> c.hostContains("localhost"))
.or(a -> a.hostContains("emapp"))
.or(b -> b.hasHeaderName("X-Protocol-Id"))
.overrideIf("User-Agent", "okhttp/3.12.2")
.build();
context = new RequestContext(Map.of(), "https", "mbs.emoney.cn");
Assertions.assertTrue(rule.matches(context), "测试失败");
context = new RequestContext(Map.of(), "https", "emapp-static.oss-cn-shanghai.aliyuncs.com");
Assertions.assertTrue(rule.matches(context), "测试失败");
// 测试 Override
String[] modifier = new String[] {""};
Consumer<String> consumer = str -> {
modifier[0] = str;
};
PatchOkHttp.apply(rule);
PatchOkHttp.match(context, "User-Agent", consumer);
Assertions.assertTrue("okhttp/3.12.2".equals(modifier[0]), "测试失败User-Agent 覆写失败");
modifier[0] = "";
context = new RequestContext(Map.of(), "https", "hao123.com");
Assertions.assertFalse(rule.matches(context), "测试失败");
PatchOkHttp.match(context, "User-Agent", consumer);
Assertions.assertTrue("".equals(modifier[0]), "测试失败User-Agent 不覆写失败");
//Assertions.assertEquals("{\"info\":\"m\",\"weight\":\"100kg/m\"}", JSON.toJSONString(humanWeight));
}
}