fix fixme's for credentials error messages
This commit is contained in:
@@ -5,6 +5,7 @@ import java.util.UUID;
|
|||||||
|
|
||||||
import io.micrometer.core.annotation.Timed;
|
import io.micrometer.core.annotation.Timed;
|
||||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||||
|
import net.hostsharing.hsadminng.config.MessageTranslator;
|
||||||
import net.hostsharing.hsadminng.context.Context;
|
import net.hostsharing.hsadminng.context.Context;
|
||||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.api.CredentialsApi;
|
import net.hostsharing.hsadminng.credentials.generated.api.v1.api.CredentialsApi;
|
||||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsInsertResource;
|
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsInsertResource;
|
||||||
@@ -17,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@SecurityRequirement(name = "casTicket")
|
@SecurityRequirement(name = "casTicket")
|
||||||
public class HsCredentialsController implements CredentialsApi {
|
public class HsCredentialsController implements CredentialsApi {
|
||||||
@@ -30,6 +33,9 @@ public class HsCredentialsController implements CredentialsApi {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private StrictMapper mapper;
|
private StrictMapper mapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MessageTranslator messageTranslator;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private HsOfficePersonRbacRepository personRepo;
|
private HsOfficePersonRbacRepository personRepo;
|
||||||
|
|
||||||
@@ -56,7 +62,12 @@ public class HsCredentialsController implements CredentialsApi {
|
|||||||
) {
|
) {
|
||||||
context.assumeRoles(assumedRoles);
|
context.assumeRoles(assumedRoles);
|
||||||
|
|
||||||
final var person = personRepo.findByUuid(personUuid).orElseThrow(); // FIXME: use proper exception
|
final var person = personRepo.findByUuid(personUuid).orElseThrow(
|
||||||
|
() -> new EntityNotFoundException(
|
||||||
|
messageTranslator.translate("{0} \"{1}\" not found or not accessible", "personUuid", personUuid)
|
||||||
|
)
|
||||||
|
|
||||||
|
); // FIXME: use proper exception
|
||||||
final var credentials = credentialsRepo.findByPerson(person);
|
final var credentials = credentialsRepo.findByPerson(person);
|
||||||
final var result = mapper.mapList(credentials, CredentialsResource.class);
|
final var result = mapper.mapList(credentials, CredentialsResource.class);
|
||||||
return ResponseEntity.ok(result);
|
return ResponseEntity.ok(result);
|
||||||
@@ -96,7 +107,7 @@ public class HsCredentialsController implements CredentialsApi {
|
|||||||
|
|
||||||
final var current = credentialsRepo.findByUuid(credentialsUuid).orElseThrow();
|
final var current = credentialsRepo.findByUuid(credentialsUuid).orElseThrow();
|
||||||
|
|
||||||
new HsCredentialsEntityPatcher(em, current).apply(body);
|
new HsCredentialsEntityPatcher(em, messageTranslator, current).apply(body);
|
||||||
|
|
||||||
final var saved = credentialsRepo.save(current);
|
final var saved = credentialsRepo.save(current);
|
||||||
final var mapped = mapper.map(saved, CredentialsResource.class);
|
final var mapped = mapper.map(saved, CredentialsResource.class);
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package net.hostsharing.hsadminng.credentials;
|
package net.hostsharing.hsadminng.credentials;
|
||||||
|
|
||||||
|
import net.hostsharing.hsadminng.config.MessageTranslator;
|
||||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
|
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
|
||||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
|
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
|
||||||
import net.hostsharing.hsadminng.mapper.EntityPatcher;
|
import net.hostsharing.hsadminng.mapper.EntityPatcher;
|
||||||
@@ -14,10 +15,12 @@ import java.util.stream.Collectors;
|
|||||||
public class HsCredentialsEntityPatcher implements EntityPatcher<CredentialsPatchResource> {
|
public class HsCredentialsEntityPatcher implements EntityPatcher<CredentialsPatchResource> {
|
||||||
|
|
||||||
private final EntityManager em;
|
private final EntityManager em;
|
||||||
|
private MessageTranslator messageTranslator;
|
||||||
private final HsCredentialsEntity entity;
|
private final HsCredentialsEntity entity;
|
||||||
|
|
||||||
public HsCredentialsEntityPatcher(final EntityManager em, final HsCredentialsEntity entity) {
|
public HsCredentialsEntityPatcher(final EntityManager em, MessageTranslator messageTranslator, final HsCredentialsEntity entity) {
|
||||||
this.em = em;
|
this.em = em;
|
||||||
|
this.messageTranslator = messageTranslator;
|
||||||
this.entity = entity;
|
this.entity = entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,14 +60,15 @@ public class HsCredentialsEntityPatcher implements EntityPatcher<CredentialsPatc
|
|||||||
if (!entityUuids.contains(resource.getUuid())) {
|
if (!entityUuids.contains(resource.getUuid())) {
|
||||||
final var existingContextEntity = em.find(HsCredentialsContextRealEntity.class, resource.getUuid());
|
final var existingContextEntity = em.find(HsCredentialsContextRealEntity.class, resource.getUuid());
|
||||||
if ( existingContextEntity == null ) {
|
if ( existingContextEntity == null ) {
|
||||||
// FIXME: i18n
|
|
||||||
throw new EntityNotFoundException(
|
throw new EntityNotFoundException(
|
||||||
HsCredentialsContextRealEntity.class.getName() + " with uuid " + resource.getUuid() + " not found.");
|
messageTranslator.translate("{0} \"{1}\" not found or not accessible",
|
||||||
|
"credentials uuid", resource.getUuid()));
|
||||||
}
|
}
|
||||||
if (!existingContextEntity.getType().equals(resource.getType()) &&
|
if (!existingContextEntity.getType().equals(resource.getType()) &&
|
||||||
!existingContextEntity.getQualifier().equals(resource.getQualifier())) {
|
!existingContextEntity.getQualifier().equals(resource.getQualifier())) {
|
||||||
// FIXME: i18n
|
throw new EntityNotFoundException(
|
||||||
throw new EntityNotFoundException("existing " + existingContextEntity + " does not match given resource " + resource);
|
messageTranslator.translate("existing {0} does not match given resource {1}",
|
||||||
|
existingContextEntity, resource));
|
||||||
}
|
}
|
||||||
entities.add(existingContextEntity);
|
entities.add(existingContextEntity);
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,9 @@ unknown\ authorization\ ticket=unbekanntes Autorisierungs-Ticket
|
|||||||
{0}\ "{1}"\ not\ found\ or\ not\ accessible={0} "{1}" nicht gefunden oder nicht zugänglich
|
{0}\ "{1}"\ not\ found\ or\ not\ accessible={0} "{1}" nicht gefunden oder nicht zugänglich
|
||||||
but\ is=ist aber
|
but\ is=ist aber
|
||||||
|
|
||||||
|
# credentials validations
|
||||||
|
existing\ {0}\ does\ not\ match\ given\ resource\ {1}=existierender Credentials-Context {0} passt nicht zum angegebenen {1}
|
||||||
|
|
||||||
# office.coop-shares
|
# office.coop-shares
|
||||||
for\ transactionType\={0},\ shareCount\ must\ be\ positive\ but\ is\ {1}=für transactionType={0}, muss shareCount positiv sein, ist aber {1}
|
for\ transactionType\={0},\ shareCount\ must\ be\ positive\ but\ is\ {1}=für transactionType={0}, muss shareCount positiv sein, ist aber {1}
|
||||||
for\ transactionType\={0},\ shareCount\ must\ be\ negative\ but\ is\ {1}=für transactionType={0}, muss shareCount negativ sein, ist aber {1}
|
for\ transactionType\={0},\ shareCount\ must\ be\ negative\ but\ is\ {1}=für transactionType={0}, muss shareCount negativ sein, ist aber {1}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package net.hostsharing.hsadminng.credentials;
|
package net.hostsharing.hsadminng.credentials;
|
||||||
|
|
||||||
|
import net.hostsharing.hsadminng.config.MessageTranslator;
|
||||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
|
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
|
||||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
|
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
|
||||||
import net.hostsharing.hsadminng.rbac.test.PatchUnitTestBase;
|
import net.hostsharing.hsadminng.rbac.test.PatchUnitTestBase;
|
||||||
@@ -19,6 +20,7 @@ import java.util.stream.Stream;
|
|||||||
import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS;
|
import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.lenient;
|
import static org.mockito.Mockito.lenient;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
@TestInstance(PER_CLASS)
|
@TestInstance(PER_CLASS)
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
@@ -115,7 +117,7 @@ class HsCredentialsEntityPatcherUnitTest extends PatchUnitTestBase<
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected HsCredentialsEntityPatcher createPatcher(final HsCredentialsEntity entity) {
|
protected HsCredentialsEntityPatcher createPatcher(final HsCredentialsEntity entity) {
|
||||||
return new HsCredentialsEntityPatcher(em, entity);
|
return new HsCredentialsEntityPatcher(em, mock(MessageTranslator.class), entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user