diff --git a/spring-vault/pom.xml b/spring-vault/pom.xml
index 68856de2fc..b0b1590df8 100644
--- a/spring-vault/pom.xml
+++ b/spring-vault/pom.xml
@@ -15,6 +15,18 @@
0.0.1-SNAPSHOT
../parent-boot-2
+
+
+
+
+ org.springframework.data
+ spring-data-releasetrain
+ Moore-SR1
+ import
+ pom
+
+
+
@@ -26,6 +38,10 @@
spring-vault-core
${spring.vault.core.version}
+
+ org.springframework.data
+ spring-data-keyvalue
+
com.fasterxml.jackson.core
jackson-databind
@@ -38,7 +54,7 @@
- 2.1.1.RELEASE
+ 2.2.0.RELEASE
\ No newline at end of file
diff --git a/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java b/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java
index 548ebd4ff6..a0a9be83a7 100644
--- a/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java
+++ b/spring-vault/src/main/java/com/baeldung/springvault/Credentials.java
@@ -1,7 +1,12 @@
package com.baeldung.springvault;
+import org.springframework.data.annotation.Id;
+import org.springframework.vault.repository.mapping.Secret;
+
+@Secret(backend = "credentials", value = "myapp")
public class Credentials {
+ @Id
private String username;
private String password;
diff --git a/spring-vault/src/main/java/com/baeldung/springvault/CredentialsRepository.java b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsRepository.java
new file mode 100644
index 0000000000..41760114be
--- /dev/null
+++ b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsRepository.java
@@ -0,0 +1,9 @@
+package com.baeldung.springvault;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CredentialsRepository extends CrudRepository {
+
+}
diff --git a/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java
index 6a4b7cb784..454819c7ff 100644
--- a/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java
+++ b/spring-vault/src/main/java/com/baeldung/springvault/CredentialsService.java
@@ -1,6 +1,7 @@
package com.baeldung.springvault;
import java.net.URISyntaxException;
+import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -18,6 +19,9 @@ public class CredentialsService {
@Autowired
private VaultTemplate vaultTemplate;
+
+ @Autowired
+ private CredentialsRepository credentialsRepository;
/**
* To Secure Credentials
@@ -40,5 +44,15 @@ public class CredentialsService {
VaultResponseSupport response = vaultTemplate.read("credentials/myapp", Credentials.class);
return response.getData();
}
+
+ public Credentials saveCredentials(Credentials credentials) {
+
+ return credentialsRepository.save(credentials);
+ }
+
+ public Optional findById(String username) {
+
+ return credentialsRepository.findById(username);
+ }
}
diff --git a/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java b/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java
index dd8797aacc..a532eeabbf 100644
--- a/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java
+++ b/spring-vault/src/test/java/com/baeldung/springvault/VaultIntegrationTest.java
@@ -1,23 +1,26 @@
package com.baeldung.springvault;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import java.net.URISyntaxException;
+import java.util.Optional;
+
import org.junit.FixMethodOrder;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
+import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
-import java.net.URISyntaxException;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
/**
* These tests are requiring the {@code vault} command to be installed and available in the executing
* platform. So, if you intend to run them in your environment, the please install the vault and then
@@ -32,6 +35,9 @@ public class VaultIntegrationTest {
@Autowired
private CredentialsService credentialsService;
+
+ @MockBean
+ private CredentialsRepository credentialsRepository;
/**
* Test to secure credentials.
@@ -71,5 +77,42 @@ public class VaultIntegrationTest {
assertEquals("username", credentials.getUsername());
assertEquals("password", credentials.getPassword());
}
+
+ @Test
+ @Ignore
+ public void givenCredentials_whenSave_thenReturnCredentials() {
+ // Given
+ Credentials credentials = new Credentials("login", "password");
+ Mockito.when(credentialsRepository.save(credentials))
+ .thenReturn(credentials);
+
+ // When
+ Credentials savedCredentials = credentialsService.saveCredentials(credentials);
+
+ // Then
+ assertNotNull(savedCredentials);
+ assertEquals(savedCredentials.getUsername(), credentials.getUsername());
+ assertEquals(savedCredentials.getPassword(), credentials.getPassword());
+ }
+
+ @Test
+ @Ignore
+ public void givenId_whenFindById_thenReturnCredentials() {
+ // Given
+ Credentials credentials = new Credentials("login", "p@ssw@rd");
+ Mockito.when(credentialsRepository.findById("login"))
+ .thenReturn(Optional.of(credentials));
+
+ // When
+ Optional returnedCredentials = credentialsService.findById("login");
+
+ // Then
+ assertNotNull(returnedCredentials);
+ assertNotNull(returnedCredentials.get());
+ assertEquals(returnedCredentials.get()
+ .getUsername(), credentials.getUsername());
+ assertEquals(returnedCredentials.get()
+ .getPassword(), credentials.getPassword());
+ }
}