4

私はテストのためにユーザーを認証する必要がありますか?それが終わると、エンドポイントに承認が必要なため、私が書くすべてのテストは失敗します。セキュリティを有効にしたSpring Boot 1.4テスト?

テストコードは:私が見つけた

@RunWith(SpringRunner.class) 
@WebMvcTest(value = PostController.class) 
public class PostControllerTest { 

    @Autowired 
    private MockMvc mvc; 

    @MockBean 
    private PostService postService; 

    @Test 
    public void testHome() throws Exception { 
     this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(view().name("posts")); 
    } 


} 

一つの解決策は、@WebMvcTestにfalseに設定することで、安全なそれを無効にすることです。しかし、それは私がやろうとしていることではありません。

アイデア?

答えて

10

春のセキュリティはtest should be run as a particular userことを示すために使用することができます@WithMockUser注釈提供:

@Test 
public void basicAuth() throws Exception { 
    this.mockMvc 
      .perform(get("/").header(HttpHeaders.AUTHORIZATION, 
        "Basic " + Base64Utils.encodeToString("user:secret".getBytes()))) 
      .andExpect(status().isOk()); 
} 
:あなたは基本認証を使用している場合

@Test 
@WithMockUser(username = "test", password = "test", roles = "USER") 
public void withMockUser() throws Exception { 
    this.mockMvc.perform(get("/")).andExpect(status().isOk()); 
} 

あるいは、あなたが必要なAuthorizationヘッダを送信することができますが

+3

Spring Securityには[Testing HTTP Basic Authentication](http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#testing-http-basic-authentication)のサポートが組み込まれています。 。 ;) –

+0

私はこの例を見てきましたが、何らかの理由でアノテーションにアクセスすることはできません。私は何かを含めるために行方不明ですか? – Lithicas

+7

注釈は_spring-security-test_に含まれています。あなたのプロジェクトに依存関係_org.springframework.security:spring-security-test_を追加するだけです –

関連する問題