最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring OAuth2.0 單元測試解決方案

 更新時間:2020年10月12日 11:52:57   作者:冷冷zz  
這篇文章主要介紹了Spring OAuth2.0 單元測試解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

為什么需要單元測試

單元測試擁有保證代碼質(zhì)量、盡早發(fā)現(xiàn)軟件 Bug、簡化調(diào)試過程、促進(jìn)變化并簡化集成、使流程更靈活等優(yōu)勢。單元測試是針對代碼單元的獨(dú)立測試,核心是“獨(dú)立”,優(yōu)勢來源也是這種獨(dú)立性,而所面臨的不足也正是因?yàn)槠洫?dú)立性:既然是“獨(dú)立”,就難以測試與其他代碼和依賴環(huán)境的相互關(guān)系。單元測試與系統(tǒng)測試是互補(bǔ)而非代替關(guān)系。單元測試的優(yōu)勢,正是系統(tǒng)測試的不足,單元測試的不足,又恰是系統(tǒng)測試的優(yōu)勢。不能將單元測試當(dāng)做解決所有問題的萬金油,而需理解其優(yōu)勢與不足,揚(yáng)長避短,與系統(tǒng)測試相輔相成,實(shí)現(xiàn)測試的最大效益。

OAuth2 系統(tǒng)單元測試?yán)щy

  • 接口測試依賴于 UPMS (用戶權(quán)限管理),無法做到解耦獨(dú)立
  • spring-security-test 模塊未提供相關(guān)標(biāo)準(zhǔn)實(shí)現(xiàn)
  • 場景復(fù)雜既要包含無狀態(tài) token 調(diào)用,又要保證上線文傳遞業(yè)務(wù)

解決方案

參考 @WithMockUser ,在 Mock 攔截器中自動執(zhí)行相關(guān)的增強(qiáng)(token 獲?。?,并通過擴(kuò)展 WithSecurityContextFactory 實(shí)現(xiàn)上下文 token 的傳遞。具體可以參考源碼 pig-common-test[1]

引入依賴

<dependency>
 <groupId>com.pig4cloud</groupId>
 <artifactId>pig-common-test</artifactId>
 <version>${last.version}</version>
 <scope>test</scope>
</dependency>

單元測試 Controller 接口

指定認(rèn)證中心接口

配置在 test/resources/application.yml

security:
 oauth2:
  client:
   access-token-uri: http://pig-gateway:3000/oauth/token

模擬測試 controller 接口

@RunWith(SpringRunner.class)
@SpringBootTest
public class SysLogControllerTest {

 private MockMvc mvc;

 @Autowired
 private WebApplicationContext applicationContext; // 注入WebApplicationContext

 @Before
 public void setUp() {
 this.mvc = MockMvcBuilders.webAppContextSetup(applicationContext).build();
 }

 @Test
 @SneakyThrows
 @WithMockOAuth2User
 public void testMvcToken() {
 mvc.perform(delete("/log/1").with(token())).andExpect(status().isOk());
 }
}

模擬測試 FeignClient 傳遞 token

直接注入 FeignClient 實(shí)現(xiàn)即可 使用 @WithMockOAuth2User 注解測試類即可

WithMockOAuth2User 屬性說明

當(dāng)前用例獲取 token 使用的用戶名

String username() default "admin";

當(dāng)前用例獲取 token 使用的密碼

String password() default "123456";

寫在最后

源碼參考 pig-common-test[1] 模塊

目前僅在 pig 2.10 做了實(shí)現(xiàn),理論支持低版本,直接 install 此模塊即可

參考資料

[1] pig-common-test: https://gitee.com/log4j/pig/tree/master/pig-common/pig-common-test

到此這篇關(guān)于Spring OAuth2.0 單元測試解決方案的文章就介紹到這了,更多相關(guān)Spring OAuth2.0 單元測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評論

肇源县| 阿图什市| 新民市| 乡城县| 射阳县| 忻城县| 若尔盖县| 防城港市| 盈江县| 雷山县| 侯马市| 财经| 乌鲁木齐县| 衡阳县| 玉门市| 平江县| 海盐县| 阜城县| 莫力| 临潭县| 和静县| 石首市| 平陆县| 吉木乃县| 邵阳市| 杭锦后旗| 保亭| 武汉市| 永年县| 北海市| 武邑县| 莱芜市| 彩票| 信阳市| 西贡区| 石城县| 罗城| 义乌市| 吉木萨尔县| 壤塘县| 定州市|