Skip to content

Commit 2d6cb4d

Browse files
committed
Fix integration test
1 parent d119638 commit 2d6cb4d

File tree

1 file changed

+42
-47
lines changed

1 file changed

+42
-47
lines changed

src/test/java/org/socialsignin/spring/data/dynamodb/config/AuditingViaJavaConfigRepositoriesIT.java

Lines changed: 42 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,28 @@
2323
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
2424
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
2525

26+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
27+
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
28+
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
2629
import org.junit.Before;
2730
import org.junit.Test;
2831
import org.junit.runner.RunWith;
2932
import org.slf4j.Logger;
3033
import org.slf4j.LoggerFactory;
3134
import org.socialsignin.spring.data.dynamodb.domain.sample.AuditableUser;
3235
import org.socialsignin.spring.data.dynamodb.domain.sample.AuditableUserRepository;
36+
import org.socialsignin.spring.data.dynamodb.domain.sample.CRUDOperationsIT;
37+
import org.socialsignin.spring.data.dynamodb.domain.sample.Playlist;
38+
import org.socialsignin.spring.data.dynamodb.mapping.DynamoDBMappingContext;
3339
import org.socialsignin.spring.data.dynamodb.repository.config.EnableDynamoDBRepositories;
40+
import org.socialsignin.spring.data.dynamodb.utils.DynamoDBLocalResource;
41+
import org.socialsignin.spring.data.dynamodb.utils.TableCreationListener;
3442
import org.springframework.beans.factory.annotation.Autowired;
3543
import org.springframework.context.annotation.Bean;
3644
import org.springframework.context.annotation.Configuration;
3745
import org.springframework.data.domain.AuditorAware;
3846
import org.springframework.test.context.ContextConfiguration;
47+
import org.springframework.test.context.TestExecutionListeners;
3948
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
4049
import org.springframework.util.Assert;
4150

@@ -47,23 +56,41 @@
4756
import static org.junit.Assert.assertTrue;
4857
import static org.mockito.Mockito.doReturn;
4958
import static org.mockito.Mockito.mock;
59+
import static org.springframework.test.context.TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS;
5060

5161
/**
5262
* Integration tests for auditing via Java config.
5363
*
5464
* @author Vito Limandibhrata
5565
*/
5666
@RunWith(SpringJUnit4ClassRunner.class)
57-
@ContextConfiguration(classes = AuditingViaJavaConfigRepositoriesIT.class)
58-
@Configuration
59-
@EnableDynamoDBAuditing(auditorAwareRef = "auditorProvider")
60-
@EnableDynamoDBRepositories(basePackageClasses = AuditableUserRepository.class)
61-
public class AuditingViaJavaConfigRepositoriesIT extends AbstractDynamoDBConfiguration {
67+
@ContextConfiguration(classes = {DynamoDBLocalResource.class, AuditingViaJavaConfigRepositoriesIT.TestAppConfig.class})
68+
@TestExecutionListeners(listeners = TableCreationListener.class, mergeMode = MERGE_WITH_DEFAULTS)
69+
70+
public class AuditingViaJavaConfigRepositoriesIT {
6271

6372
private static final Logger LOGGER = LoggerFactory.getLogger(AuditingViaJavaConfigRepositoriesIT.class);
6473

65-
private static final String DYNAMODB_PORT_PROPERTY = "dynamodb.port";
66-
private static final String PORT = System.getProperty(DYNAMODB_PORT_PROPERTY);
74+
@Configuration
75+
@EnableDynamoDBAuditing(auditorAwareRef = "auditorProvider")
76+
@EnableDynamoDBRepositories(mappingContextRef = "dynamoDBMappingContext", basePackages = "org.socialsignin.spring.data.dynamodb.domain.sample")
77+
public static class TestAppConfig {
78+
79+
@Bean(name = "auditorProvider")
80+
public AuditorAware<AuditableUser> auditorProvider() {
81+
LOGGER.info("auditorProvider");
82+
return mock(AuditorAware.class);
83+
}
84+
85+
@Bean
86+
public DynamoDBMappingContext dynamoDBMappingContext() {
87+
DynamoDBMappingContext mappingContext = new DynamoDBMappingContext();
88+
// Register entity
89+
// TODO but this shouldn't be nessassary?!
90+
mappingContext.getPersistentEntity(AuditableUser.class);
91+
return mappingContext;
92+
}
93+
}
6794

6895
@Autowired
6996
AuditableUserRepository auditableUserRepository;
@@ -73,48 +100,16 @@ public class AuditingViaJavaConfigRepositoriesIT extends AbstractDynamoDBConfigu
73100

74101
AuditableUser auditor;
75102

76-
@Override
77-
protected String[] getMappingBasePackages() {
78-
return new String[]{"org.socialsignin.spring.data.dynamodb.domain.sample"};
79-
}
80-
81-
@Bean(name = "auditorProvider")
82-
@SuppressWarnings("unchecked")
83-
public AuditorAware<AuditableUser> auditorProvider() {
84-
LOGGER.info("auditorProvider");
85-
return mock(AuditorAware.class);
86-
}
87-
88-
@Bean
89-
@Override
90-
public AmazonDynamoDB amazonDynamoDB() {
91-
Assert.notNull(PORT, "System property '" + DYNAMODB_PORT_PROPERTY + " not set!");
92-
93-
AmazonDynamoDB amazonDynamoDB = AmazonDynamoDBClientBuilder.standard()
94-
.withCredentials(new AWSStaticCredentialsProvider(amazonAWSCredentials()))
95-
.withEndpointConfiguration(new EndpointConfiguration(String.format("http://localhost:%s", PORT),
96-
Regions.DEFAULT_REGION.getName()))
97-
.build();
98-
return amazonDynamoDB;
99-
}
100-
101-
/**
102-
* Must return the same credential as
103-
* {@link org.socialsignin.spring.data.dynamodb.core.ConfigurationTI} otherwise
104-
* the repository will connect to different local DynamoDB instance hence it
105-
* will return no table found
106-
*
107-
* @return
108-
*/
109-
@Bean
110-
@Override
111-
public AWSCredentials amazonAWSCredentials() {
112-
return new BasicAWSCredentials("AWS-Key", "");
113-
}
103+
@Autowired
104+
private AmazonDynamoDB ddb;
114105

115106
@Before
116-
public void setup() {
117-
auditableUserRepository.deleteAll();
107+
public void setUp() throws InterruptedException {
108+
CreateTableRequest ctr = new DynamoDBMapper(ddb).generateCreateTableRequest(AuditableUser.class);
109+
ctr.withProvisionedThroughput(new ProvisionedThroughput(10L, 10L));
110+
ddb.createTable(ctr);
111+
// Thread.sleep(5 * 1000);
112+
118113
this.auditor = auditableUserRepository.save(new AuditableUser("auditor"));
119114
assertThat(this.auditor, is(notNullValue()));
120115

0 commit comments

Comments
 (0)