SpringBootTest - Аутентификация не сохраняется во всех тестах - PullRequest
0 голосов
/ 24 апреля 2020

Это мой тестовый класс

@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
  @Scope(scopeName = "prototype", proxyMode = ScopedProxyMode.INTERFACES)  
   public Authentication authentication() {  
    return SecurityContextHolder.getContext().getAuthentication();  
  }

Если у вас есть идеи, как можно установить аутентификацию, установленную для всех тестов? Спасибо.

...