Это мой тестовый класс
@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();
}
Если у вас есть идеи, как можно установить аутентификацию, установленную для всех тестов? Спасибо.