Skip to content

Commit b09f79f

Browse files
committed
Guard tests against versions with different metadata behavior for deleteVersionAfter.
Resolves see gh-432.
1 parent 1238b47 commit b09f79f

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

spring-vault-core/src/main/java/org/springframework/vault/support/VaultMetadataResponse.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.time.Period;
2121
import java.util.List;
2222

23+
import org.springframework.lang.Nullable;
24+
2325
/**
2426
* Value object to bind Vault HTTP kv read metadata API responses.
2527
*
@@ -84,8 +86,9 @@ public int getCurrentVersion() {
8486

8587
/**
8688
* @return the duration after which a secret is to be deleted. {@link Period#ZERO} for
87-
* unlimited duration.
89+
* unlimited duration. Versions prior to Vault 1.2 may return {@code null}.
8890
*/
91+
@Nullable
8992
public Duration getDeleteVersionAfter() {
9093
return this.deleteVersionAfter;
9194
}

spring-vault-core/src/test/java/org/springframework/vault/core/VaultKeyValueMetadataTemplateIntegrationTests.java

+25-4
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,22 @@
3030
import org.springframework.vault.support.VaultMetadataResponse;
3131
import org.springframework.vault.support.VaultResponse;
3232
import org.springframework.vault.support.Versioned;
33+
import org.springframework.vault.util.Version;
3334

3435
import static org.assertj.core.api.Assertions.assertThat;
3536

37+
import org.junit.jupiter.api.BeforeEach;
38+
import org.junit.jupiter.api.Test;
39+
import org.junit.jupiter.api.extension.ExtendWith;
40+
41+
import org.springframework.test.context.ContextConfiguration;
42+
import org.springframework.test.context.junit.jupiter.SpringExtension;
43+
import org.springframework.vault.support.VaultMetadataRequest;
44+
import org.springframework.vault.support.VaultMetadataResponse;
45+
import org.springframework.vault.support.VaultResponse;
46+
import org.springframework.vault.support.Versioned;
47+
import org.springframework.vault.util.Version;
48+
3649
/**
3750
* Integration tests for {@link VaultKeyValueMetadataOperations}.
3851
*
@@ -88,14 +101,19 @@ void shouldReadMetadataForANewKVEntry() {
88101
assertThat(metadataResponse.getCurrentVersion()).isEqualTo(1);
89102
assertThat(metadataResponse.getVersions()).hasSize(1);
90103
assertThat(metadataResponse.isCasRequired()).isFalse();
91-
assertThat(metadataResponse.getDeleteVersionAfter()).isEqualTo(Duration.ZERO);
92104
assertThat(metadataResponse.getCreatedTime().isBefore(Instant.now())).isTrue();
93105
assertThat(metadataResponse.getUpdatedTime().isBefore(Instant.now())).isTrue();
94106

95107
Versioned.Metadata version1 = metadataResponse.getVersions().get(0);
96108

97-
assertThat(version1.getDeletedAt()).isNull();
98-
assertThat(version1.getCreatedAt()).isBefore(Instant.now());
109+
if (prepare().getVersion().isGreaterThanOrEqualTo(Version.parse("1.2.0"))) {
110+
111+
assertThat(metadataResponse.getDeleteVersionAfter()).isEqualTo(Duration.ZERO);
112+
113+
assertThat(version1.getDeletedAt()).isNull();
114+
assertThat(version1.getCreatedAt()).isBefore(Instant.now());
115+
}
116+
99117
assertThat(version1.getVersion().getVersion()).isEqualTo(1);
100118
}
101119

@@ -130,7 +148,10 @@ void shouldUpdateKVMetadata() {
130148

131149
assertThat(metadataResponseAfterUpdate.isCasRequired()).isEqualTo(request.isCasRequired());
132150
assertThat(metadataResponseAfterUpdate.getMaxVersions()).isEqualTo(request.getMaxVersions());
133-
assertThat(metadataResponseAfterUpdate.getDeleteVersionAfter()).isEqualTo(duration);
151+
152+
if (prepare().getVersion().isGreaterThanOrEqualTo(Version.parse("1.2.0"))) {
153+
assertThat(metadataResponseAfterUpdate.getDeleteVersionAfter()).isEqualTo(duration);
154+
}
134155
}
135156

136157
@Test

0 commit comments

Comments
 (0)