Skip to content
Snippets Groups Projects
Commit d70c3041 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4453 set password as encoded data

parent 69890d5c
Branches
Tags
No related merge requests found
package de.ozgcloud.operator.keycloak.user;
import java.util.Base64;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.stereotype.Component;
......@@ -20,14 +22,18 @@ class UserSecretBuilder {
.withType(SECRET_TYPE)
.withMetadata(createMetaData(name, namespace))
.addToStringData(SECRET_NAME_FIELD, userSpec.getUsername())
.addToStringData(SECRET_PASSWORD_FIELD, generatePassword())
.addToData(SECRET_PASSWORD_FIELD, generatePassword())
.build();
}
String generatePassword() {
var upperCaseCharacter = RandomStringUtils.randomAlphabetic(1).toUpperCase();
var randomString = RandomStringUtils.randomAlphanumeric(7);
return upperCaseCharacter + randomString;
return encode(upperCaseCharacter + randomString);
}
String encode(String strValue) {
return new String(Base64.getEncoder().encode(strValue.getBytes()));
}
private ObjectMeta createMetaData(String name, String namespace) {
......
package de.ozgcloud.operator.keycloak.user;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Base64;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
......@@ -11,7 +14,7 @@ import org.mockito.Spy;
import de.ozgcloud.operator.keycloak.user.OzgCloudKeycloakUserSpec.KeycloakUserSpecUser;
public class UserSecretBuilderTest {
class UserSecretBuilderTest {
private final static String NAME = "dummyName";
private final static String NAMESPACE = "dummyNamespace";
......@@ -52,7 +55,7 @@ public class UserSecretBuilderTest {
var secret = builder.build(NAME, userSpec, NAMESPACE);
assertThat(secret.getStringData()).containsEntry(UserSecretBuilder.SECRET_PASSWORD_FIELD, SecretTestFactory.PASSWORD);
assertThat(secret.getData()).containsEntry(UserSecretBuilder.SECRET_PASSWORD_FIELD, SecretTestFactory.PASSWORD);
}
@DisplayName("metadata")
......@@ -80,24 +83,35 @@ public class UserSecretBuilderTest {
@Test
void shouldHaveSize() {
var password = builder.generatePassword();
var password = decode(builder.generatePassword());
assertThat(password).hasSize(8);
}
@Test
void shouldHaveUpperCaseLetterAtFirst() {
var password = builder.generatePassword();
var password = decode(builder.generatePassword());
assertThat(StringUtils.substring(password, 0, 1)).isUpperCase();
}
@Test
void shouldContainsAlphanumericOnly() {
var password = builder.generatePassword();
var password = decode(builder.generatePassword());
assertThat(password).isAlphanumeric();
}
@Test
void shouldEncode() {
builder.generatePassword();
verify(builder).encode(any());
}
private String decode(String strValue) {
return new String(Base64.getDecoder().decode(strValue.getBytes()));
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment