diff --git a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/_remote.repositories b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/_remote.repositories index e16d97ff8..ed503d0fc 100644 --- a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/_remote.repositories +++ b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/_remote.repositories @@ -1,5 +1,5 @@ #NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice. -#Mon Oct 14 14:37:29 AMT 2024 +#Mon Oct 14 16:33:30 AMT 2024 lib-cetp-1.0-SNAPSHOT.jar>= lib-cetp-1.0-SNAPSHOT-sources.jar>= lib-cetp-1.0-SNAPSHOT.pom>= diff --git a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT-sources.jar b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT-sources.jar index aaa5180c7..2562f16b1 100644 Binary files a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT-sources.jar and b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT-sources.jar differ diff --git a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.jar b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.jar index f37a7e9c3..5b4e1fa94 100644 Binary files a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.jar and b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.jar differ diff --git a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.pom b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.pom index f7f738ef2..cef1c5d26 100644 --- a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.pom +++ b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/lib-cetp-1.0-SNAPSHOT.pom @@ -21,6 +21,12 @@ 4.1.0 provided + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided + jakarta.xml.ws jakarta.xml.ws-api diff --git a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/maven-metadata-local.xml b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/maven-metadata-local.xml index 361f4c0b4..27ecc5f5f 100644 --- a/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/maven-metadata-local.xml +++ b/project-repo/de/servicehealth/lib-cetp/1.0-SNAPSHOT/maven-metadata-local.xml @@ -3,7 +3,7 @@ de.servicehealth lib-cetp - 20241014103723 + 20241014123324 true @@ -11,18 +11,18 @@ pom 1.0-SNAPSHOT - 20241014103723 + 20241014123324 jar 1.0-SNAPSHOT - 20241014103723 + 20241014123324 sources jar 1.0-SNAPSHOT - 20241014103723 + 20241014123324 diff --git a/project-repo/de/servicehealth/lib-cetp/maven-metadata-local.xml b/project-repo/de/servicehealth/lib-cetp/maven-metadata-local.xml index 1ccb393c2..6ca654b9a 100644 --- a/project-repo/de/servicehealth/lib-cetp/maven-metadata-local.xml +++ b/project-repo/de/servicehealth/lib-cetp/maven-metadata-local.xml @@ -6,6 +6,6 @@ 1.0-SNAPSHOT - 20241014103723 + 20241014123324 diff --git a/src/main/java/health/ere/ps/config/RuntimeConfig.java b/src/main/java/health/ere/ps/config/RuntimeConfig.java index 4593f08ae..0dd56af6f 100644 --- a/src/main/java/health/ere/ps/config/RuntimeConfig.java +++ b/src/main/java/health/ere/ps/config/RuntimeConfig.java @@ -1,20 +1,25 @@ package health.ere.ps.config; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Objects; -import java.util.Optional; -import java.util.logging.Level; -import java.util.logging.Logger; - import de.health.service.cetp.config.IRuntimeConfig; import de.health.service.cetp.config.IUserConfigurations; +import de.health.service.cetp.konnektorconfig.KCUserConfigurations; import health.ere.ps.model.config.UserConfigurations; import jakarta.enterprise.inject.Alternative; import jakarta.enterprise.inject.spi.CDI; import jakarta.json.JsonObject; import jakarta.servlet.http.HttpServletRequest; +import java.lang.reflect.Field; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.logging.Level; +import java.util.logging.Logger; + @Alternative public class RuntimeConfig extends UserConfig implements IRuntimeConfig { @@ -102,7 +107,9 @@ public void updateConfigurationsWithHttpServletRequest(HttpServletRequest httpSe this.sendPreview = !httpServletRequest.getHeader("X-sendPreview").equalsIgnoreCase("false"); } - this.updateProperties(this.getConfigurations().updateWithRequest(httpServletRequest)); + IUserConfigurations userConfigurations = getConfigurations(); + userConfigurations.updateWithRequest(httpServletRequest); + this.updateProperties(userConfigurations); } public void updateConfigurationsWithJsonObject(JsonObject object) { diff --git a/src/main/java/health/ere/ps/config/SimpleUserConfig.java b/src/main/java/health/ere/ps/config/SimpleUserConfig.java index e7037607e..ecc3283e9 100644 --- a/src/main/java/health/ere/ps/config/SimpleUserConfig.java +++ b/src/main/java/health/ere/ps/config/SimpleUserConfig.java @@ -215,7 +215,7 @@ public void setIdpClientId(String idpClientId) { } private void setValues(UserRuntimeConfig userConfig) { - IUserConfigurations configurations = userConfig.getUserConfigurations(); + IUserConfigurations configurations = userConfig.getConfigurations(); this.erixaHotfolder = configurations.getErixaHotfolder(); this.erixaDrugstoreEmail = configurations.getErixaDrugstoreEmail(); this.erixaUserEmail = configurations.getErixaUserEmail(); diff --git a/src/main/java/health/ere/ps/config/UserConfig.java b/src/main/java/health/ere/ps/config/UserConfig.java index a036606ac..54d14bbc6 100644 --- a/src/main/java/health/ere/ps/config/UserConfig.java +++ b/src/main/java/health/ere/ps/config/UserConfig.java @@ -1,5 +1,6 @@ package health.ere.ps.config; +import com.fasterxml.jackson.annotation.JsonIgnore; import de.health.service.cetp.config.IRuntimeConfig; import de.health.service.cetp.config.IUserConfigurations; import de.health.service.cetp.config.UserRuntimeConfig; @@ -49,7 +50,7 @@ public class UserConfig implements UserRuntimeConfig { String defaultMuster16TemplateProfile = "DENS"; - private UserConfigurations configurations; + protected UserConfigurations configurations; @PostConstruct void init() { @@ -60,10 +61,11 @@ public UserConfig() { } @Override - public IUserConfigurations getUserConfigurations() { - return configurations; + public IUserConfigurations getConfigurations() { + return configurations == null ? new UserConfigurations() : configurations; } + @JsonIgnore @Override public IRuntimeConfig getRuntimeConfig() { if (this instanceof RuntimeConfig runtimeConfig) { @@ -80,10 +82,6 @@ public UserRuntimeConfig copy() { return runtimeConfig; } - public UserConfigurations getConfigurations() { - return configurations == null ? new UserConfigurations() : configurations; - } - public String getErixaHotfolder() { return getConfigurations().getErixaHotfolder(); } diff --git a/src/main/java/health/ere/ps/model/config/UserConfigurations.java b/src/main/java/health/ere/ps/model/config/UserConfigurations.java index f4bc82506..5f0dfde17 100644 --- a/src/main/java/health/ere/ps/model/config/UserConfigurations.java +++ b/src/main/java/health/ere/ps/model/config/UserConfigurations.java @@ -21,6 +21,7 @@ import java.util.logging.Level; import java.util.logging.Logger; +@SuppressWarnings("unchecked") public class UserConfigurations implements IUserConfigurations { private static final Logger log = Logger.getLogger(UserConfigurations.class.getName()); @@ -129,27 +130,6 @@ public UserConfigurations(HttpServletRequest httpServletRequest) { updateWithRequest(httpServletRequest); } - public UserConfigurations updateWithRequest(HttpServletRequest httpServletRequest) { - Enumeration enumeration = httpServletRequest.getHeaderNames(); - List list = Collections.list(enumeration); - for (String headerName : list) { - if (headerName.startsWith("X-") && !"X-eHBAHandle".equals(headerName) && !"X-SMCBHandle".equals(headerName) && !"X-sendPreview".equals(headerName)) { - String propertyName = headerName.substring(2); - Field field; - try { - field = UserConfigurations.class.getDeclaredField(propertyName); - if (field != null) { - field.set(this, httpServletRequest.getHeader(headerName)); - } - } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | - IllegalAccessException e) { - log.log(Level.WARNING, "Could not extract values from header", e); - } - } - } - return this; - } - private void fillValues(Function getValue) { for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) { try { @@ -181,10 +161,6 @@ public Properties properties() { return properties; } - public static BeanInfo getBeanInfo() { - return beanInfo; - } - public String getErixaHotfolder() { return erixaHotfolder; } diff --git a/src/main/java/health/ere/ps/service/common/security/SecretsManagerService.java b/src/main/java/health/ere/ps/service/common/security/SecretsManagerService.java index 0d96dfecc..1a997cfe2 100644 --- a/src/main/java/health/ere/ps/service/common/security/SecretsManagerService.java +++ b/src/main/java/health/ere/ps/service/common/security/SecretsManagerService.java @@ -70,7 +70,7 @@ void createSSLContext() { } } - public SSLContext createSSLContext(UserConfigurations userConfigurations) { + public SSLContext createSSLContext(IUserConfigurations userConfigurations) { byte[] clientCertificateBytes = getClientCertificateBytes(userConfigurations); try (ByteArrayInputStream certificateInputStream = new ByteArrayInputStream(clientCertificateBytes)) { return createSSLContext(userConfigurations.getClientCertificatePassword(), certificateInputStream); diff --git a/src/main/java/health/ere/ps/service/connector/endpoint/EndpointDiscoveryService.java b/src/main/java/health/ere/ps/service/connector/endpoint/EndpointDiscoveryService.java index ea59c69c3..2381cb3d9 100644 --- a/src/main/java/health/ere/ps/service/connector/endpoint/EndpointDiscoveryService.java +++ b/src/main/java/health/ere/ps/service/connector/endpoint/EndpointDiscoveryService.java @@ -91,7 +91,7 @@ public void obtainConfiguration(boolean throwEndpointException) throws IOExcepti .path("/connector.sds") .request(); - IUserConfigurations userConfigurations = userConfig.getUserConfigurations(); + IUserConfigurations userConfigurations = userConfig.getConfigurations(); String basicAuthUsername = userConfigurations.getBasicAuthUsername(); String basicAuthPassword = userConfigurations.getBasicAuthPassword(); if(basicAuthUsername != null && !basicAuthUsername.equals("")) { @@ -208,10 +208,10 @@ private void extractAndSetConnectorVersion(Document document) { if (versionContainingText.contains("PTV4+") || versionContainingText.contains("PTV4Plus")) { log.info("Connector version PTV4+ found in connector.sds"); - userConfig.getUserConfigurations().setVersion("PTV4+"); + userConfig.getConfigurations().setVersion("PTV4+"); } else if (versionContainingText.contains("PTV4")) { log.info("Connector version PTV4 found in connector.sds"); - userConfig.getUserConfigurations().setVersion("PTV4"); + userConfig.getConfigurations().setVersion("PTV4"); } else { log.warning("Could not determine the version of the connector to use from connector.sds, " + "using the one from the configuration:" + userConfig.getConnectorVersion()); diff --git a/src/main/java/health/ere/ps/service/connector/provider/AbstractConnectorServicesProvider.java b/src/main/java/health/ere/ps/service/connector/provider/AbstractConnectorServicesProvider.java index 447a63356..b92a2da40 100644 --- a/src/main/java/health/ere/ps/service/connector/provider/AbstractConnectorServicesProvider.java +++ b/src/main/java/health/ere/ps/service/connector/provider/AbstractConnectorServicesProvider.java @@ -211,7 +211,7 @@ private void configureBindingProvider(BindingProvider bindingProvider) { bindingProvider.getRequestContext().put("com.sun.xml.ws.transport.https.client.hostname.verifier", new SSLUtilities.FakeHostnameVerifier()); - IUserConfigurations userConfigurations = getUserConfig().getUserConfigurations(); + IUserConfigurations userConfigurations = getUserConfig().getConfigurations(); String basicAuthUsername = userConfigurations.getBasicAuthUsername(); String basicAuthPassword = userConfigurations.getBasicAuthPassword(); diff --git a/src/main/java/health/ere/ps/service/connector/provider/SingleConnectorServicesProvider.java b/src/main/java/health/ere/ps/service/connector/provider/SingleConnectorServicesProvider.java index 3684bd2ef..68dba7da2 100644 --- a/src/main/java/health/ere/ps/service/connector/provider/SingleConnectorServicesProvider.java +++ b/src/main/java/health/ere/ps/service/connector/provider/SingleConnectorServicesProvider.java @@ -35,7 +35,7 @@ public SingleConnectorServicesProvider(UserRuntimeConfig userConfig, Event> search(RuntimeConfig runtimeConfig, String searchDisplayName) { - List> list = new ArrayList<>(); - if(searchDisplayName == null || searchDisplayName.length() < 3) { - return list; - } - try { + public List> search(RuntimeConfig runtimeConfig, String searchDisplayName) { + List> list = new ArrayList<>(); + if (searchDisplayName == null || searchDisplayName.length() < 3) { + return list; + } + try { Hashtable env = new Hashtable<>(); env.put(Context.SECURITY_PROTOCOL, "ssl"); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); - env.put(Context.PROVIDER_URL, "ldaps://"+runtimeConfig.getConnectorAddress()+":636/"); + env.put(Context.PROVIDER_URL, "ldaps://" + runtimeConfig.getConnectorAddress() + ":636/"); env.put(Context.SECURITY_AUTHENTICATION, "none"); - if(secretsManagerService != null && runtimeConfig != null && runtimeConfig.getConfigurations() != null) { - SSLSocketFactory.delegate = secretsManagerService.createSSLContext(runtimeConfig.getConfigurations()).getSocketFactory(); + if (secretsManagerService != null && runtimeConfig.getConfigurations() != null) { + SSLContext sslContext = secretsManagerService.createSSLContext(runtimeConfig.getConfigurations()); + SSLSocketFactory.delegate = sslContext.getSocketFactory(); } env.put("java.naming.ldap.factory.socket", "health.ere.ps.service.common.security.SSLSocketFactory"); LdapContext ctx = new InitialLdapContext(env, null); ctx.setRequestControls(null); - NamingEnumeration namingEnum = ctx.search("dc=data,dc=vzd", "(&(professionOID=1.2.276.0.76.4.54)(|(displayName=*"+searchDisplayName+"*)(rfc822mailbox=*"+searchDisplayName+"*)))", getSimpleSearchControls()); - while (namingEnum.hasMore ()) { + NamingEnumeration namingEnum = ctx.search("dc=data,dc=vzd", "(&(professionOID=1.2.276.0.76.4.54)(|(displayName=*" + searchDisplayName + "*)(rfc822mailbox=*" + searchDisplayName + "*)))", getSimpleSearchControls()); + while (namingEnum.hasMore()) { SearchResult result = (SearchResult) namingEnum.next(); Attributes attrs = result.getAttributes(); Map map = new HashMap<>(); NamingEnumeration enumeration = attrs.getAll(); - while(enumeration.hasMore()) { - Attribute attribute = enumeration.next(); - map.put(attribute.getID(), attribute.get()); + while (enumeration.hasMore()) { + Attribute attribute = enumeration.next(); + map.put(attribute.getID(), attribute.get()); } list.add(map); - } + } namingEnum.close(); ctx.close(); } catch (Exception e) { - if(e instanceof SizeLimitExceededException) { - log.info("Received more than expected LDAP entries. "+e.getMessage()); + if (e instanceof SizeLimitExceededException) { + log.info("Received more than expected LDAP entries. " + e.getMessage()); } else { log.log(Level.WARNING, "Could not search LDAP", e); throw new RuntimeException(e); } } finally { - if(secretsManagerService != null) { + if (secretsManagerService != null) { SSLSocketFactory.delegate = null; } } - return list; + return list; } - + private SearchControls getSimpleSearchControls() { SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); @@ -181,14 +181,14 @@ private SearchControls getSimpleSearchControls() { public void onBundlesWithAccessCodeEvent(@ObservesAsync BundlesWithAccessCodeEvent bundlesWithAccessCodeEvent) { try { - if("169".equals(bundlesWithAccessCodeEvent.getFlowtype())) { - Map kimConfigMap = bundlesWithAccessCodeEvent.getKimConfigMap(); - if("true".equals(kimConfigMap.get("preventKIMMail"))) { - log.info("Please do not send a KIM E-Mail"); - return; - } - for(List list : bundlesWithAccessCodeEvent.getBundleWithAccessCodeOrThrowable()) { - for(BundleWithAccessCodeOrThrowable bundle : list) { + if ("169".equals(bundlesWithAccessCodeEvent.getFlowtype())) { + Map kimConfigMap = bundlesWithAccessCodeEvent.getKimConfigMap(); + if ("true".equals(kimConfigMap.get("preventKIMMail"))) { + log.info("Please do not send a KIM E-Mail"); + return; + } + for (List list : bundlesWithAccessCodeEvent.getBundleWithAccessCodeOrThrowable()) { + for (BundleWithAccessCodeOrThrowable bundle : list) { sendERezeptToKIMAddress(kimConfigMap.get("fromKimAddress"), bundlesWithAccessCodeEvent.getToKimAddress(), bundlesWithAccessCodeEvent.getNoteToPharmacy(), kimConfigMap.get("smtpHostServer"), getSmtpUser(kimConfigMap), kimConfigMap.get("smtpPassword"), getERezeptToken(bundle.getBundle(), bundle.getAccessCode())); } } @@ -201,7 +201,7 @@ public void onBundlesWithAccessCodeEvent(@ObservesAsync BundlesWithAccessCodeEve public void onVZDSearchEvent(@ObservesAsync VZDSearchEvent vZDSearchEvent) { try { - List> results = search(vZDSearchEvent.getRuntimeConfig(), vZDSearchEvent.getSearch()); + List> results = search(vZDSearchEvent.getRuntimeConfig(), vZDSearchEvent.getSearch()); VZDSearchResultEvent searchResultEvent = new VZDSearchResultEvent(results, vZDSearchEvent.getReplyTo(), vZDSearchEvent.getId()); vZDSearchResultEvent.fireAsync(searchResultEvent); } catch (Exception e) { @@ -211,10 +211,10 @@ public void onVZDSearchEvent(@ObservesAsync VZDSearchEvent vZDSearchEvent) { } private String getERezeptToken(Bundle bundle, String accessCode) { - return "Task/"+bundle.getIdentifier().getValue()+"/$accept?ac="+accessCode; + return "Task/" + bundle.getIdentifier().getValue() + "/$accept?ac=" + accessCode; } private String getSmtpUser(Map kimConfigMap) { - return kimConfigMap.get("fromKimAddress")+"#"+kimConfigMap.get("smtpFdServer")+"#"+kimConfigMap.get("mandant-id")+"#"+kimConfigMap.get("client-system-id")+"#"+kimConfigMap.get("workplace-id"); + return kimConfigMap.get("fromKimAddress") + "#" + kimConfigMap.get("smtpFdServer") + "#" + kimConfigMap.get("mandant-id") + "#" + kimConfigMap.get("client-system-id") + "#" + kimConfigMap.get("workplace-id"); } } diff --git a/src/main/java/health/ere/ps/service/gematik/PharmacyService.java b/src/main/java/health/ere/ps/service/gematik/PharmacyService.java index 5c311058c..b4bc7342c 100644 --- a/src/main/java/health/ere/ps/service/gematik/PharmacyService.java +++ b/src/main/java/health/ere/ps/service/gematik/PharmacyService.java @@ -69,6 +69,8 @@ import java.util.stream.Stream; import java.util.zip.GZIPInputStream; +import static com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_SELF_REFERENCES; + /* Note: reading, writing and resending of failed rejects are done by one Thread (see scheduledExecutorService), no additional synchronization for retrying reject is need */ @ApplicationScoped public class PharmacyService implements AutoCloseable { diff --git a/src/main/java/health/ere/ps/service/status/StatusService.java b/src/main/java/health/ere/ps/service/status/StatusService.java index beedb586d..c19b41ab7 100644 --- a/src/main/java/health/ere/ps/service/status/StatusService.java +++ b/src/main/java/health/ere/ps/service/status/StatusService.java @@ -1,6 +1,7 @@ package health.ere.ps.service.status; import de.gematik.ws.conn.eventservice.v7.GetCards; +import de.health.service.cetp.config.IUserConfigurations; import health.ere.ps.config.AppConfig; import health.ere.ps.config.RuntimeConfig; import health.ere.ps.config.UserConfig; @@ -87,7 +88,7 @@ public void onRequestStatus(@ObservesAsync RequestStatusEvent requestStatusEvent } } - private Pair getClientCertificatePair(UserConfigurations configurations) { + private Pair getClientCertificatePair(IUserConfigurations configurations) { String clientCertificate = configurations.getClientCertificate(); String clientCertificatePassword = configurations.getClientCertificatePassword(); try { @@ -108,8 +109,9 @@ public Status getStatus(RuntimeConfig runtimeConfig) { Status status = new Status(); String connectorBaseURL = userConfig.getConnectorBaseURL(); - boolean runtimeConfigurationsIsNotNull = (runtimeConfig != null && runtimeConfig.getConfigurations() != null); - UserConfigurations configurations = runtimeConfigurationsIsNotNull ? runtimeConfig.getConfigurations() : userConfig.getConfigurations(); + IUserConfigurations configurations = runtimeConfig != null + ? runtimeConfig.getConfigurations() + : userConfig.getConfigurations(); String basicAuthUsername = configurations.getBasicAuthUsername(); String basicAuthPassword = configurations.getBasicAuthPassword(); diff --git a/src/test/java/health/ere/ps/config/RuntimeConfigTest.java b/src/test/java/health/ere/ps/config/RuntimeConfigTest.java index ec6711bc5..5a74ef7af 100644 --- a/src/test/java/health/ere/ps/config/RuntimeConfigTest.java +++ b/src/test/java/health/ere/ps/config/RuntimeConfigTest.java @@ -1,17 +1,16 @@ package health.ere.ps.config; -import static org.junit.jupiter.api.Assertions.assertEquals; +import health.ere.ps.event.AbortTasksEvent; +import health.ere.ps.model.config.UserConfigurations; +import jakarta.json.Json; +import jakarta.json.JsonObject; +import org.junit.jupiter.api.Test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Optional; -import org.junit.jupiter.api.Test; - -import health.ere.ps.event.AbortTasksEvent; -import health.ere.ps.model.config.UserConfigurations; -import jakarta.json.Json; -import jakarta.json.JsonObject; +import static org.junit.jupiter.api.Assertions.assertEquals; public class RuntimeConfigTest { @Test @@ -55,7 +54,7 @@ public void testUserConfig() { assertEquals("5", runtimeConfig.getUserId()); assertEquals("6", runtimeConfig.getWorkplaceId()); - runtimeConfig.getConfigurations().setConnectorBaseURL("7"); + ((UserConfigurations) runtimeConfig.getConfigurations()).setConnectorBaseURL("7"); assertEquals("7", runtimeConfig.getConnectorBaseURL()); } diff --git a/src/test/java/health/ere/ps/config/UserConfigTest.java b/src/test/java/health/ere/ps/config/UserConfigTest.java index 8a3ef72e8..696d712bf 100644 --- a/src/test/java/health/ere/ps/config/UserConfigTest.java +++ b/src/test/java/health/ere/ps/config/UserConfigTest.java @@ -1,5 +1,6 @@ package health.ere.ps.config; +import de.health.service.cetp.config.IUserConfigurations; import health.ere.ps.model.config.UserConfigurations; import health.ere.ps.service.config.UserConfigurationService; import org.junit.jupiter.api.BeforeEach; @@ -27,7 +28,7 @@ public void setup() { @Test public void testGetConfigurations() { - UserConfigurations configurations = userConfig.getConfigurations(); + IUserConfigurations configurations = userConfig.getConfigurations(); assertEquals("https://example.com", configurations.getConnectorBaseURL()); assertEquals("123456", configurations.getMandantId()); // Add more assertions for other configuration properties diff --git a/src/test/java/health/ere/ps/service/connector/SingleConnectorServicesProviderTest.java b/src/test/java/health/ere/ps/service/connector/SingleConnectorServicesProviderTest.java index e9d34b07b..9f9899274 100644 --- a/src/test/java/health/ere/ps/service/connector/SingleConnectorServicesProviderTest.java +++ b/src/test/java/health/ere/ps/service/connector/SingleConnectorServicesProviderTest.java @@ -2,8 +2,8 @@ import health.ere.ps.config.RuntimeConfig; import health.ere.ps.config.UserConfig; +import health.ere.ps.model.config.UserConfigurations; import health.ere.ps.service.connector.provider.SingleConnectorServicesProvider; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import javax.net.ssl.KeyManager; @@ -40,7 +40,7 @@ public void testConstructorWithBaseUrl() { public void testConstructorWithMultiKeyWithoutPassword() { jakarta.enterprise.event.Event exceptionEvent = mock(jakarta.enterprise.event.Event.class); UserConfig runtimeConfig = new RuntimeConfig(); - runtimeConfig.getConfigurations().setClientCertificate(new File(keystoreFileName).toURI().toString()+"?alias=key2"); + ((UserConfigurations) runtimeConfig.getConfigurations()).setClientCertificate(new File(keystoreFileName).toURI().toString()+"?alias=key2"); new SingleConnectorServicesProvider(runtimeConfig, exceptionEvent); verify(exceptionEvent).fireAsync(any()); } @@ -49,8 +49,8 @@ public void testConstructorWithMultiKeyWithoutPassword() { public void testConstructorWithMultiKeyWithPassword() { jakarta.enterprise.event.Event exceptionEvent = mock(jakarta.enterprise.event.Event.class); UserConfig runtimeConfig = new RuntimeConfig(); - runtimeConfig.getConfigurations().setClientCertificate(new File(keystoreFileName).toURI().toString()+"?alias=key2"); - runtimeConfig.getConfigurations().setClientCertificatePassword(keystoreFilePass); + ((UserConfigurations) runtimeConfig.getConfigurations()).setClientCertificate(new File(keystoreFileName).toURI().toString()+"?alias=key2"); + ((UserConfigurations) runtimeConfig.getConfigurations()).setClientCertificatePassword(keystoreFilePass); new SingleConnectorServicesProvider(runtimeConfig, exceptionEvent); verify(exceptionEvent, times(0)).fireAsync(any()); } diff --git a/src/test/java/health/ere/ps/service/idp/client/IdpClientTest.java b/src/test/java/health/ere/ps/service/idp/client/IdpClientTest.java index 1f5b914e0..8af65deb9 100644 --- a/src/test/java/health/ere/ps/service/idp/client/IdpClientTest.java +++ b/src/test/java/health/ere/ps/service/idp/client/IdpClientTest.java @@ -7,9 +7,9 @@ import health.ere.ps.exception.idp.IdpClientException; import health.ere.ps.exception.idp.IdpException; import health.ere.ps.exception.idp.IdpJoseException; +import health.ere.ps.model.config.UserConfigurations; import health.ere.ps.model.idp.client.IdpTokenResult; import health.ere.ps.profile.RUTestProfile; -import health.ere.ps.profile.TitusTestProfile; import health.ere.ps.service.connector.cards.ConnectorCardsService; import health.ere.ps.service.connector.certificate.CardCertificateReaderService; import health.ere.ps.service.connector.endpoint.SSLUtilities; @@ -113,14 +113,18 @@ public void test_With_RuntimeConfig() throws IdpJoseException, RuntimeConfig runtimeConfig = new RuntimeConfig(); runtimeConfig.setEHBAHandle("1-1-ARZT-WaltrautFinkengrund01"); - runtimeConfig.setSMCBHandle("1-2-ARZT-WaltrautDrombusch01"); - runtimeConfig.getConfigurations().setConnectorBaseURL("https://kon-instanz2.titus.gematik.solutions"); - runtimeConfig.getConfigurations().setVersion("PTV4+"); - runtimeConfig.getConfigurations().setMandantId("ps_erp_incentergy_01"); - runtimeConfig.getConfigurations().setWorkplaceId("CATS"); - runtimeConfig.getConfigurations().setClientSystemId("ps_erp_incentergy_01_HBA"); - runtimeConfig.getConfigurations().setClientCertificate("data:application/x-pkcs12;base64,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"); - runtimeConfig.getConfigurations().setClientCertificatePassword("00"); + runtimeConfig.setSMCBHandle("1-2-" + + "ARZT-WaltrautDrombusch01"); + + UserConfigurations configurations = (UserConfigurations) runtimeConfig.getConfigurations(); + + configurations.setConnectorBaseURL("https://kon-instanz2.titus.gematik.solutions"); + configurations.setVersion("PTV4+"); + configurations.setMandantId("ps_erp_incentergy_01"); + configurations.setWorkplaceId("CATS"); + configurations.setClientSystemId("ps_erp_incentergy_01_HBA"); + configurations.setClientCertificate("data:application/x-pkcs12;base64,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"); + configurations.setClientCertificatePassword("00"); X509Certificate x509Certificate = cardCertificateReaderService.retrieveSmcbCardCertificate(runtimeConfig.getSMCBHandle());