Skip to content

Commit

Permalink
Guard tests against versions with different metadata behavior for del…
Browse files Browse the repository at this point in the history
…eteVersionAfter.

Resolves see spring-cloudgh-432.
  • Loading branch information
mp911de committed May 28, 2020
1 parent 1238b47 commit b09f79f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import java.time.Period;
import java.util.List;

import org.springframework.lang.Nullable;

/**
* Value object to bind Vault HTTP kv read metadata API responses.
*
Expand Down Expand Up @@ -84,8 +86,9 @@ public int getCurrentVersion() {

/**
* @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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,22 @@
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}.
*
Expand Down Expand Up @@ -88,14 +101,19 @@ void shouldReadMetadataForANewKVEntry() {
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);
}

Expand Down Expand Up @@ -130,7 +148,10 @@ void shouldUpdateKVMetadata() {

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
Expand Down

0 comments on commit b09f79f

Please sign in to comment.