diff --git a/src/main/resources/interface-specification.yml b/src/main/resources/interface-specification.yml index 4979bda..e15a9bb 100644 --- a/src/main/resources/interface-specification.yml +++ b/src/main/resources/interface-specification.yml @@ -1093,7 +1093,6 @@ components: - externalId - selfcareId - name - - digitalAddress - onboardedAt - subUnitType TenantUnitType: diff --git a/src/main/scala/it/pagopa/interop/tenantprocess/api/impl/TenantApiServiceImpl.scala b/src/main/scala/it/pagopa/interop/tenantprocess/api/impl/TenantApiServiceImpl.scala index c633509..7c6ecf7 100644 --- a/src/main/scala/it/pagopa/interop/tenantprocess/api/impl/TenantApiServiceImpl.scala +++ b/src/main/scala/it/pagopa/interop/tenantprocess/api/impl/TenantApiServiceImpl.scala @@ -236,7 +236,9 @@ final case class TenantApiServiceImpl( .fold(createTenant(seed, Nil, now, getTenantKind(Nil, seed.externalId).fromAPI))(Future.successful) tenantKind <- getTenantKindLoadingCertifiedAttributes(tenant.attributes, tenant.externalId) _ <- updateSelfcareId(tenant, tenantKind) - _ <- tenantManagementService.addTenantMail(tenant.id, seed.digitalAddress.toDependency) + _ <- seed.digitalAddress.traverse(digitaAddress => + tenantManagementService.addTenantMail(tenant.id, digitaAddress.toDependency) + ) } yield ResourceId(tenant.id) onComplete(result) { diff --git a/src/test/scala/it/pagopa/interop/tenantprocess/provider/TenantCreationSpec.scala b/src/test/scala/it/pagopa/interop/tenantprocess/provider/TenantCreationSpec.scala index a9b624d..1d9ba0e 100644 --- a/src/test/scala/it/pagopa/interop/tenantprocess/provider/TenantCreationSpec.scala +++ b/src/test/scala/it/pagopa/interop/tenantprocess/provider/TenantCreationSpec.scala @@ -953,7 +953,7 @@ class TenantCreationSpec extends AnyWordSpecLike with SpecHelper with ScalatestR } } - "SelfCare request - Update of an existing tenant must succeed if SelfCare ID is not set" in { + "SelfCare request - Update of an existing tenant must succeed if SelfCare ID is not set without mail seed" in { implicit val context: Seq[(String, String)] = selfcareContext val tenantId = organizationId @@ -975,6 +975,65 @@ class TenantCreationSpec extends AnyWordSpecLike with SpecHelper with ScalatestR mockGetTenantByExternalId(PersistentExternalId(seed.externalId.origin, seed.externalId.value), tenant) mockUpdateTenant(tenantId, expectedTenantUpdate) + + Get() ~> tenantService.selfcareUpsertTenant(seed) ~> check { + assert(status == StatusCodes.OK) + } + } + + "SelfCare request - Update of an existing tenant must succeed if SelfCare ID is not set but with digitalAddress" in { + implicit val context: Seq[(String, String)] = selfcareContext + + val tenantId = organizationId + val seed = selfcareTenantSeed.copy(digitalAddress = Some(mailSeed)) + val tenant = persistentTenant.copy( + id = tenantId, + selfcareId = None, + features = List(PersistentTenantFeature.PersistentCertifier("something")) + ) + + val expectedTenantUpdate = + TenantDelta( + selfcareId = Some(seed.selfcareId), + features = Seq(TenantFeature(certifier = Some(Certifier("something")))), + kind = TenantKind.PA + ) + + mockDateTimeGet() + + mockGetTenantByExternalId(PersistentExternalId(seed.externalId.origin, seed.externalId.value), tenant) + mockUpdateTenant(tenantId, expectedTenantUpdate) + + mockAddTenantMail(tenantId, dependencyMailSeed) + + Get() ~> tenantService.selfcareUpsertTenant(seed) ~> check { + assert(status == StatusCodes.OK) + } + } + + "SelfCare request - Update of an existing tenant must succeed if SelfCare ID is not set but with digitalAddress" in { + implicit val context: Seq[(String, String)] = selfcareContext + + val tenantId = organizationId + val seed = selfcareTenantSeed.copy(digitalAddress = Some(mailSeed)) + val tenant = persistentTenant.copy( + id = tenantId, + selfcareId = None, + features = List(PersistentTenantFeature.PersistentCertifier("something")) + ) + + val expectedTenantUpdate = + TenantDelta( + selfcareId = Some(seed.selfcareId), + features = Seq(TenantFeature(certifier = Some(Certifier("something")))), + kind = TenantKind.PA + ) + + mockDateTimeGet() + + mockGetTenantByExternalId(PersistentExternalId(seed.externalId.origin, seed.externalId.value), tenant) + mockUpdateTenant(tenantId, expectedTenantUpdate) + mockAddTenantMail(tenantId, dependencyMailSeed) Get() ~> tenantService.selfcareUpsertTenant(seed) ~> check { diff --git a/src/test/scala/it/pagopa/interop/tenantprocess/utils/SpecData.scala b/src/test/scala/it/pagopa/interop/tenantprocess/utils/SpecData.scala index d0f953e..5fbd099 100644 --- a/src/test/scala/it/pagopa/interop/tenantprocess/utils/SpecData.scala +++ b/src/test/scala/it/pagopa/interop/tenantprocess/utils/SpecData.scala @@ -62,7 +62,7 @@ trait SpecData { ExternalId("IPA", s"tenant-${UUID.randomUUID()}"), UUID.randomUUID().toString, "test_name", - mailSeed, + None, timestamp, TenantUnitType.AOO ) @@ -71,7 +71,7 @@ trait SpecData { ExternalId("NOT_IPA", s"tenant-${UUID.randomUUID()}"), UUID.randomUUID().toString, "test_name", - mailSeed, + None, timestamp, TenantUnitType.AOO )