SpringBootTest-并非所有测试都保留身份验证

时间:2020-04-24 06:53:41

标签: spring-security authorization spring-boot-test

这是我的考试课程

@RunWith(SpringRunner.class)  
@SpringBootTest(classes = TestSpringBootConfiguration.class)   
@TestExecutionListeners({  
    DependencyInjectionTestExecutionListener.class,  
    CleanTablesTestExecutionListener.class,  
    TransactionDbUnitTestExecutionListener.class  
 })   
public class Test extends TestBase {

@Test
@DatabaseSetup({"Test-i-01.xml"})
@ExpectedDatabase(value = "Test-e-01.xml", assertionMode = DatabaseAssertionMode.NON_STRICT_UNORDERED)
public void when_updateX_thenSaveX() {
    given()
            .contentType(ContentType.JSON).body(input("i-01"))
            .auth().principalWithCredentials("test.user", "user")
            .when()
            .put(ACTION_PATH)
            .then()
            .statusCode(200);
}

@Test
@DatabaseSetup({"Test-i-02.xml"})
@ExpectedDatabase(value = "Test-e-02.xml", assertionMode = DatabaseAssertionMode.NON_STRICT_UNORDERED)
public void when_updateXY_thenSaveXY() {
    given()
            .contentType(ContentType.JSON).body(input("i-02"))
            .auth().principalWithCredentials("test.user", "user")
            .when()
            .put(ACTION_PATH)
            .then()
            .statusCode(200);
}
}

两个测试都设置了授权.auth().principalWithCredentials("test.user", "user")

如果我分别运行每个测试,则设置的授权将相应地由username = 'test.user'接管,但问题是我一起运行测试时,因为只有一个测试才具有授权集(username = 'test.user' ),而其他测试将适用username = 'anonymousUser'

我用于身份验证的bean是:

  @Bean
  @Scope(scopeName = "prototype", proxyMode = ScopedProxyMode.INTERFACES)  
   public Authentication authentication() {  
    return SecurityContextHolder.getContext().getAuthentication();  
  }

如果您有任何想法,可以如何为所有测试设置身份验证?谢谢。

0 个答案:

没有答案