亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 幫助中心 > 正文

SpringSecurity 測試實戰

2024-07-09 22:41:59
字體:
來源:轉載
供稿:網友

引言

試題管理系統的安全模塊使用Spring Security,代碼從原華軟倉庫移植,在移植的過程中,發現原測試編寫的不好,遂在新系統中對安全模塊測試進行了重構。

Spring 測試

添加@SpringBootTest注解,意為這是一個基于SpringBoot的單元測試。

SpringBoot在官方的Guide中提供了多種測試方式。

@SpringBootTest注解中的webEnvironment屬性可以配置測試環境,默認為MOCK環境。

/** * The type of web environment to create when applicable. Defaults to * {@link WebEnvironment#MOCK}. * @return the type of web environment */WebEnvironment webEnvironment() default WebEnvironment.MOCK;

模擬環境測試

啟用Spring Security后,單元測試中對api的測試會被Spring Security的Filter進行攔截,所以測試之前需要進行用戶登錄操作。

之前都是使用比較笨重的方法,寫一個@Before,@Before里進行登錄,之后再執行測試方法。

最近在閱讀Spring Security Test文檔之后,終于找到一種模擬登錄十分簡便的方法,@WithMockUser。

test method with mock user - spring security test

引入Spring Security Test依賴:

<!-- Spring Security Test --><dependency>  <groupId>org.springframework.security</groupId>  <artifactId>spring-security-test</artifactId>  <scope>test</scope></dependency>

示例代碼如下:

@SpringBootTest@RunWith(SpringRunner.class)@AutoConfigureMockMvc@WithMockUser(username = "admin", password = "admin")public class ControllerTest {  @Autowired  protected MockMvc mockMvc;  @Test  void contextLoads() {  }}

注:@RunWith(SpringRunner.class)表示當前測試使用org.springframework.test.context.junit4.SpringRunner類來執行,最新的SpringBoot版本中已經全面啟用junit5,不推薦使用junit4.SpringRunner,因為未經過內部學習與測試,未在生產項目中使用。

真實環境測試

為了減少學習與溝通的成本,之前,所有的測試規定都在MOCK環境下,使用MockMVC進行api測試。

雖然MOCK環境能解決大部分的問題,并且可以在不啟動Server的情況下直接進行測試,但在某些場景下,仍需要真實環境下的HTTP服務與請求測試。

啟用Spring Security后,MockMVC是直接測試控制器,并非在真實的HTTP服務器下進行測試,MOCK環境中使用的是MockHttpSession,這不是標準的Session實現,沒有加入對COOKIE的支持,所以在測試安全模塊時,無法像瀏覽器一樣測試COOKIE等認證信息。

spring mockmvc doesn't contain cookies - stackoverflow

去StackOverflow上也沒有解決方案,答案推薦使用TestRestTemplate+真實的服務器環境進行單元測試。

將webEnvironment配置為SpringBootTest.WebEnvironment.RANDOM_PORT,即表示當前測試在一個隨機端口的真實Web環境下運行。

@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)class AuthControllerTest {  @Autowired  private TestRestTemplate restTemplate;}

測試時使用TestRestTemplate進行網絡請求的發送,真實模擬Web服務器環境。

示例代碼如下:

