From 2ad9719dbb2b42fb513c6513db06d21510b47d8e Mon Sep 17 00:00:00 2001 From: David Osorno Date: Wed, 13 Mar 2024 15:59:56 -0700 Subject: [PATCH] Improve code readability using Stream Signed-off-by: David Osorno --- .../rest/api/MultiTenancyConfigApiAction.java | 32 +++++++------------ .../rest/api/MultiTenancyConfigApiTest.java | 2 +- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiAction.java b/src/main/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiAction.java index f1c8790023..02ff3159e7 100644 --- a/src/main/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiAction.java +++ b/src/main/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiAction.java @@ -12,13 +12,13 @@ package org.opensearch.security.dlic.rest.api; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.IntStream; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -216,28 +216,18 @@ private void updateAndValidatesValues(final ConfigV7 config, final JsonNode json } private List getNewSignInOptions(JsonNode newOptions, Authc authc) { - List options = new ArrayList<>(); - for (int i = 0; i < newOptions.size(); i++) { - try { - String option = newOptions.get(i).asText(); - if (isOptionConfiguredAtBackEnd(authc, option)) { - options.add(DashboardSignInOption.valueOf(option)); - } - } catch (Exception e) { - throw new IllegalArgumentException("Invalid sign-in option: " + e.getMessage()); - } - } - return options; - } - private boolean isOptionConfiguredAtBackEnd(Authc authc, String option) { - for (String key : authc.getDomains().keySet()) { - if (key.contains(option.toLowerCase())) { + Set domains = authc.getDomains().keySet(); + + return IntStream.range(0, newOptions.size()).mapToObj(newOptions::get).map(JsonNode::asText).filter(option -> { + // Checking if the new sign-in options are set in backend. + if (option.equals(DashboardSignInOption.ANONYMOUS.toString()) || domains.stream().anyMatch(domain -> domain.contains(option.toLowerCase()))) { return true; + } else { + throw new IllegalArgumentException( + "Validation failure: " + option.toUpperCase() + " authentication provider is not available for this cluster." + ); } - } - throw new IllegalArgumentException( - "Validation failure: " + option.toUpperCase() + " authentication provider is not available for this cluster." - ); + }).map(DashboardSignInOption::valueOf).collect(Collectors.toList()); } } diff --git a/src/test/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiTest.java b/src/test/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiTest.java index 08af9bc76a..752335b802 100644 --- a/src/test/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiTest.java +++ b/src/test/java/org/opensearch/security/dlic/rest/api/MultiTenancyConfigApiTest.java @@ -207,7 +207,7 @@ private void verifyTenantUpdateFailed(final Header... header) throws Exception { assertThat( invalidSignInOption.getBody(), invalidSignInOption.findValueInJson("error.reason"), - containsString("Invalid sign-in option") + containsString("authentication provider is not available for this cluster") ); }