Skip to content

Commit

Permalink
Apply Java Google Checks
Browse files Browse the repository at this point in the history
  • Loading branch information
raikbitters committed Jun 6, 2024
1 parent e08ffe6 commit 6b39d9d
Show file tree
Hide file tree
Showing 5 changed files with 274 additions and 239 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,86 +13,101 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.epam.reportportal.auth.integration.converter;

import static com.epam.reportportal.auth.integration.parameter.SamlParameter.BASE_PATH;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.EMAIL_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.FIRST_NAME_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.FULL_NAME_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_ALIAS;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_METADATA_URL;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_NAME;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_NAME_ID;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_URL;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.LAST_NAME_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.ROLES_ATTRIBUTE;
import static java.util.Optional.ofNullable;

import com.epam.reportportal.auth.integration.parameter.ParameterUtils;
import com.epam.reportportal.auth.model.SamlResource;
import com.epam.reportportal.auth.model.SamlProvidersResource;
import com.epam.reportportal.auth.model.SamlResource;
import com.epam.ta.reportportal.entity.integration.Integration;
import com.epam.ta.reportportal.entity.integration.IntegrationType;
import com.epam.ta.reportportal.ws.model.integration.auth.UpdateAuthRQ;
import org.springframework.security.saml.provider.service.config.ExternalIdentityProviderConfiguration;
import org.springframework.security.saml.saml2.metadata.BindingType;
import org.springframework.security.saml.saml2.metadata.NameId;
import org.springframework.util.CollectionUtils;

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import static com.epam.reportportal.auth.integration.parameter.SamlParameter.*;
import static java.util.Optional.ofNullable;
import org.springframework.security.saml.provider.service.config.ExternalIdentityProviderConfiguration;
import org.springframework.security.saml.saml2.metadata.BindingType;
import org.springframework.security.saml.saml2.metadata.NameId;
import org.springframework.util.CollectionUtils;

