Skip to content

Commit

Permalink
Fix: ProductGrantedAuthority map when user has more productRole on pr…
Browse files Browse the repository at this point in the history
…oductId (#416)
  • Loading branch information
flaminiaScarciofolo authored Apr 17, 2024
1 parent a62a66f commit 4313a92
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import it.pagopa.selfcare.dashboard.connector.api.UserApiConnector;
import it.pagopa.selfcare.dashboard.connector.model.groups.UserGroupInfo;
import it.pagopa.selfcare.dashboard.connector.model.product.Product;
import it.pagopa.selfcare.dashboard.connector.model.user.OnboardedProduct;
import it.pagopa.selfcare.dashboard.connector.model.user.User;
import it.pagopa.selfcare.dashboard.connector.model.user.UserInstitution;
import it.pagopa.selfcare.dashboard.core.InstitutionService;
Expand Down Expand Up @@ -42,9 +43,10 @@
import java.security.spec.RSAPrivateCrtKeySpec;
import java.time.Duration;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static java.util.stream.Collectors.groupingBy;

@Slf4j
@Service
public class ExchangeTokenServiceV2 {
Expand Down Expand Up @@ -207,12 +209,16 @@ private TokenExchangeClaims retrieveAndSetClaims(String credential, Institution


private Map<String, ProductGrantedAuthority> retrieveProductsFromInstitutionAndUser(UserInstitution userInstitution) {
return userInstitution
Map<String, ProductGrantedAuthority> map = new HashMap<>();
userInstitution
.getProducts()
.stream()
.collect(Collectors.toMap(
it.pagopa.selfcare.dashboard.connector.model.user.OnboardedProduct::getProductId,
product -> new ProductGrantedAuthority(product.getRole(), List.of(product.getProductRole()), product.getProductId())));
.collect(groupingBy(OnboardedProduct::getProductId))
.forEach((key, value) -> map.put(key, new ProductGrantedAuthority(
value.get(0).getRole(),
value.stream().map(OnboardedProduct::getProductRole).toList(),
key)));
return map;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -522,8 +522,14 @@ void exchange_ok(PrivateKey privateKey) throws Exception {
onboardedProduct.setProductId(productId);
onboardedProduct.setProductRole(productRole);


OnboardedProduct onboardedProduct2 = new OnboardedProduct();
onboardedProduct2.setRole(MANAGER);
onboardedProduct2.setProductId(productId);
onboardedProduct2.setProductRole("admin2");

UserInstitution userInstitution = new UserInstitution();
userInstitution.setProducts(List.of(onboardedProduct));
userInstitution.setProducts(List.of(onboardedProduct, onboardedProduct2));
Institution institutionMock = mockInstance(new Institution());
institutionMock.setId(institutionId);
when( institutionServiceMock.getInstitutionById(any())).thenReturn(institutionMock);
Expand Down Expand Up @@ -559,7 +565,7 @@ void exchange_ok(PrivateKey privateKey) throws Exception {
assertEquals(institutionInfo.getDescription(), institution.getName());
assertEquals(institutionId, institution.getId());
checkNotNullFields(institution, "parentDescription", "rootParent");
assertEquals(1, institution.getRoles().size());
assertEquals(2, institution.getRoles().size());
List<String> groups = institution.getGroups();
assertEquals(pageable.getPageSize(), groups.size());
assertTrue(groups.stream().allMatch(groupId -> groupId.equals(groupInfo.getId())));
Expand Down

0 comments on commit 4313a92

Please sign in to comment.