2016-07-25 90 views
1

我正在使用@WithMockUser測試在簡單的彈簧引導Web服務中使用基本身份驗證保護的控制器方法。我的註釋看起來像:@WithMockUser忽略用戶名,密碼字段?

@WithMockUser(username = 'admin', password = 'mypassword', roles = ['ADMIN']) 

看來不過,用戶名和密碼字段被忽略。即使我指定了不正確的用戶名或密碼,測試也會通過。然而,角色字段確實似乎被使用,並且測試失敗且具有無效角色。

也許我誤解了這個註解的作用,但是我應該能夠使用它來驗證提供給安全方法的不正確憑據的行爲嗎?

謝謝!

--John

+0

不,你不應該。它做什麼它重新填充給定用戶的'SecurityContext'。它不允許你測試其他任何東西。如果您需要,您需要使用Springs Mock MVC測試支持來進行系統測試或完整集成測試,包括手動註冊您的安全配置。 –

回答

0

如果您正在使用Spring MVC的測試(即MockMvc),你會做類似如下:

mvc.perform(get("/").with(httpBasic("user","password"))) // ... 

這的的Testing HTTP Basic Authentication部分記錄Spring Security參考手冊。

如果您已經配置了測試以使用嵌入式Servlet容器啓動Spring Boot,則可以使用支持「基本HTTP身份驗證(使用用戶名和密碼)」的Spring Boot的TestRestTemplate