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