logger.debug("3: 測試用戶名密碼正確");username = RIGHT_USERNAME;password = RIGHT_PASSWORD;response = this.restTemplate    .withBasicAuth(username, password)    .getForEntity(CONFIG_LOGIN, Void.class);logger.debug("斷言: 狀態碼為200");assertThat(response.getStatusCode().value()).isEqualTo(HttpStatus.OK.value());logger.debug("獲取 response 的 Set-Cookie 信息,并斷言");String setCookie = response.getHeaders().getFirst(HttpHeaders.SET_COOKIE);assertThat(setCookie).isNotNull();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
这里精品视频免费| 7m第一福利500精品视频| 日韩精品在线播放| 久久99热精品这里久久精品| 亚洲国产成人爱av在线播放| 久久九九有精品国产23| 国产综合在线观看视频| 91影视免费在线观看| 欧美亚洲国产成人精品| 少妇高潮久久77777| 久久久999精品视频| 有码中文亚洲精品| 国产精品永久免费在线| 亚洲最大福利网站| 欧美丰满片xxx777| 国产一区二区三区视频免费| 伊人亚洲福利一区二区三区| 日韩精品免费观看| 日韩精品视频在线| 欧美精品videosex牲欧美| 精品一区二区亚洲| 国产成人综合精品| 中文字幕亚洲一区在线观看| 欧美不卡视频一区发布| 精品国产精品自拍| 亚洲人成77777在线观看网| 日韩精品免费在线播放| 亚洲一区二区三区四区在线播放| 欧美日韩国产精品一区| 国产精品精品久久久久久| 国产日韩av在线| 欧洲午夜精品久久久| 亚洲高清一区二| 亚洲精品suv精品一区二区| 最近2019免费中文字幕视频三| 亚洲激情国产精品| 中文在线资源观看视频网站免费不卡| 国产日韩精品在线| 亚洲天堂av图片| 精品国产精品三级精品av网址| 久久久久日韩精品久久久男男| 亚洲在线观看视频网站| 久久国产精品免费视频| 国产精品av网站| 91精品国产精品| 欧美日韩aaaa| 亚洲一级免费视频| 欧美一区二区三区免费观看| 国产精品丝袜久久久久久高清| 欧美激情xxxx性bbbb| 欧美成人亚洲成人| 国产一区二区三区直播精品电影| 成人高h视频在线| 久久天天躁狠狠躁夜夜爽蜜月| 在线观看欧美视频| 日韩中文字幕视频在线观看| 高清欧美一区二区三区| 亚洲摸下面视频| 欧美亚洲日本黄色| 欧美专区在线播放| 国产午夜精品美女视频明星a级| 欧美性猛交xxxx免费看| 茄子视频成人在线| 国产999精品久久久影片官网| 国产精品第一视频| 中文字幕亚洲一区| 国产精品久久77777| 97色在线观看| 久久久精品久久久久| 国产精品久久久久久中文字| 久久精品91久久久久久再现| 欧美福利小视频| 国产成人精品在线| 久久国产天堂福利天堂| 日韩电影免费观看在线观看| 亚洲福利视频网| 有码中文亚洲精品| 日韩激情视频在线| 欧美午夜精品久久久久久浪潮| 国产精品永久免费视频| 不卡av电影院| 91精品久久久久久久久久另类| 亚洲一品av免费观看| 亚洲一区二区自拍| 日本欧美在线视频| 性欧美在线看片a免费观看| 成人激情综合网| 一区二区欧美激情| 国产精品色悠悠| 中文字幕亚洲欧美一区二区三区| 伊人久久综合97精品| 91视频免费网站| 欧美一区第一页| 欧美猛男性生活免费| 亚洲精品国产精品久久清纯直播| 91国内揄拍国内精品对白| 美女久久久久久久| 欧美最猛性xxxxx(亚洲精品)| 中文字幕日韩高清| 国产丝袜一区视频在线观看| 日韩网站免费观看| 亚洲成人久久电影| 欧美午夜精品久久久久久久| 欧美成人中文字幕在线| 成人免费淫片aa视频免费| 欧美国产精品日韩| 亚洲精品在线视频| 亚洲国产小视频在线观看| 国产精品久久久久久久av电影| 奇米成人av国产一区二区三区| 91亚洲精品在线| 一区二区三区视频在线| 欧美精品做受xxx性少妇| 日韩av在线影视| 一区二区三区四区精品| 日韩一区在线视频| 国产亚洲精品va在线观看| 日本在线精品视频| 亚洲理论电影网| 亚洲成色777777在线观看影院| 亚洲qvod图片区电影| 欧美日韩国产在线播放| 欧美黄色成人网| 成人福利视频网| 欧美老女人性视频| 亚洲毛片在线观看.| 欧美xxxx14xxxxx性爽| 亚洲人成网站999久久久综合| 久久久精品一区二区| 正在播放欧美视频| 黑人与娇小精品av专区| 色综合天天综合网国产成人网| 亚洲国产中文字幕在线观看| 国产精品视频在线播放| 国产精品18久久久久久首页狼| 精品国产31久久久久久| 精品久久香蕉国产线看观看gif| 日韩免费av片在线观看| 欧美日韩一区二区三区在线免费观看| 日本免费久久高清视频| 亚洲www永久成人夜色| 热久久视久久精品18亚洲精品| 亚洲电影成人av99爱色| 色伦专区97中文字幕| 久热精品视频在线| 中文字幕亚洲欧美一区二区三区| 亚洲激情视频在线观看| 国产精品久久久久久久久久99| 亚洲毛片在线看| 亚洲精品xxxx| 日韩欧美中文第一页| 欧美区在线播放| 欧美性一区二区三区| 色诱女教师一区二区三区| 高清日韩电视剧大全免费播放在线观看| 久久成人这里只有精品| 亚洲白拍色综合图区| 91精品久久久久久久| 久久久亚洲网站| 国产日韩欧美91| 久热爱精品视频线路一| 久久久久久久一| 久久九九亚洲综合| 亚洲精品国产欧美|