@Override public void setEnvironment(Environment environment) { this.factory = new EmbeddedDataSourceFactory(environment); }
@Override public void afterPropertiesSet() throws Exception { this.embeddedDatabase = this.factory.getEmbeddedDatabase(); }
@Override protected boolean isUseDefaultFilters() { return this.annotation.useDefaultFilters(); }
/** * Bootstrap class for dummy spring boot app having no enabled dataflow server configs. * <p> * Multiple SpringBootApplication's needs to be in their own directories due to component * scanning. * * @author Janne Valkealahti */ @SpringBootApplication(exclude = { SessionAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class, SecurityAutoConfiguration.class, UserDetailsServiceAutoConfiguration.class, LocalDeployerAutoConfiguration.class, CloudFoundryDeployerAutoConfiguration.class, KubernetesAutoConfiguration.class }) @AutoConfigureTestDatabase public class LocalTestNoDataFlowServer { public static void main(String[] args) { SpringApplication.run(LocalTestNoDataFlowServer.class, args); } }
@Override protected ComponentScan.Filter[] getFilters(FilterType type) { switch (type) { case INCLUDE: return this.annotation.includeFilters(); case EXCLUDE: return this.annotation.excludeFilters(); } throw new IllegalStateException("Unsupported type " + type); }
@Bean @ConditionalOnProperty(prefix = "spring.test.database", name = "replace", havingValue = "AUTO_CONFIGURED") @ConditionalOnMissingBean public DataSource dataSource() { return new EmbeddedDataSourceFactory(this.environment).getEmbeddedDatabase(); }
private void process(BeanDefinitionRegistry registry, ConfigurableListableBeanFactory beanFactory) { BeanDefinitionHolder holder = getDataSourceBeanDefinition(beanFactory); if (holder != null) { String beanName = holder.getBeanName(); boolean primary = holder.getBeanDefinition().isPrimary(); logger.info("Replacing '" + beanName + "' DataSource bean with " + (primary ? "primary " : "") + "embedded version"); registry.removeBeanDefinition(beanName); registry.registerBeanDefinition(beanName, createEmbeddedBeanDefinition(primary)); } }
@Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { Assert.isInstanceOf(ConfigurableListableBeanFactory.class, registry, "Test Database Auto-configuration can only be " + "used with a ConfigurableListableBeanFactory"); process(registry, (ConfigurableListableBeanFactory) registry); }
@Bean @ConditionalOnProperty(prefix = "spring.test.database", name = "replace", havingValue = "ANY", matchIfMissing = true) public static EmbeddedDataSourceBeanFactoryPostProcessor embeddedDataSourceBeanFactoryPostProcessor() { return new EmbeddedDataSourceBeanFactoryPostProcessor(); }
@Override protected String[] getProperties(Class<?> testClass) { JdbcTest annotation = AnnotatedElementUtils.getMergedAnnotation(testClass, JdbcTest.class); return (annotation != null) ? annotation.properties() : null; }
@RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureTestDatabase public class ArticleRepositoryTransactionTest { @Autowired private ArticleRepository articleRepository; @Autowired private UserRepository userRepository; @Autowired private ArticleMapper articleMapper; @Test public void transactional_test() throws Exception { User user = new User("aisensiy@gmail.com", "aisensiy", "123", "bio", "default"); userRepository.save(user); Article article = new Article("test", "desc", "body", new String[]{"java", "spring"}, user.getId()); articleRepository.save(article); Article anotherArticle = new Article("test", "desc", "body", new String[]{"java", "spring", "other"}, user.getId()); try { articleRepository.save(anotherArticle); } catch (Exception e) { assertThat(articleMapper.findTag("other"), is(false)); } } }
@RunWith(SpringRunner.class) @DataJpaTest @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class}) public class MessageRepositoryTest { @Autowired private MessageRepository messageRepository; @Test @DatabaseSetup("no-mentioned-user-info.xml") public void userShouldBeNullInMentions() { List<Message> messages = messageRepository.findAllEager(); Assert.assertEquals(messages.size(), 1); messages.stream() .flatMap(m -> m.getMentions().stream()) .map(Mention::getUser) .forEach(Assert::assertNull); } }
@SpringBootTest @RunWith(SpringRunner.class) @AutoConfigureMockMvc @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) @TestExecutionListeners({SpringBootDependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class}) public class StatisticResourceIntTest { @Autowired private MockMvc mockMvc; @Test @DatabaseSetup("user-statistic.xml") public void shouldReturnExpectedJson() throws Exception { mockMvc.perform(get("/api/v1/statistics/users") .accept(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON_UTF8)) .andExpect(status().isOk()) .andExpect(jsonPath("$.mostActive.id").value("53307734c3599d1de448e192")) .andExpect(jsonPath("$.mostMentioned.id").value("53316dc47bfc1a000000000f")); } }
@RunWith(SpringRunner.class) @DataJpaTest @ActiveProfiles("test") @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class BookJpaTest { @Autowired private BookRepository bookRepository; @Test public void book_save_test() { final Book book = new Book("title", 1000D); final Book saveBook = bookRepository.save(book); assertThat(saveBook.getId(), is(notNullValue())); } @Test public void book_save_and_find() { final Book book = new Book("title", 1000D); final Book saveBook = bookRepository.save(book); final Book findBook = bookRepository.findById(saveBook.getId()).get(); assertThat(findBook.getId(), is(notNullValue())); } }
@RunWith(SpringRunner.class) @DataJpaTest @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class}) public class UserRepositoryTest {
@RunWith(SpringRunner.class) @ActiveProfiles(value = "unit-test", resolver = DatabaseProfileResolver.class) @DataJpaTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class UuidGeneratorTest { @Autowired private EncryptionKeyCanaryRepository repository; @Test public void generate_ifNoUUIDSet_itGeneratesAUUID() { final EncryptionKeyCanary encryptionKeyCanary = new EncryptionKeyCanary(); assertNull(encryptionKeyCanary.getUuid()); final EncryptionKeyCanary savedCanary = repository.saveAndFlush(encryptionKeyCanary); assertNotNull(savedCanary.getUuid()); } @Test public void generate_ifUUIDSet_itKeepsUUID() { final EncryptionKeyCanary encryptionKeyCanary = new EncryptionKeyCanary(); final UUID uuid = UUID.randomUUID(); encryptionKeyCanary.setUuid(uuid); final EncryptionKeyCanary savedCanary = repository.saveAndFlush(encryptionKeyCanary); assertThat(savedCanary.getUuid(), equalTo(uuid)); } }
@RunWith(SpringRunner.class) @ActiveProfiles(value = "unit-test", resolver = DatabaseProfileResolver.class) @DataJpaTest @AutoConfigureTestDatabase(replace = Replace.NONE) public class CredentialVersionDataRepositoryTest {
@SpringBootTest @RunWith(SpringRunner.class) @AutoConfigureMockMvc @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) public class MessageResourceIntTest {
@RunWith(SpringRunner.class) @DataJpaTest @Import(DefaultMessageService.class) @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2) @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DbUnitTestExecutionListener.class}) public class MessageServiceTest {
@RunWith(SpringRunner.class) @ActiveProfiles(value = "unit-test", resolver = DatabaseProfileResolver.class) @DataJpaTest @AutoConfigureTestDatabase(replace = Replace.NONE) public class EncryptionKeyCanaryDataServiceTest {