Skip to content

Commit

Permalink
Merge pull request #44 from virtualidentityag/VIC-2204-fix-tenant-tra…
Browse files Browse the repository at this point in the history
…nslation

chore: fix default translation
  • Loading branch information
tkuzynow authored Dec 12, 2022
2 parents 81438fe + 899f255 commit 7e40e45
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -164,24 +164,28 @@ public Optional<RestrictedTenantDTO> findTenantBySubdomain(String subdomain, Lon

Optional<Long> tenantIdFromRequestOrCookie = authorisationService.resolveTenantFromRequest(optionalTenantIdOverride);
if (multitenancyWithSingleDomain && tenantIdFromRequestOrCookie.isPresent()) {
return getSingleDomainSpecificTenantData(tenantBySubdomain, tenantIdFromRequestOrCookie.get());
return getTenantDataWithOverridenPrivacy(tenantBySubdomain, tenantIdFromRequestOrCookie.get());
}

String lang = translationService.getCurrentLanguageContext();
return tenantBySubdomain.isEmpty() ? Optional.empty()
: Optional.of(tenantConverter.toRestrictedTenantDTO(tenantBySubdomain.get(), lang));
}

public Optional<RestrictedTenantDTO> getSingleDomainSpecificTenantData(
public Optional<RestrictedTenantDTO> getTenantDataWithOverridenPrivacy(
Optional<TenantEntity> mainTenantForSingleDomainMultitenancy, Long resolvedTenantId) {

Optional<TenantEntity> resolvedTenant = tenantService.findTenantById(resolvedTenantId);
if (resolvedTenant.isEmpty()) {
Optional<TenantEntity> tenantToOverridePrivacy = tenantService.findTenantById(resolvedTenantId);
if (tenantToOverridePrivacy.isEmpty()) {
throw new BadRequestException("Tenant not found for id " + resolvedTenantId);
}
String lang = translationService.getCurrentLanguageContext();
RestrictedTenantDTO restrictedTenantDTO = tenantConverter.toRestrictedTenantDTO(mainTenantForSingleDomainMultitenancy.get(), lang);
restrictedTenantDTO.getContent().setPrivacy(resolvedTenant.get().getContentPrivacy());
RestrictedTenantDTO overridingRestrictedTenantDTO = tenantConverter.toRestrictedTenantDTO(tenantToOverridePrivacy.get(), lang);

if (overridingRestrictedTenantDTO.getContent() != null) {
restrictedTenantDTO.getContent().setPrivacy(overridingRestrictedTenantDTO.getContent().getPrivacy());
}
return Optional.of(restrictedTenantDTO);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class TenantServiceFacadeTest {

private static final long ID = 1L;
public static final String DE = "de";
public static final String SINGLE_DOMAIN_SUBDOMAIN_NAME = "app";
private final MultilingualTenantDTO tenantMultilingualDTO = new MultilingualTenantDTO();
private final TenantDTO tenantDTO = new TenantDTO();
private final MultilingualTenantDTO sanitizedTenantDTO = new MultilingualTenantDTO();
Expand Down Expand Up @@ -245,26 +246,30 @@ void getSingleTenant_Should_shouldThrowIllegalStateException_When_moreTenantsAre
}

@Test
void findTenantBySubdomain_Should_returnTenantAwareData_When_RequestIsTenantAware(){
String subdomain = "app";
void findTenantBySubdomain_Should_overridePrivacyDataFromDifferentTenant_When_TenantIdProvidedInRequest(){
// given

ReflectionTestUtils.setField(tenantServiceFacade,"multitenancyWithSingleDomain",true);
ReflectionTestUtils.setField(tenantServiceFacade,"tenantConverter",new TenantConverter());

TenantEntity defaultTenantEntity = new TenantEntity();
defaultTenantEntity.setContentPrivacy("{\"de\":\"content1\"}");
Optional<TenantEntity> defaultTenant = Optional.of(defaultTenantEntity);

TenantEntity accessTokenTenant = new TenantEntity();
accessTokenTenant.setContentPrivacy("{\"de\":\"content2\"}");
Optional<TenantEntity> accessTokenTenantData = Optional.of(accessTokenTenant);
Optional<TenantEntity> defaultTenant = getTenantWithPrivacy("{\"de\":\"content1\"}");
Optional<TenantEntity> accessTokenTenantData = getTenantWithPrivacy("{\"de\":\"content2\"}");

when(tenantService.findTenantBySubdomain(subdomain)).thenReturn(defaultTenant);
when(tenantService.findTenantBySubdomain(SINGLE_DOMAIN_SUBDOMAIN_NAME)).thenReturn(defaultTenant);
when(authorisationService.resolveTenantFromRequest(null)).thenReturn(Optional.of(2L));
when(tenantService.findTenantById(2L)).thenReturn(accessTokenTenantData);

Optional<RestrictedTenantDTO> tenantDTO = tenantServiceFacade.findTenantBySubdomain(subdomain, null);
assertThat(tenantDTO.get().getContent().getPrivacy()).contains("content2");
// when
Optional<RestrictedTenantDTO> tenantDTO = tenantServiceFacade.findTenantBySubdomain(SINGLE_DOMAIN_SUBDOMAIN_NAME, null);

// then
assertThat(tenantDTO.get().getContent().getPrivacy()).contains("content2");
}

private static Optional<TenantEntity> getTenantWithPrivacy(String contentPrivacy) {
TenantEntity defaultTenantEntity = new TenantEntity();
defaultTenantEntity.setContentPrivacy(contentPrivacy);
Optional<TenantEntity> defaultTenant = Optional.of(defaultTenantEntity);
return defaultTenant;
}
}

0 comments on commit 7e40e45

Please sign in to comment.