/**
* Used for mapping between SAML resource model and entity
* Used for mapping between SAML resource model and entity.
*
* @author Yevgeniy Svalukhin
*/
public class SamlConverter {

public static final BiConsumer<UpdateAuthRQ, Integration> UPDATE_FROM_REQUEST = (request, integration) -> {
integration.setEnabled(request.getEnabled());
integration.setName(IDP_NAME.getRequiredParameter(request));
ParameterUtils.setSamlParameters(request, integration);
};
public static final BiConsumer<UpdateAuthRQ, Integration> UPDATE_FROM_REQUEST =
(request, integration) -> {
integration.setEnabled(request.getEnabled());
integration.setName(IDP_NAME.getRequiredParameter(request));
ParameterUtils.setSamlParameters(request, integration);
};

public final static Function<Integration, SamlResource> TO_RESOURCE = integration -> {
SamlResource resource = new SamlResource();
resource.setId(integration.getId());
resource.setIdentityProviderName(integration.getName());
resource.setEnabled(integration.isEnabled());
public static final Function<Integration, SamlResource> TO_RESOURCE = integration -> {
SamlResource resource = new SamlResource();
resource.setId(integration.getId());
resource.setIdentityProviderName(integration.getName());
resource.setEnabled(integration.isEnabled());

EMAIL_ATTRIBUTE.getParameter(integration).ifPresent(resource::setEmailAttribute);
FIRST_NAME_ATTRIBUTE.getParameter(integration).ifPresent(resource::setFirstNameAttribute);
LAST_NAME_ATTRIBUTE.getParameter(integration).ifPresent(resource::setLastNameAttribute);
FULL_NAME_ATTRIBUTE.getParameter(integration).ifPresent(resource::setFullNameAttribute);
IDP_ALIAS.getParameter(integration).ifPresent(resource::setIdentityProviderAlias);
IDP_METADATA_URL.getParameter(integration).ifPresent(resource::setIdentityProviderMetadataUrl);
IDP_URL.getParameter(integration).ifPresent(resource::setIdentityProviderUrl);
IDP_NAME_ID.getParameter(integration).ifPresent(resource::setIdentityProviderNameId);
ROLES_ATTRIBUTE.getParameter(integration).ifPresent(resource::setRolesAttribute);
final IntegrationType integrationType = integration.getType();
ofNullable(integrationType.getDetails()).flatMap(typeDetails -> Optional.ofNullable(typeDetails.getDetails()))
.flatMap(BASE_PATH::getParameter)
.ifPresent(resource::setCallbackUrl);
return resource;
};
EMAIL_ATTRIBUTE.getParameter(integration).ifPresent(resource::setEmailAttribute);
FIRST_NAME_ATTRIBUTE.getParameter(integration).ifPresent(resource::setFirstNameAttribute);
LAST_NAME_ATTRIBUTE.getParameter(integration).ifPresent(resource::setLastNameAttribute);
FULL_NAME_ATTRIBUTE.getParameter(integration).ifPresent(resource::setFullNameAttribute);
IDP_ALIAS.getParameter(integration).ifPresent(resource::setIdentityProviderAlias);
IDP_METADATA_URL.getParameter(integration).ifPresent(resource::setIdentityProviderMetadataUrl);
IDP_URL.getParameter(integration).ifPresent(resource::setIdentityProviderUrl);
IDP_NAME_ID.getParameter(integration).ifPresent(resource::setIdentityProviderNameId);
ROLES_ATTRIBUTE.getParameter(integration).ifPresent(resource::setRolesAttribute);
final IntegrationType integrationType = integration.getType();
ofNullable(integrationType.getDetails()).flatMap(
typeDetails -> Optional.ofNullable(typeDetails.getDetails()))
.flatMap(BASE_PATH::getParameter).ifPresent(resource::setCallbackUrl);
return resource;
};

public final static Function<List<Integration>, List<ExternalIdentityProviderConfiguration>> TO_EXTERNAL_PROVIDER_CONFIG = integrations -> {
List<ExternalIdentityProviderConfiguration> externalProviders = integrations.stream()
.map(integration -> new ExternalIdentityProviderConfiguration().setAlias(IDP_ALIAS.getParameter(integration).get())
.setMetadata(IDP_METADATA_URL.getRequiredParameter(integration))
.setLinktext(integration.getName())
.setAuthenticationRequestBinding(BindingType.POST.toUri())
.setNameId(IDP_NAME_ID.getParameter(integration).map(NameId::fromUrn).orElse(NameId.UNSPECIFIED)))
.collect(Collectors.toList());
IntStream.range(0, externalProviders.size()).forEach(value -> externalProviders.get(value).setAssertionConsumerServiceIndex(value));
return externalProviders;
};
public static final Function<List<Integration>, List<ExternalIdentityProviderConfiguration>>
TO_EXTERNAL_PROVIDER_CONFIG = integrations -> {
List<ExternalIdentityProviderConfiguration> externalProviders = integrations.stream().map(
integration -> new ExternalIdentityProviderConfiguration().setAlias(
IDP_ALIAS.getParameter(integration).get())
.setMetadata(IDP_METADATA_URL.getRequiredParameter(integration))
.setLinktext(integration.getName())
.setAuthenticationRequestBinding(BindingType.POST.toUri()).setNameId(
IDP_NAME_ID.getParameter(integration).map(NameId::fromUrn)
.orElse(NameId.UNSPECIFIED))).collect(Collectors.toList());
IntStream.range(0, externalProviders.size())
.forEach(value -> externalProviders.get(value).setAssertionConsumerServiceIndex(value));
return externalProviders;
};

public final static Function<List<Integration>, SamlProvidersResource> TO_PROVIDERS_RESOURCE = integrations -> {
if (CollectionUtils.isEmpty(integrations)) {
SamlProvidersResource emptyResource = new SamlProvidersResource();
emptyResource.setProviders(Collections.emptyList());
return emptyResource;
}
SamlProvidersResource resource = new SamlProvidersResource();
resource.setProviders(integrations.stream().map(TO_RESOURCE).collect(Collectors.toList()));
return resource;
};
public static final Function<List<Integration>, SamlProvidersResource> TO_PROVIDERS_RESOURCE =
integrations -> {
if (CollectionUtils.isEmpty(integrations)) {
SamlProvidersResource emptyResource = new SamlProvidersResource();
emptyResource.setProviders(Collections.emptyList());
return emptyResource;
}
SamlProvidersResource resource = new SamlProvidersResource();
resource.setProviders(integrations.stream().map(TO_RESOURCE).collect(Collectors.toList()));
return resource;
};

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,53 +16,64 @@

package com.epam.reportportal.auth.integration.parameter;

import static com.epam.reportportal.auth.integration.parameter.SamlParameter.EMAIL_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.FIRST_NAME_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.FULL_NAME_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_ALIAS;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_METADATA_URL;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_NAME;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_NAME_ID;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.IDP_URL;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.LAST_NAME_ATTRIBUTE;
import static com.epam.reportportal.auth.integration.parameter.SamlParameter.ROLES_ATTRIBUTE;

import com.epam.ta.reportportal.entity.integration.Integration;
import com.epam.ta.reportportal.ws.model.integration.auth.UpdateAuthRQ;

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

import static com.epam.reportportal.auth.integration.parameter.SamlParameter.*;

/**
* Utility class for setting and getting parameters for LDAP and SAML.
*
* @author <a href="mailto:ihar_kahadouski@epam.com">Ihar Kahadouski</a>
*/
public final class ParameterUtils {

private ParameterUtils() {
//static only
}
private ParameterUtils() {
//static only
}

public static void setLdapParameters(UpdateAuthRQ request, Integration integration) {
Arrays.stream(LdapParameter.values()).forEach(it -> it.setParameter(request, integration));
}
public static void setLdapParameters(UpdateAuthRQ request, Integration integration) {
Arrays.stream(LdapParameter.values()).forEach(it -> it.setParameter(request, integration));
}

public static void setSamlParameters(UpdateAuthRQ request, Integration integration) {
IDP_NAME.setParameter(request, integration);
IDP_METADATA_URL.setParameter(request, integration);
EMAIL_ATTRIBUTE.setParameter(request, integration);
IDP_NAME_ID.setParameter(request, integration);
IDP_ALIAS.setParameter(request, integration);
IDP_URL.setParameter(request, integration);
ROLES_ATTRIBUTE.setParameter(request, integration);
public static void setSamlParameters(UpdateAuthRQ request, Integration integration) {
IDP_NAME.setParameter(request, integration);
IDP_METADATA_URL.setParameter(request, integration);
EMAIL_ATTRIBUTE.setParameter(request, integration);
IDP_NAME_ID.setParameter(request, integration);
IDP_ALIAS.setParameter(request, integration);
IDP_URL.setParameter(request, integration);
ROLES_ATTRIBUTE.setParameter(request, integration);

FULL_NAME_ATTRIBUTE.getParameter(request).ifPresentOrElse(fullName -> {
FIRST_NAME_ATTRIBUTE.removeParameter(integration);
LAST_NAME_ATTRIBUTE.removeParameter(integration);
FULL_NAME_ATTRIBUTE.setParameter(integration, fullName);
}, () -> {
FULL_NAME_ATTRIBUTE.removeParameter(integration);
FIRST_NAME_ATTRIBUTE.setParameter(request, integration);
LAST_NAME_ATTRIBUTE.setParameter(request, integration);
});
}
FULL_NAME_ATTRIBUTE.getParameter(request).ifPresentOrElse(fullName -> {
FIRST_NAME_ATTRIBUTE.removeParameter(integration);
LAST_NAME_ATTRIBUTE.removeParameter(integration);
FULL_NAME_ATTRIBUTE.setParameter(integration, fullName);
}, () -> {
FULL_NAME_ATTRIBUTE.removeParameter(integration);
FIRST_NAME_ATTRIBUTE.setParameter(request, integration);
LAST_NAME_ATTRIBUTE.setParameter(request, integration);
});
}

public static Map<String, String> getLdapSyncAttributes(Integration integration) {
return Arrays.stream(LdapParameter.values())
.filter(LdapParameter::isSyncAttribute)
.filter(it -> it.getParameter(integration).isPresent())
.collect(Collectors.toMap(LdapParameter::getParameterName, it -> it.getParameter(integration).get()));
}
public static Map<String, String> getLdapSyncAttributes(Integration integration) {
return Arrays.stream(LdapParameter.values())
.filter(LdapParameter::isSyncAttribute)
.filter(it -> it.getParameter(integration).isPresent())
.collect(Collectors.toMap(LdapParameter::getParameterName,
it -> it.getParameter(integration).get()));
}

}
Loading

0 comments on commit 6b39d9d

Please sign in to comment.