diff --git a/pom.xml b/pom.xml index 2bf906cda..7d2780821 100644 --- a/pom.xml +++ b/pom.xml @@ -254,7 +254,11 @@ org.testcontainers testcontainers - 1.17.5 + + + + org.testcontainers + junit-jupiter diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java index a96bfd5eb..1664a6226 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsDocumentationsImpl.java @@ -11,7 +11,7 @@ import fr.insee.rmes.exceptions.ErrorCodes; import fr.insee.rmes.exceptions.RmesException; import fr.insee.rmes.exceptions.RmesNotAcceptableException; -import fr.insee.rmes.external_services.export.XDocReport; +import fr.insee.rmes.external.services.export.XDocReport; import fr.insee.rmes.model.operations.documentations.Documentation; import fr.insee.rmes.model.operations.documentations.MSD; import fr.insee.rmes.persistance.sparql_queries.operations.documentations.DocumentationsQueries; diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsImpl.java b/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsImpl.java index 5af61daf6..dcea9592a 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsImpl.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/operations/OperationsImpl.java @@ -10,7 +10,7 @@ import fr.insee.rmes.bauhaus_services.rdf_utils.RdfService; import fr.insee.rmes.config.swagger.model.IdLabelTwoLangs; import fr.insee.rmes.exceptions.RmesException; -import fr.insee.rmes.external_services.export.XDocReport; +import fr.insee.rmes.external.services.export.XDocReport; import fr.insee.rmes.model.operations.Indicator; import fr.insee.rmes.model.operations.Operation; import fr.insee.rmes.model.operations.Series; diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RdfConnectionDetails.java b/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RdfConnectionDetails.java new file mode 100644 index 000000000..1deb76101 --- /dev/null +++ b/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RdfConnectionDetails.java @@ -0,0 +1,7 @@ +package fr.insee.rmes.bauhaus_services.rdf_utils; + +public interface RdfConnectionDetails { + String getUrlServer(); + + String repositoryId(); +} diff --git a/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RepositoryGestion.java b/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RepositoryGestion.java index 388f8738b..23221f3a0 100644 --- a/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RepositoryGestion.java +++ b/src/main/java/fr/insee/rmes/bauhaus_services/rdf_utils/RepositoryGestion.java @@ -1,6 +1,5 @@ package fr.insee.rmes.bauhaus_services.rdf_utils; -import fr.insee.rmes.config.Config; import fr.insee.rmes.exceptions.RmesException; import fr.insee.rmes.persistance.ontologies.EVOC; import fr.insee.rmes.persistance.ontologies.INSEE; @@ -17,6 +16,7 @@ import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @@ -31,26 +31,24 @@ public class RepositoryGestion { private static final String FAILURE_LOAD_OBJECT = "Failure load object : {}"; private static final String FAILURE_REPLACE_GRAPH = "Failure replace graph : "; - private static final String FAILURE_DELETE_OBJECT = "Failure delete object"; static final Logger logger = LoggerFactory.getLogger(RepositoryGestion.class); - private final Config config; - private final RepositoryUtils repositoryUtils; + private final RdfConnectionDetails rdfGestion; + private final RepositoryUtils repositoryUtils; - public RepositoryGestion(Config config, RepositoryUtils repositoryUtils) { + public RepositoryGestion(@Qualifier("rdfGestionConnectionDetails") RdfConnectionDetails rdfGestion, RepositoryUtils repositoryUtils) { + this.rdfGestion = rdfGestion; this.repositoryUtils = repositoryUtils; - this.config = config; - } + } @PostConstruct public void init(){ - repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()); + repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()); } - /** * Method which aims to produce response from a sparql query * @@ -59,8 +57,8 @@ public void init(){ * @throws RmesException */ public String getResponse(String query) throws RmesException { - return repositoryUtils.getResponse(query, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getResponse(query, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } /** @@ -71,8 +69,8 @@ public String getResponse(String query) throws RmesException { * @throws RmesException */ public HttpStatus executeUpdate(String updateQuery) throws RmesException { - return repositoryUtils.executeUpdate(updateQuery, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.executeUpdate(updateQuery, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } /** @@ -83,18 +81,18 @@ public HttpStatus executeUpdate(String updateQuery) throws RmesException { * @throws RmesException */ public JSONObject getResponseAsObject(String query) throws RmesException { - return repositoryUtils.getResponseAsObject(query, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getResponseAsObject(query, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } public JSONArray getResponseAsArray(String query) throws RmesException { - return repositoryUtils.getResponseAsArray(query, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getResponseAsArray(query, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } public JSONArray getResponseAsJSONList(String query) throws RmesException { - return repositoryUtils.getResponseAsJSONList(query, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getResponseAsJSONList(query, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } /** @@ -106,16 +104,16 @@ public JSONArray getResponseAsJSONList(String query) throws RmesException { * @throws JSONException */ public boolean getResponseAsBoolean(String query) throws RmesException { - return repositoryUtils.getResponseForAskQuery(query, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getResponseForAskQuery(query, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } public RepositoryResult getStatements(RepositoryConnection con, Resource subject) throws RmesException { RepositoryResult statements = null; if (con == null) { - con = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + con = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); } try { @@ -146,8 +144,8 @@ public RepositoryResult getStatementsPredicateObject(RepositoryConnec throws RmesException { if (con == null) { - con = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + con = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); } RepositoryResult statements = null; @@ -160,15 +158,15 @@ public RepositoryResult getStatementsPredicateObject(RepositoryConnec } public File getGraphAsFile(String context) throws RmesException { - if (context != null) return repositoryUtils.getCompleteGraphInTrig(repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()), context); - return repositoryUtils.getAllGraphsInZip(repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + if (context != null) return repositoryUtils.getCompleteGraphInTrig(repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()), context); + return repositoryUtils.getAllGraphsInZip(repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } public String[] getAllGraphs() throws RmesException { - return repositoryUtils.getAllGraphs(repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getAllGraphs(repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } public void closeStatements(RepositoryResult statements) throws RmesException { @@ -181,8 +179,8 @@ public void closeStatements(RepositoryResult statements) throws RmesE public void loadConcept(IRI concept, Model model, List> notesToDeleteAndUpdate) throws RmesException { - try (RepositoryConnection conn = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection() ){ + try (RepositoryConnection conn = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection() ){ // notes to delete for (IRI note : notesToDeleteAndUpdate.get(0)) { conn.remove(note, null, null); @@ -207,8 +205,8 @@ public void deleteTripletByPredicateAndValue(Resource object, IRI predicate, Res public void deleteTripletByPredicateAndValue(Resource object, IRI predicate, Resource graph, Value value) throws RmesException { try { - RepositoryConnection conn = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + RepositoryConnection conn = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); conn.remove(object, predicate, value, graph); conn.close(); @@ -276,8 +274,8 @@ public void replaceGraph(Resource graph, Model model, RepositoryConnection conn) private void processConnection(Consumer processor, RepositoryConnection initialConnection, String message)throws RmesException{ try { if (initialConnection == null) { - initialConnection = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + initialConnection = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); } processor.accept(initialConnection); initialConnection.close(); @@ -288,15 +286,15 @@ private void processConnection(Consumer processor, Reposit public HttpStatus persistFile(InputStream input, RDFFormat format, String graph) throws RmesException { - return repositoryUtils.persistFile(input, format, graph, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()), null); + return repositoryUtils.persistFile(input, format, graph, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()), null); } public void loadObjectWithReplaceLinks(IRI object, Model model) throws RmesException { - try (RepositoryConnection conn=repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection();) + try (RepositoryConnection conn=repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection();) { clearReplaceLinks(object); loadSimpleObject(object, model, conn); @@ -308,8 +306,8 @@ public void loadObjectWithReplaceLinks(IRI object, Model model) throws RmesExcep public void objectsValidation(List collectionsToValidateList, Model model) throws RmesException { try { - RepositoryConnection conn=repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + RepositoryConnection conn=repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); for (IRI item : collectionsToValidateList) { conn.remove(item, INSEE.VALIDATION_STATE, null); conn.remove(item, INSEE.IS_VALIDATED, null); @@ -324,8 +322,8 @@ public void objectsValidation(List collectionsToValidateList, Model model) public void objectValidation(IRI ressourceURI, Model model) throws RmesException { try { - RepositoryConnection conn=repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + RepositoryConnection conn=repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); conn.remove(ressourceURI, INSEE.VALIDATION_STATE, null); conn.remove(ressourceURI, INSEE.IS_VALIDATED, null); conn.add(model); @@ -348,8 +346,8 @@ private void clearReplaceLinks(Resource object) throws RmesException { private void getStatementsAndRemove(Resource object, List typeOfLink) throws RmesException { String exceptionCirucmstances = ""; - try(RepositoryConnection conn = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection()){ + try(RepositoryConnection conn = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection()){ for (IRI predicat : typeOfLink) { RepositoryResult statements = null; exceptionCirucmstances="get " + predicat + " links from " + object; @@ -365,8 +363,8 @@ private void getStatementsAndRemove(Resource object, List typeOfLink) } public void clearStructureNodeAndComponents(Resource structure) throws RmesException { - repositoryUtils.clearStructureAndComponents(structure, repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + repositoryUtils.clearStructureAndComponents(structure, repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } public void keepHierarchicalOperationLinks(Resource object, Model model) throws RmesException { @@ -374,8 +372,8 @@ public void keepHierarchicalOperationLinks(Resource object, Model model) throws } private void getHierarchicalOperationLinksModel(Resource object, Model model, List typeOfLink) throws RmesException { - RepositoryConnection conn = repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + RepositoryConnection conn = repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); for (IRI predicat : typeOfLink) { RepositoryResult statements; try { @@ -411,8 +409,8 @@ public void loadSimpleObject(IRI geoIRI, Model model) throws RmesException { } public RepositoryConnection getConnection() throws RmesException { - return repositoryUtils.getConnection(repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion())); + return repositoryUtils.getConnection(repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId())); } @@ -420,8 +418,8 @@ public void overrideTriplets(IRI simsUri, Model model, Resource graph) throws Rm try { - RepositoryConnection connection =repositoryUtils.initRepository(config.getRdfServerGestion(), - config.getRepositoryIdGestion()).getConnection(); + RepositoryConnection connection =repositoryUtils.initRepository(rdfGestion.getUrlServer(), + rdfGestion.repositoryId()).getConnection(); model.predicates().forEach(predicate -> connection.remove(simsUri, predicate, null, graph)); connection.add(model); connection.close(); diff --git a/src/main/java/fr/insee/rmes/config/Config.java b/src/main/java/fr/insee/rmes/config/Config.java index af473dccd..14c8e1707 100644 --- a/src/main/java/fr/insee/rmes/config/Config.java +++ b/src/main/java/fr/insee/rmes/config/Config.java @@ -32,10 +32,6 @@ public class Config { /******************************************************/ /** DATABASES ***********************************/ /******************************************************/ - @Value("${fr.insee.rmes.bauhaus.sesame.gestion.sesameServer}") - private String rdfServerGestion; - @Value("${fr.insee.rmes.bauhaus.sesame.gestion.repository}") - private String idRepositoryGestion; @Value("${fr.insee.rmes.bauhaus.sesame.gestion.baseURI}") private String baseUriGestion; @@ -151,14 +147,6 @@ public String getBaseGraph() { return baseGraph; } - public String getRdfServerGestion() { - return rdfServerGestion; - } - - public String getRepositoryIdGestion() { - return idRepositoryGestion; - } - public String getBaseUriGestion() { return baseUriGestion; } diff --git a/src/main/java/fr/insee/rmes/external_services/authentication/stamps/RmesStampsImpl.java b/src/main/java/fr/insee/rmes/external/services/authentication/stamps/RmesStampsImpl.java similarity index 98% rename from src/main/java/fr/insee/rmes/external_services/authentication/stamps/RmesStampsImpl.java rename to src/main/java/fr/insee/rmes/external/services/authentication/stamps/RmesStampsImpl.java index 2ab003071..9e39c9182 100644 --- a/src/main/java/fr/insee/rmes/external_services/authentication/stamps/RmesStampsImpl.java +++ b/src/main/java/fr/insee/rmes/external/services/authentication/stamps/RmesStampsImpl.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.authentication.stamps; +package fr.insee.rmes.external.services.authentication.stamps; import fr.insee.rmes.config.auth.security.UserDecoder; import fr.insee.rmes.config.auth.user.Stamp; diff --git a/src/main/java/fr/insee/rmes/external_services/authentication/stamps/StampsService.java b/src/main/java/fr/insee/rmes/external/services/authentication/stamps/StampsService.java similarity index 80% rename from src/main/java/fr/insee/rmes/external_services/authentication/stamps/StampsService.java rename to src/main/java/fr/insee/rmes/external/services/authentication/stamps/StampsService.java index 963544623..18a7d7af6 100644 --- a/src/main/java/fr/insee/rmes/external_services/authentication/stamps/StampsService.java +++ b/src/main/java/fr/insee/rmes/external/services/authentication/stamps/StampsService.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.authentication.stamps; +package fr.insee.rmes.external.services.authentication.stamps; import fr.insee.rmes.config.auth.user.Stamp; import fr.insee.rmes.exceptions.RmesException; diff --git a/src/main/java/fr/insee/rmes/external_services/export/ClasspathUriResolver.java b/src/main/java/fr/insee/rmes/external/services/export/ClasspathUriResolver.java similarity index 95% rename from src/main/java/fr/insee/rmes/external_services/export/ClasspathUriResolver.java rename to src/main/java/fr/insee/rmes/external/services/export/ClasspathUriResolver.java index f8afe4132..6113e6e2b 100644 --- a/src/main/java/fr/insee/rmes/external_services/export/ClasspathUriResolver.java +++ b/src/main/java/fr/insee/rmes/external/services/export/ClasspathUriResolver.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.export; +package fr.insee.rmes.external.services.export; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/fr/insee/rmes/external_services/export/XDocReport.java b/src/main/java/fr/insee/rmes/external/services/export/XDocReport.java similarity index 98% rename from src/main/java/fr/insee/rmes/external_services/export/XDocReport.java rename to src/main/java/fr/insee/rmes/external/services/export/XDocReport.java index 5a2783ca9..920de295e 100644 --- a/src/main/java/fr/insee/rmes/external_services/export/XDocReport.java +++ b/src/main/java/fr/insee/rmes/external/services/export/XDocReport.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.export; +package fr.insee.rmes.external.services.export; import fr.insee.rmes.bauhaus_services.operations.operations.VarBookExportBuilder; import fr.insee.rmes.exceptions.RmesException; diff --git a/src/main/java/fr/insee/rmes/external_services/rbac/RBACService.java b/src/main/java/fr/insee/rmes/external/services/rbac/RBACService.java similarity index 82% rename from src/main/java/fr/insee/rmes/external_services/rbac/RBACService.java rename to src/main/java/fr/insee/rmes/external/services/rbac/RBACService.java index 9347ebaf2..fbc86b8db 100644 --- a/src/main/java/fr/insee/rmes/external_services/rbac/RBACService.java +++ b/src/main/java/fr/insee/rmes/external/services/rbac/RBACService.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.rbac; +package fr.insee.rmes.external.services.rbac; import fr.insee.rmes.model.rbac.RBAC; diff --git a/src/main/java/fr/insee/rmes/external_services/rbac/RBACServiceImpl.java b/src/main/java/fr/insee/rmes/external/services/rbac/RBACServiceImpl.java similarity index 98% rename from src/main/java/fr/insee/rmes/external_services/rbac/RBACServiceImpl.java rename to src/main/java/fr/insee/rmes/external/services/rbac/RBACServiceImpl.java index 99d855d13..2ad038fd8 100644 --- a/src/main/java/fr/insee/rmes/external_services/rbac/RBACServiceImpl.java +++ b/src/main/java/fr/insee/rmes/external/services/rbac/RBACServiceImpl.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.rbac; +package fr.insee.rmes.external.services.rbac; import fr.insee.rmes.config.auth.RBACConfiguration; import fr.insee.rmes.model.rbac.RBAC; diff --git a/src/main/java/fr/insee/rmes/external/sources/RdfGestionConnectionDetails.java b/src/main/java/fr/insee/rmes/external/sources/RdfGestionConnectionDetails.java new file mode 100644 index 000000000..24c650f17 --- /dev/null +++ b/src/main/java/fr/insee/rmes/external/sources/RdfGestionConnectionDetails.java @@ -0,0 +1,25 @@ +package fr.insee.rmes.external.sources; + +import fr.insee.rmes.bauhaus_services.rdf_utils.RdfConnectionDetails; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.bind.ConstructorBinding; + +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; + +@ConfigurationProperties(prefix = "fr.insee.rmes.bauhaus.sesame.gestion") +@Qualifier("rdfGestionConnectionDetails") +public record RdfGestionConnectionDetails(URL urlServer, String repositoryId) implements RdfConnectionDetails { + + @ConstructorBinding + public RdfGestionConnectionDetails(String sesameServer, String repository) throws MalformedURLException { + this(URI.create(sesameServer).toURL(), repository); + } + + @Override + public String getUrlServer() { + return urlServer.toString(); + } +} diff --git a/src/main/java/fr/insee/rmes/webservice/PublicResources.java b/src/main/java/fr/insee/rmes/webservice/PublicResources.java index dba3760d2..54a71ebf1 100644 --- a/src/main/java/fr/insee/rmes/webservice/PublicResources.java +++ b/src/main/java/fr/insee/rmes/webservice/PublicResources.java @@ -6,7 +6,7 @@ import fr.insee.rmes.config.swagger.model.LabelUrl; import fr.insee.rmes.config.swagger.model.application.Init; import fr.insee.rmes.exceptions.RmesException; -import fr.insee.rmes.external_services.authentication.stamps.StampsService; +import fr.insee.rmes.external.services.authentication.stamps.StampsService; import fr.insee.rmes.model.dissemination_status.DisseminationStatus; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.ArraySchema; diff --git a/src/main/java/fr/insee/rmes/webservice/UserResources.java b/src/main/java/fr/insee/rmes/webservice/UserResources.java index abe14fb9e..fd0909964 100644 --- a/src/main/java/fr/insee/rmes/webservice/UserResources.java +++ b/src/main/java/fr/insee/rmes/webservice/UserResources.java @@ -4,8 +4,8 @@ import fr.insee.rmes.config.auth.user.Stamp; import fr.insee.rmes.config.auth.user.User; import fr.insee.rmes.exceptions.RmesException; -import fr.insee.rmes.external_services.authentication.stamps.StampsService; -import fr.insee.rmes.external_services.rbac.RBACService; +import fr.insee.rmes.external.services.authentication.stamps.StampsService; +import fr.insee.rmes.external.services.rbac.RBACService; import fr.insee.rmes.model.rbac.RBAC; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsImplStubContainer.java b/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsImplStubContainer.java new file mode 100644 index 000000000..c58d4b4cf --- /dev/null +++ b/src/test/java/fr/insee/rmes/bauhaus_services/operations/OperationsImplStubContainer.java @@ -0,0 +1,13 @@ +package fr.insee.rmes.bauhaus_services.operations; + +import fr.insee.rmes.bauhaus_services.rdf_utils.RdfConnectionDetails; +import fr.insee.rmes.bauhaus_services.rdf_utils.RepositoryGestion; +import fr.insee.rmes.bauhaus_services.rdf_utils.RepositoryInitiator; +import fr.insee.rmes.bauhaus_services.rdf_utils.RepositoryUtils; + +public class OperationsImplStubContainer extends OperationsImpl { + + public OperationsImplStubContainer(RdfConnectionDetails rdfGestionConectionDetails) { + repoGestion=new RepositoryGestion(rdfGestionConectionDetails, new RepositoryUtils(null, RepositoryInitiator.Type.DISABLED)); + } +} diff --git a/src/test/java/fr/insee/rmes/bauhaus_services/structures/utils/StructureUtilsTest.java b/src/test/java/fr/insee/rmes/bauhaus_services/structures/utils/StructureUtilsTest.java index e410554c1..9561be896 100644 --- a/src/test/java/fr/insee/rmes/bauhaus_services/structures/utils/StructureUtilsTest.java +++ b/src/test/java/fr/insee/rmes/bauhaus_services/structures/utils/StructureUtilsTest.java @@ -5,14 +5,10 @@ import fr.insee.rmes.config.Config; import fr.insee.rmes.exceptions.RmesBadRequestException; import fr.insee.rmes.exceptions.RmesException; -import fr.insee.rmes.model.geography.GeoFeature; import fr.insee.rmes.model.structures.Structure; -import fr.insee.rmes.persistance.sparql_queries.GenericQueries; import fr.insee.rmes.persistance.sparql_queries.structures.StructureQueries; -import org.json.JSONArray; import org.json.JSONObject; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; @@ -22,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; + import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; diff --git a/src/test/java/fr/insee/rmes/external_services/rbac/RBACServiceImplTest.java b/src/test/java/fr/insee/rmes/external/services/rbac/RBACServiceImplTest.java similarity index 90% rename from src/test/java/fr/insee/rmes/external_services/rbac/RBACServiceImplTest.java rename to src/test/java/fr/insee/rmes/external/services/rbac/RBACServiceImplTest.java index 3a817128d..77b17f143 100644 --- a/src/test/java/fr/insee/rmes/external_services/rbac/RBACServiceImplTest.java +++ b/src/test/java/fr/insee/rmes/external/services/rbac/RBACServiceImplTest.java @@ -1,4 +1,4 @@ -package fr.insee.rmes.external_services.rbac; +package fr.insee.rmes.external.services.rbac; import fr.insee.rmes.config.auth.RBACConfiguration; import fr.insee.rmes.model.rbac.RBAC; @@ -10,7 +10,6 @@ import java.util.List; import java.util.Map; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest diff --git a/src/test/java/fr/insee/rmes/integration/authorizations/PublicResourcesAuthorizationsTest.java b/src/test/java/fr/insee/rmes/integration/authorizations/PublicResourcesAuthorizationsTest.java index 7ad5a766f..abdde6499 100644 --- a/src/test/java/fr/insee/rmes/integration/authorizations/PublicResourcesAuthorizationsTest.java +++ b/src/test/java/fr/insee/rmes/integration/authorizations/PublicResourcesAuthorizationsTest.java @@ -6,7 +6,7 @@ import fr.insee.rmes.config.auth.security.CommonSecurityConfiguration; import fr.insee.rmes.config.auth.security.DefaultSecurityContext; import fr.insee.rmes.config.auth.security.OpenIDConnectSecurityContext; -import fr.insee.rmes.external_services.authentication.stamps.StampsService; +import fr.insee.rmes.external.services.authentication.stamps.StampsService; import fr.insee.rmes.webservice.PublicResources; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; diff --git a/src/test/java/fr/insee/rmes/testcontainers/queries/GraphDBContainer.java b/src/test/java/fr/insee/rmes/testcontainers/queries/GraphDBContainer.java new file mode 100644 index 000000000..0c8ea7e93 --- /dev/null +++ b/src/test/java/fr/insee/rmes/testcontainers/queries/GraphDBContainer.java @@ -0,0 +1,64 @@ +package fr.insee.rmes.testcontainers.queries; + +import org.testcontainers.containers.Container; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.MountableFile; + +import java.io.IOException; + +import static org.assertj.core.api.Assertions.assertThat; + +public class GraphDBContainer extends GenericContainer { + public static final String DOCKER_ENTRYPOINT_INITDB = "/docker-entrypoint-initdb"; + private String folder; + + public GraphDBContainer(final String dockerImageName) { + super(dockerImageName); + withExposedPorts(7200); + } + + @Override + public void start() { + super.start(); + withInitFolder("/testcontainers").withExposedPorts(7200); + withRepository("config.ttl"); + } + + public GraphDBContainer withInitFolder(String folder){ + this.folder = folder; + return this; + } + + public GraphDBContainer withRepository(String ttlFile) { + try { + String path = copyFile(ttlFile); + execInContainer("curl", "-X", "POST", "-H", "Content-Type:multipart/form-data", "-F", "config=@" + path, "http://localhost:7200/rest/repositories"); + } catch (IOException | InterruptedException e) { + throw new AssertionError("The TTL file was not loaded"); + } + return this; + } + + public GraphDBContainer withTrigFiles(String file) { + try { + String path = copyFile(file); + execInContainer("curl", "-X", "POST", "-H", "Content-Type: application/x-trig", "--data-binary", "@" + path, "http://localhost:7200/repositories/bauhaus-test/statements"); + } catch (IOException | InterruptedException e) { + throw new AssertionError("The Trig file was not loaded"); + } + return this; + } + + private String copyFile(String file) throws IOException, InterruptedException { + String fullPath = DOCKER_ENTRYPOINT_INITDB + "/" + file; + copyFileToContainer(MountableFile.forClasspathResource(this.folder + "/" + file), fullPath); + assertThatFileExists(file); + return fullPath; + } + + private void assertThatFileExists(String file) throws IOException, InterruptedException { + Container.ExecResult lsResult = execInContainer("ls", "-al", DOCKER_ENTRYPOINT_INITDB); + String stdout = lsResult.getStdout(); + assertThat(stdout).contains(file).withFailMessage("Expecting file %1$s to be in folder %2$s of container", file, DOCKER_ENTRYPOINT_INITDB); + } +} diff --git a/src/test/java/fr/insee/rmes/testcontainers/queries/OperationFamilyTest.java b/src/test/java/fr/insee/rmes/testcontainers/queries/OperationFamilyTest.java index 67e8f415e..adf0ad2f0 100644 --- a/src/test/java/fr/insee/rmes/testcontainers/queries/OperationFamilyTest.java +++ b/src/test/java/fr/insee/rmes/testcontainers/queries/OperationFamilyTest.java @@ -1,23 +1,23 @@ package fr.insee.rmes.testcontainers.queries; import fr.insee.rmes.bauhaus_services.OperationsService; +import fr.insee.rmes.bauhaus_services.operations.OperationsImplStubContainer; +import fr.insee.rmes.config.ConfigStub; +import fr.insee.rmes.persistance.sparql_queries.operations.series.OpSeriesQueries; import org.json.JSONArray; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import static org.junit.jupiter.api.Assertions.assertEquals; -@SpringBootTest -public class OperationFamilyTest extends WithGraphDBContainer{ +class OperationFamilyTest extends WithGraphDBContainer{ - @Autowired - OperationsService operationService; + OperationsService operationService=new OperationsImplStubContainer(getRdfGestionConnectionDetails()); @Test void getAllFamilies() throws Exception { - importTrigFile("all-operations-and-indicators.trig"); + container.withTrigFiles("all-operations-and-indicators.trig"); + OpSeriesQueries.setConfig(new ConfigStub()); String result = operationService.getFamilies(); - assertEquals(new JSONArray(result).length(), 56); + assertEquals(56, new JSONArray(result).length()); } } diff --git a/src/test/java/fr/insee/rmes/testcontainers/queries/WithGraphDBContainer.java b/src/test/java/fr/insee/rmes/testcontainers/queries/WithGraphDBContainer.java index 65f8bb3e3..f76795772 100644 --- a/src/test/java/fr/insee/rmes/testcontainers/queries/WithGraphDBContainer.java +++ b/src/test/java/fr/insee/rmes/testcontainers/queries/WithGraphDBContainer.java @@ -1,50 +1,29 @@ package fr.insee.rmes.testcontainers.queries; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; -import org.testcontainers.containers.Container; -import org.testcontainers.containers.GenericContainer; -import org.testcontainers.utility.MountableFile; +import fr.insee.rmes.bauhaus_services.rdf_utils.RdfConnectionDetails; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; -import java.io.IOException; -import static org.assertj.core.api.Assertions.assertThat; +@Testcontainers public class WithGraphDBContainer { - static GenericContainer container = new GenericContainer("ontotext/graphdb:10.6.4") - .withExposedPorts(7200); - - @BeforeAll - static void beforeAll() throws IOException, InterruptedException { - container.start(); - - container.copyFileToContainer(MountableFile.forClasspathResource("/testcontainers"), "/opt/graphdb/home/testcontainers"); - container.copyFileToContainer(MountableFile.forClasspathResource("/trig"), "/opt/graphdb/home/trig"); - - Container.ExecResult lsResult = container.execInContainer("ls", "-al", "/opt/graphdb/home/testcontainers/"); - String stdout = lsResult.getStdout(); - int exitCode = lsResult.getExitCode(); - assertThat(stdout).contains("config.ttl"); - assertThat(exitCode).isZero(); - - container.execInContainer("curl", "-X", "POST", "-H", "Content-Type:multipart/form-data", "-F", "config=@/opt/graphdb/home/testcontainers/config.ttl", "http://localhost:7200/rest/repositories"); + @Container + static GraphDBContainer container = new GraphDBContainer("ontotext/graphdb:10.6.4"); + + + protected static RdfConnectionDetails getRdfGestionConnectionDetails() { + return new RdfConnectionDetails() { + @Override + public String getUrlServer() { + return "http://" + container.getHost() + ":" + container.getMappedPort(7200); + } + + @Override + public String repositoryId() { + return "bauhaus-test"; + } + }; } - @AfterAll - static void afterAll() { - container.stop(); - } - - @DynamicPropertySource - static void configureProperties(DynamicPropertyRegistry registry) { - String sesameServer = "http://" + container.getHost() + ":" + container.getMappedPort(7200); - registry.add("fr.insee.rmes.bauhaus.sesame.gestion.sesameServer", () -> sesameServer); - registry.add("fr.insee.rmes.bauhaus.sesame.gestion.repository", () -> "bauhaus-test"); - } - - public static void importTrigFile(String path) throws IOException, InterruptedException { - container.execInContainer("curl", "-X", "POST", "-H", "Content-Type: application/x-trig", "--data-binary", "@/opt/graphdb/home/trig/" + path, "http://localhost:7200/repositories/bauhaus-test/statements"); - } } diff --git a/src/test/java/fr/insee/rmes/webservice/PublicResourcesTest.java b/src/test/java/fr/insee/rmes/webservice/PublicResourcesTest.java index 4f9a79f1f..3868053e5 100644 --- a/src/test/java/fr/insee/rmes/webservice/PublicResourcesTest.java +++ b/src/test/java/fr/insee/rmes/webservice/PublicResourcesTest.java @@ -7,7 +7,7 @@ import fr.insee.rmes.config.auth.security.DefaultSecurityContext; import fr.insee.rmes.config.auth.security.OpenIDConnectSecurityContext; import fr.insee.rmes.config.auth.user.FakeUserConfiguration; -import fr.insee.rmes.external_services.authentication.stamps.StampsService; +import fr.insee.rmes.external.services.authentication.stamps.StampsService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; diff --git a/src/test/java/fr/insee/rmes/webservice/UserResourcesEnvHorsProdTest.java b/src/test/java/fr/insee/rmes/webservice/UserResourcesEnvHorsProdTest.java index a44385255..b31a06c9b 100644 --- a/src/test/java/fr/insee/rmes/webservice/UserResourcesEnvHorsProdTest.java +++ b/src/test/java/fr/insee/rmes/webservice/UserResourcesEnvHorsProdTest.java @@ -1,15 +1,14 @@ package fr.insee.rmes.webservice; import fr.insee.rmes.bauhaus_services.StampAuthorizationChecker; -import fr.insee.rmes.bauhaus_services.datasets.DatasetService; import fr.insee.rmes.config.Config; import fr.insee.rmes.config.auth.UserProviderFromSecurityContext; import fr.insee.rmes.config.auth.security.CommonSecurityConfiguration; import fr.insee.rmes.config.auth.security.DefaultSecurityContext; import fr.insee.rmes.config.auth.security.OpenIDConnectSecurityContext; import fr.insee.rmes.config.auth.user.FakeUserConfiguration; -import fr.insee.rmes.external_services.authentication.stamps.RmesStampsImpl; -import fr.insee.rmes.external_services.rbac.RBACService; +import fr.insee.rmes.external.services.authentication.stamps.RmesStampsImpl; +import fr.insee.rmes.external.services.rbac.RBACService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; diff --git a/src/test/java/fr/insee/rmes/webservice/UserResourcesTestEnvProd.java b/src/test/java/fr/insee/rmes/webservice/UserResourcesTestEnvProd.java index aab75b7ee..772e82929 100644 --- a/src/test/java/fr/insee/rmes/webservice/UserResourcesTestEnvProd.java +++ b/src/test/java/fr/insee/rmes/webservice/UserResourcesTestEnvProd.java @@ -6,8 +6,8 @@ import fr.insee.rmes.config.auth.security.CommonSecurityConfiguration; import fr.insee.rmes.config.auth.security.DefaultSecurityContext; import fr.insee.rmes.config.auth.security.OpenIDConnectSecurityContext; -import fr.insee.rmes.external_services.authentication.stamps.RmesStampsImpl; -import fr.insee.rmes.external_services.rbac.RBACService; +import fr.insee.rmes.external.services.authentication.stamps.RmesStampsImpl; +import fr.insee.rmes.external.services.rbac.RBACService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; diff --git a/src/test/resources/trig/all-operations-and-indicators.trig b/src/test/resources/testcontainers/all-operations-and-indicators.trig similarity index 100% rename from src/test/resources/trig/all-operations-and-indicators.trig rename to src/test/resources/testcontainers/all-operations-and-indicators.trig diff --git a/src/test/resources/trig/documents.trig b/src/test/resources/testcontainers/documents.trig similarity index 100% rename from src/test/resources/trig/documents.trig rename to src/test/resources/testcontainers/documents.trig diff --git a/src/test/resources/trig/organizations.trig b/src/test/resources/testcontainers/organizations.trig similarity index 100% rename from src/test/resources/trig/organizations.trig rename to src/test/resources/testcontainers/organizations.trig diff --git a/src/test/resources/trig/sims-all.trig b/src/test/resources/testcontainers/sims-all.trig similarity index 100% rename from src/test/resources/trig/sims-all.trig rename to src/test/resources/testcontainers/sims-all.trig diff --git a/src/test/resources/trig/sims-codes.trig b/src/test/resources/testcontainers/sims-codes.trig similarity index 100% rename from src/test/resources/trig/sims-codes.trig rename to src/test/resources/testcontainers/sims-codes.trig diff --git a/src/test/resources/trig/sims-geo.trig b/src/test/resources/testcontainers/sims-geo.trig similarity index 100% rename from src/test/resources/trig/sims-geo.trig rename to src/test/resources/testcontainers/sims-geo.trig diff --git a/src/test/resources/trig/sims-metadata.trig b/src/test/resources/testcontainers/sims-metadata.trig similarity index 100% rename from src/test/resources/trig/sims-metadata.trig rename to src/test/resources/testcontainers/sims-metadata.trig