use of com.macasaet.fernet.Key in project fernet-java8 by l0s.
the class TokenHeaderUtilityTest method verifyGetXAuthorizationTokenDeserialisesToken.
@Test
public final void verifyGetXAuthorizationTokenDeserialisesToken() {
// given
final Key key = Key.generateKey(random);
final Token token = Token.generate(random, key, "hello");
final ContainerRequest request = mock(ContainerRequest.class);
given(request.getHeaderString("X-Authorization")).willReturn(token.serialise());
// when
final Token result = utility.getXAuthorizationToken(request);
// then
assertEquals(token.serialise(), result.serialise());
}
use of com.macasaet.fernet.Key in project fernet-java8 by l0s.
the class TokenHeaderUtilityTest method verifyGetXAuthorizationTokenIgnoresBearer.
@Test
public final void verifyGetXAuthorizationTokenIgnoresBearer() {
// given
final Key key = Key.generateKey(random);
final Token token = Token.generate(random, key, "hello");
final ContainerRequest request = mock(ContainerRequest.class);
given(request.getHeaderString("Authorization")).willReturn("Bearer " + token.serialise());
// when
final Token result = utility.getXAuthorizationToken(request);
// then
assertNull(result);
}
use of com.macasaet.fernet.Key in project fernet-java8 by l0s.
the class MultiFernetKeyRotatorTest method verifyCreateSecretAddsKeyAndRemovesOldest.
@Test
public final void verifyCreateSecretAddsKeyAndRemovesOldest() throws IOException {
// given
final Key key0 = Key.generateKey(random);
final Key key1 = Key.generateKey(random);
final Key key2 = Key.generateKey(random);
final DescribeSecretResult description = new DescribeSecretResult();
description.setRotationEnabled(true);
description.setVersionIdsToStages(ImmutableMap.of("version", Arrays.asList("AWSPENDING")));
final InputStream input = new StringInputStream("{\"Step\": \"createSecret\",\"ClientRequestToken\": \"version\",\"SecretId\":\"secret\"}");
final ByteArrayOutputStream output = new ByteArrayOutputStream();
final Context context = mock(Context.class);
try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
// pending
key0.writeTo(stream);
// primary
key1.writeTo(stream);
// old key
key2.writeTo(stream);
given(secretsManager.getSecretStage("secret", CURRENT)).willReturn(ByteBuffer.wrap(stream.toByteArray()));
given(secretsManager.describeSecret("secret")).willReturn(description);
given(secretsManager.getSecretVersion("secret", "version")).willThrow(new ResourceNotFoundException(""));
// when
rotator.handleRequest(input, output, context);
// then
verify(secretsManager).putSecretValue(eq("secret"), eq("version"), keyCollector.capture(), eq(PENDING));
final Collection<? extends Key> keys = keyCollector.getValue();
assertEquals(3, keys.size());
// new pending key
assertTrue(keys.contains(key0));
// primary key (old pending)
assertTrue(keys.contains(key1));
// old key (old primary)
assertFalse(keys.contains(key2));
new ObjectMapper().readTree(output.toByteArray());
}
}
use of com.macasaet.fernet.Key in project fernet-java8 by l0s.
the class MultiFernetKeyRotatorTest method verifyTestAcceptsValidSecret.
@Test
public final void verifyTestAcceptsValidSecret() throws IOException {
// given
final Key key0 = Key.generateKey(random);
final Key key1 = Key.generateKey(random);
final Key key2 = Key.generateKey(random);
final DescribeSecretResult description = new DescribeSecretResult();
description.setRotationEnabled(true);
description.setVersionIdsToStages(ImmutableMap.of("version", Arrays.asList("AWSPENDING")));
final InputStream input = new StringInputStream("{\"Step\": \"testSecret\",\"ClientRequestToken\": \"version\",\"SecretId\":\"secret\"}");
final ByteArrayOutputStream output = new ByteArrayOutputStream();
final Context context = mock(Context.class);
try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
key0.writeTo(stream);
key1.writeTo(stream);
key2.writeTo(stream);
given(secretsManager.getSecretVersion("secret", "version")).willReturn(ByteBuffer.wrap(stream.toByteArray()));
given(secretsManager.getSecretStage("secret", CURRENT)).willReturn(ByteBuffer.wrap(stream.toByteArray()));
given(secretsManager.describeSecret("secret")).willReturn(description);
// when
rotator.handleRequest(input, output, context);
// then
new ObjectMapper().readTree(output.toByteArray());
}
}
use of com.macasaet.fernet.Key in project fernet-java8 by l0s.
the class SecretsManagerTest method verifyPutSecretValueStoresKeys.
@Test
public final void verifyPutSecretValueStoresKeys() throws IOException {
// given
final String expected = "expected";
final Key key0 = mock(Key.class);
final Key key1 = mock(Key.class);
final Answer<?> answer = new Answer<Void>() {
public Void answer(final InvocationOnMock invocation) throws Throwable {
final OutputStream stream = invocation.getArgument(0);
stream.write(expected.getBytes("UTF-8"));
return null;
}
};
doAnswer(answer).when(key0).writeTo(any(OutputStream.class));
doAnswer(answer).when(key1).writeTo(any(OutputStream.class));
// when
manager.putSecretValue("secret", "version", asList(key0, key1), PREVIOUS);
// then
final PutSecretValueRequest request = new PutSecretValueRequest();
request.setSecretId("secret");
request.setClientRequestToken("version");
request.setVersionStages(singleton("AWSPREVIOUS"));
request.setSecretBinary(ByteBuffer.wrap((expected + expected).getBytes("UTF-8")));
verify(delegate).putSecretValue(eq(request));
}
Aggregations