Polishing.
Introduce convenience methods for Policy and VaultEndpoint creation. See gh-816
This commit is contained in:
@@ -75,6 +75,18 @@ public class VaultEndpoint implements Serializable {
|
||||
return vaultEndpoint;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link VaultEndpoint} given a {@link String URI}.
|
||||
* @param uri must contain hostname, port and scheme, must not be empty or
|
||||
* {@literal null}.
|
||||
* @return a new {@link VaultEndpoint}.
|
||||
* @see #from(URI)
|
||||
* @since 3.1
|
||||
*/
|
||||
public static VaultEndpoint from(String uri) {
|
||||
return from(URI.create(uri));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link VaultEndpoint} given a {@link URI}.
|
||||
* @param uri must contain hostname, port and scheme, must not be empty or
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
@@ -59,9 +60,9 @@ import org.springframework.vault.support.Policy.PolicySerializer;
|
||||
* {@link Policy} support JSON serialization and deserialization using Jackson.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
* @since 2.0
|
||||
* @see Rule
|
||||
* @see com.fasterxml.jackson.databind.ObjectMapper
|
||||
* @since 2.0
|
||||
*/
|
||||
@JsonSerialize(using = PolicySerializer.class)
|
||||
@JsonDeserialize(using = PolicyDeserializer.class)
|
||||
@@ -356,7 +357,7 @@ public class Policy {
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure capabilities. apabilities are added when calling this method and
|
||||
* Configure capabilities. Capabilities are added when calling this method and
|
||||
* do not replace already configured capabilities.
|
||||
* @param capabilities must not be {@literal null}.
|
||||
* @return {@code this} {@link RuleBuilder}.
|
||||
@@ -369,6 +370,25 @@ public class Policy {
|
||||
return capabilities(Arrays.asList(capabilities));
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure capabilities. Capabilities are added when calling this method and
|
||||
* do not replace already configured capabilities.
|
||||
* @param capabilities must not be {@literal null}.
|
||||
* @return {@code this} {@link RuleBuilder}.
|
||||
* @since 3.1
|
||||
*/
|
||||
public RuleBuilder capabilities(Collection<? extends Capability> capabilities) {
|
||||
|
||||
Assert.notNull(capabilities, "Capabilities must not be null");
|
||||
Assert.noNullElements(capabilities, "Capabilities must not contain null elements");
|
||||
|
||||
for (Capability capability : capabilities) {
|
||||
this.capabilities.add(capability);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure capabilities represented as {@link String} literals. This method
|
||||
* resolves capabilities using {@link BuiltinCapabilities}. Capabilities are
|
||||
@@ -397,15 +417,6 @@ public class Policy {
|
||||
return capabilities(mapped);
|
||||
}
|
||||
|
||||
private RuleBuilder capabilities(Iterable<Capability> capabilities) {
|
||||
|
||||
for (Capability capability : capabilities) {
|
||||
this.capabilities.add(capability);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure a min TTL for response wrapping.
|
||||
* @param ttl must not be {@literal null}.
|
||||
@@ -749,7 +760,9 @@ public class Policy {
|
||||
static class StringToDurationConverter implements Converter<String, Duration> {
|
||||
|
||||
static Pattern SECONDS = Pattern.compile("(\\d+)s");
|
||||
|
||||
static Pattern MINUTES = Pattern.compile("(\\d+)m");
|
||||
|
||||
static Pattern HOURS = Pattern.compile("(\\d+)h");
|
||||
|
||||
@Override
|
||||
|
||||
@@ -81,8 +81,7 @@ class TokenExpiryRotatingSecretsIntegrationTests extends IntegrationTestSupport
|
||||
|
||||
VaultOperations vaultOperations = prepare.getVaultOperations();
|
||||
|
||||
Policy policy = Policy
|
||||
.of(Rule.builder().capabilities(BuiltinCapabilities.crud().toArray(new Capability[0])).path("/*").build());
|
||||
Policy policy = Policy.of(Rule.builder().capabilities(BuiltinCapabilities.crud()).path("/*").build());
|
||||
vaultOperations.opsForSys().createOrUpdatePolicy("TokenExpiryRotatingSecretsIntegrationTests", policy);
|
||||
|
||||
vaultOperations.write("auth/userpass/users/token-expiry", Map.of("password", "token-expiry", "token_ttl", 8,
|
||||
|
||||
Reference in New Issue
Block a user