From abf486b73e7ebe5aa90074d8b12a710e00cb88eb Mon Sep 17 00:00:00 2001 From: lbw Date: Fri, 15 Jan 2021 17:11:39 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=E5=AE=9E=E7=8E=B0=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20=E7=A7=9F=E6=88=B7=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit :sparkles: Introducing new features. 单元测试实现支持 租户隔离 --- pigx-common/pigx-common-test/pom.xml | 4 ++++ .../pigx/test/WithMockSecurityContextFactory.java | 13 ++++++++++++- .../pigx/test/annotation/WithMockOAuth2User.java | 12 +++++++++--- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/pigx-common/pigx-common-test/pom.xml b/pigx-common/pigx-common-test/pom.xml index 005d07d61..659e9a5bb 100755 --- a/pigx-common/pigx-common-test/pom.xml +++ b/pigx-common/pigx-common-test/pom.xml @@ -15,6 +15,10 @@ pigx oauth 2.0 单元测试工具类 + + com.pig4cloud + pigx-common-data + com.pig4cloud pigx-common-security diff --git a/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/WithMockSecurityContextFactory.java b/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/WithMockSecurityContextFactory.java index a882b73ce..7e8958bdd 100644 --- a/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/WithMockSecurityContextFactory.java +++ b/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/WithMockSecurityContextFactory.java @@ -2,9 +2,11 @@ package com.pig4cloud.pigx.test; import java.nio.charset.StandardCharsets; +import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; +import com.pig4cloud.pigx.common.data.tenant.TenantContextHolder; import com.pig4cloud.pigx.test.annotation.WithMockOAuth2User; import org.springframework.http.HttpEntity; @@ -30,8 +32,13 @@ import org.springframework.web.client.RestTemplate; */ public class WithMockSecurityContextFactory implements WithSecurityContextFactory { + private final String TOKEN_URL = "http://pigx-auth/oauth/token"; + @Override public SecurityContext createSecurityContext(WithMockOAuth2User oAuth2User) { + // 0. 初始化环境 + TenantContextHolder.setTenantId(oAuth2User.tenant()); + // 1. 请求认证中心获取token String token = getToken(oAuth2User); @@ -71,8 +78,12 @@ public class WithMockSecurityContextFactory implements WithSecurityContextFactor HttpEntity> requestEntity = new HttpEntity<>(requestBody, requestHeaders); RestTemplate restTemplate = SpringContextHolder.getBean(RestTemplate.class); + + // 优先获取配置文件URI 配置 + String url = StrUtil.isBlank(clientProperties.getAccessTokenUri()) ? TOKEN_URL : clientProperties + .getAccessTokenUri(); String result = restTemplate - .exchange(clientProperties.getAccessTokenUri(), HttpMethod.POST, requestEntity, String.class).getBody(); + .exchange(url, HttpMethod.POST, requestEntity, String.class).getBody(); return JSONUtil.parseObj(result).getStr("access_token"); } diff --git a/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/annotation/WithMockOAuth2User.java b/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/annotation/WithMockOAuth2User.java index 23bc599f8..911c6d1ed 100644 --- a/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/annotation/WithMockOAuth2User.java +++ b/pigx-common/pigx-common-test/src/main/java/com/pig4cloud/pigx/test/annotation/WithMockOAuth2User.java @@ -1,11 +1,12 @@ package com.pig4cloud.pigx.test.annotation; -import com.pig4cloud.pigx.test.WithMockSecurityContextFactory; -import org.springframework.security.test.context.support.WithSecurityContext; - import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import com.pig4cloud.pigx.test.WithMockSecurityContextFactory; + +import org.springframework.security.test.context.support.WithSecurityContext; + /** * @author lengleng * @date 2020/9/22 @@ -26,4 +27,9 @@ public @interface WithMockOAuth2User { */ String password() default "123456"; + /** + * 租户编号 默认租户编号1 + */ + int tenant() default 1; + } \ No newline at end of file