package org.socialsignin.spring.data.dynamodb.core;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import org.socialsignin.spring.data.dynamodb.domain.sample.User;
import java.util.UUID;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
/**
* Integration test that interacts with DynamoDB Local instance.
*/
@Ignore
public class DynamoDBTemplateIT {
private static final String PORT = System.getProperty("dynamodb.port");
private DynamoDBTemplate dynamoDBTemplate;
@Before
public void setUp() {
AmazonDynamoDB dynamoDB = new AmazonDynamoDBClient(new BasicAWSCredentials("AWS-Key", ""));
dynamoDB.setEndpoint(String.format("http://localhost:%s", DynamoDBTemplateIT.PORT));
this.dynamoDBTemplate = new DynamoDBTemplate(dynamoDB);
}
@Test
public void testUser_CRUD() {
// Given a entity to save.
User user = new User();
user.setName("John Doe");
user.setNumberOfPlaylists(10);
user.setId(UUID.randomUUID().toString());
// Save it to DB.
dynamoDBTemplate.save(user);
// Retrieve it from DB.
User retrievedUser = dynamoDBTemplate.load(User.class, user.getId());
// Verify the details on the entity.
assert retrievedUser.getName().equals(user.getName());
assert retrievedUser.getId().equals(user.getId());
assert retrievedUser.getNumberOfPlaylists() == user.getNumberOfPlaylists();
// Update the entity and save.
retrievedUser.setNumberOfPlaylists(20);
dynamoDBTemplate.save(retrievedUser);
retrievedUser = dynamoDBTemplate.load(User.class, user.getId());
assert retrievedUser.getNumberOfPlaylists() == 20;
// Delete.
dynamoDBTemplate.delete(retrievedUser);
// Get again.
assert dynamoDBTemplate.load(User.class, user.getId()) == null;
}
}