mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-30 03:01:53 +08:00
feat: 脱敏组件增加单元测试
This commit is contained in:
parent
7b3fca2844
commit
42bc0d1519
@ -20,7 +20,7 @@ import java.lang.annotation.Target;
|
|||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@JacksonAnnotationsInside
|
@JacksonAnnotationsInside
|
||||||
@DesensitizeBy(handler = EmailDesensitizationHandler.class)
|
@DesensitizeBy(handler = EmailDesensitizationHandler.class)
|
||||||
public @interface EmailDesensitize {
|
public @interface Email {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 匹配的正则表达式
|
* 匹配的正则表达式
|
@ -20,7 +20,7 @@ import java.lang.annotation.Target;
|
|||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@JacksonAnnotationsInside
|
@JacksonAnnotationsInside
|
||||||
@DesensitizeBy(handler = DefaultRegexDesensitizationHandler.class)
|
@DesensitizeBy(handler = DefaultRegexDesensitizationHandler.class)
|
||||||
public @interface RegexDesensitize {
|
public @interface Regex {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 匹配的正则表达式(默认匹配所有)
|
* 匹配的正则表达式(默认匹配所有)
|
@ -1,22 +1,22 @@
|
|||||||
package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
|
package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.RegexDesensitize;
|
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.Regex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认正则脱敏处理器
|
* 默认正则脱敏处理器
|
||||||
*
|
*
|
||||||
* @author gaibu
|
* @author gaibu
|
||||||
*/
|
*/
|
||||||
public class DefaultRegexDesensitizationHandler extends AbstractRegexDesensitizationHandler<RegexDesensitize> {
|
public class DefaultRegexDesensitizationHandler extends AbstractRegexDesensitizationHandler<Regex> {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getRegex(RegexDesensitize annotation) {
|
String getRegex(Regex annotation) {
|
||||||
return annotation.regex();
|
return annotation.regex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getReplacer(RegexDesensitize annotation) {
|
String getReplacer(Regex annotation) {
|
||||||
return annotation.replacer();
|
return annotation.replacer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
|
package cn.iocoder.yudao.framework.desensitize.core.regex.handler;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.EmailDesensitize;
|
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.Email;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 邮箱脱敏处理器
|
* 邮箱脱敏处理器
|
||||||
*
|
*
|
||||||
* @author gaibu
|
* @author gaibu
|
||||||
*/
|
*/
|
||||||
public class EmailDesensitizationHandler extends AbstractRegexDesensitizationHandler<EmailDesensitize> {
|
public class EmailDesensitizationHandler extends AbstractRegexDesensitizationHandler<Email> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getRegex(EmailDesensitize annotation) {
|
String getRegex(Email annotation) {
|
||||||
return annotation.regex();
|
return annotation.regex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
String getReplacer(EmailDesensitize annotation) {
|
String getReplacer(Email annotation) {
|
||||||
return annotation.replacer();
|
return annotation.replacer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,88 @@
|
|||||||
|
package cn.iocoder.yudao.framework.desensitize.core.slider;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.Email;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.regex.annotation.Regex;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Address;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.BankCard;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.CarLicense;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.ChineseName;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.FixedPhone;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.IdCard;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Password;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.PhoneNumber;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Slider;
|
||||||
|
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class DesensitizeTest extends BaseMockitoUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() {
|
||||||
|
DesensitizeDemo desensitizeDemo = new DesensitizeDemo();
|
||||||
|
desensitizeDemo.setUserName("芋道源码");
|
||||||
|
desensitizeDemo.setBankCard("9988002866797031");
|
||||||
|
desensitizeDemo.setCarLicense("粤A66666");
|
||||||
|
desensitizeDemo.setFixedPhone("01086551122");
|
||||||
|
desensitizeDemo.setIdCard("530321199204074611");
|
||||||
|
desensitizeDemo.setPassword("123456");
|
||||||
|
desensitizeDemo.setPhoneNumber("13248765917");
|
||||||
|
desensitizeDemo.setSlider1("ABCDEFG");
|
||||||
|
desensitizeDemo.setSlider2("ABCDEFG");
|
||||||
|
desensitizeDemo.setSlider3("ABCDEFG");
|
||||||
|
desensitizeDemo.setEmail("1@eamil.com");
|
||||||
|
desensitizeDemo.setRegex("你好,我是芋道源码");
|
||||||
|
desensitizeDemo.setAddress("北京市海淀区上地十街10号");
|
||||||
|
desensitizeDemo.setOrigin("芋道源码");
|
||||||
|
|
||||||
|
DesensitizeDemo d = JsonUtils.parseObject(JsonUtils.toJsonString(desensitizeDemo), DesensitizeDemo.class);
|
||||||
|
assertEquals("芋***", d.getUserName());
|
||||||
|
assertEquals("998800********31", d.getBankCard());
|
||||||
|
assertEquals("粤A6***6", d.getCarLicense());
|
||||||
|
assertEquals("0108*****22", d.getFixedPhone());
|
||||||
|
assertEquals("530321**********11", d.getIdCard());
|
||||||
|
assertEquals("******", d.getPassword());
|
||||||
|
assertEquals("132****5917", d.getPhoneNumber());
|
||||||
|
assertEquals("#######", d.getSlider1());
|
||||||
|
assertEquals("ABC*EFG", d.getSlider2());
|
||||||
|
assertEquals("*******", d.getSlider3());
|
||||||
|
assertEquals("1****@eamil.com", d.getEmail());
|
||||||
|
assertEquals("你好,我是*", d.getRegex());
|
||||||
|
assertEquals("北京市海淀区上地十街10号*", d.getAddress());
|
||||||
|
assertEquals("芋道源码", d.getOrigin());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class DesensitizeDemo {
|
||||||
|
@ChineseName
|
||||||
|
private String userName;
|
||||||
|
@BankCard
|
||||||
|
private String bankCard;
|
||||||
|
@CarLicense
|
||||||
|
private String carLicense;
|
||||||
|
@FixedPhone
|
||||||
|
private String fixedPhone;
|
||||||
|
@IdCard
|
||||||
|
private String idCard;
|
||||||
|
@Password
|
||||||
|
private String password;
|
||||||
|
@PhoneNumber
|
||||||
|
private String phoneNumber;
|
||||||
|
@Slider(prefixKeep = 6,suffixKeep = 1,replacer = "#")
|
||||||
|
private String slider1;
|
||||||
|
@Slider(prefixKeep = 3,suffixKeep = 3)
|
||||||
|
private String slider2;
|
||||||
|
@Slider(prefixKeep = 10)
|
||||||
|
private String slider3;
|
||||||
|
@Email
|
||||||
|
private String email;
|
||||||
|
@Regex(regex = "芋道源码",replacer = "*")
|
||||||
|
private String regex;
|
||||||
|
@Address
|
||||||
|
private String address;
|
||||||
|
private String origin;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package cn.iocoder.yudao.framework.desensitize.core.slider.annotation;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.base.annotation.DesensitizeBy;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.handler.AddressHandler;
|
||||||
|
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
|
||||||
|
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 地址
|
||||||
|
*
|
||||||
|
* @author gaibu
|
||||||
|
*/
|
||||||
|
@Documented
|
||||||
|
@Target({ElementType.FIELD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@JacksonAnnotationsInside
|
||||||
|
@DesensitizeBy(handler = AddressHandler.class)
|
||||||
|
public @interface Address {
|
||||||
|
|
||||||
|
String replacer() default "*";
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package cn.iocoder.yudao.framework.desensitize.core.slider.handler;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.base.handler.DesensitizationHandler;
|
||||||
|
import cn.iocoder.yudao.framework.desensitize.core.slider.annotation.Address;
|
||||||
|
|
||||||
|
public class AddressHandler implements DesensitizationHandler<Address> {
|
||||||
|
@Override
|
||||||
|
public String desensitize(String origin, Address annotation) {
|
||||||
|
return origin + annotation.replacer();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user