Guard tests against versions with different metadata behavior for deleteVersionAfter.

Resolves see gh-432.
This commit is contained in:
Mark Paluch
2020-05-28 11:08:26 +02:00
parent 1238b47950
commit b09f79fb4f
2 changed files with 29 additions and 5 deletions

View File

@@ -20,6 +20,8 @@ import java.time.Instant;
import java.time.Period;
import java.util.List;
import org.springframework.lang.Nullable;
/**
* Value object to bind Vault HTTP kv read metadata API responses.
*
@@ -84,8 +86,9 @@ public class VaultMetadataResponse {
/**
* @return the duration after which a secret is to be deleted. {@link Period#ZERO} for
* unlimited duration.
* unlimited duration. Versions prior to Vault 1.2 may return {@code null}.
*/
@Nullable
public Duration getDeleteVersionAfter() {
return this.deleteVersionAfter;
}

View File

@@ -30,9 +30,22 @@ import org.springframework.vault.support.VaultMetadataRequest;
import org.springframework.vault.support.VaultMetadataResponse;
import org.springframework.vault.support.VaultResponse;
import org.springframework.vault.support.Versioned;
import org.springframework.vault.util.Version;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.vault.support.VaultMetadataRequest;
import org.springframework.vault.support.VaultMetadataResponse;
import org.springframework.vault.support.VaultResponse;
import org.springframework.vault.support.Versioned;
import org.springframework.vault.util.Version;
/**
* Integration tests for {@link VaultKeyValueMetadataOperations}.
*
@@ -88,14 +101,19 @@ class VaultKeyValueMetadataTemplateIntegrationTests extends AbstractVaultKeyValu
assertThat(metadataResponse.getCurrentVersion()).isEqualTo(1);
assertThat(metadataResponse.getVersions()).hasSize(1);
assertThat(metadataResponse.isCasRequired()).isFalse();
assertThat(metadataResponse.getDeleteVersionAfter()).isEqualTo(Duration.ZERO);
assertThat(metadataResponse.getCreatedTime().isBefore(Instant.now())).isTrue();
assertThat(metadataResponse.getUpdatedTime().isBefore(Instant.now())).isTrue();
Versioned.Metadata version1 = metadataResponse.getVersions().get(0);
assertThat(version1.getDeletedAt()).isNull();
assertThat(version1.getCreatedAt()).isBefore(Instant.now());
if (prepare().getVersion().isGreaterThanOrEqualTo(Version.parse("1.2.0"))) {
assertThat(metadataResponse.getDeleteVersionAfter()).isEqualTo(Duration.ZERO);
assertThat(version1.getDeletedAt()).isNull();
assertThat(version1.getCreatedAt()).isBefore(Instant.now());
}
assertThat(version1.getVersion().getVersion()).isEqualTo(1);
}
@@ -130,7 +148,10 @@ class VaultKeyValueMetadataTemplateIntegrationTests extends AbstractVaultKeyValu
assertThat(metadataResponseAfterUpdate.isCasRequired()).isEqualTo(request.isCasRequired());
assertThat(metadataResponseAfterUpdate.getMaxVersions()).isEqualTo(request.getMaxVersions());
assertThat(metadataResponseAfterUpdate.getDeleteVersionAfter()).isEqualTo(duration);
if (prepare().getVersion().isGreaterThanOrEqualTo(Version.parse("1.2.0"))) {
assertThat(metadataResponseAfterUpdate.getDeleteVersionAfter()).isEqualTo(duration);
}
}
@Test