diff --git a/src/test/java/com/fusiondb/studio/api/API.java b/src/test/java/com/fusiondb/studio/api/API.java index 6768295..2e4f50c 100644 --- a/src/test/java/com/fusiondb/studio/api/API.java +++ b/src/test/java/com/fusiondb/studio/api/API.java @@ -24,6 +24,10 @@ import com.evolvedbinary.j8fu.tuple.Tuple2; +import static com.evolvedbinary.j8fu.tuple.Tuple.Tuple; +import static io.restassured.RestAssured.given; +import static org.apache.http.HttpStatus.SC_OK; + public class API { /** @@ -220,23 +224,42 @@ static Map[] arrayOf(final Map... entries) { return arrayOfMaps; } - static boolean testServerHasBadJsonSerialization() { - final String dockerTestImage = sysPropOrEnvVarOrDefault(SYS_PROP_NAME_DOCKER_DB_IMAGE, ENV_VAR_DOCKER_DB_IMAGE, null, envVarValue -> envVarValue); - if (dockerTestImage == null || dockerTestImage.isEmpty()) { - return false; - } + static Tuple2 getServerVersion() { + final String productName = + given(). + accept("text/text"). + when(). + get(getRestApiBaseUri() + "/db?_query=system:get-product-name()&_wrap=no"). + then(). + statusCode(SC_OK). + extract().body().asString(); - return dockerTestImage.endsWith("fusiondb-server:1.0.0-ALPHA2") - || dockerTestImage.endsWith("existdb:5.0.0") - || dockerTestImage.endsWith("existdb:5.2.0"); + final String version = + given(). + accept("text/text"). + when(). + get(getRestApiBaseUri() + "/db?_query=system:get-version()&_wrap=no"). + then(). + statusCode(SC_OK). + extract().body().asString(); + + return Tuple(productName, version); + } + + static boolean testServerHasBadJsonSerialization() { + final Tuple2 serverVersion = getServerVersion(); + return serverVersion.equals(Tuple("FusionDB", "1.0.0-ALPHA2")) + || serverVersion.equals(Tuple("eXist-db", "5.0.0")) + || serverVersion.equals(Tuple("eXist-db", "5.2.0")); } static boolean testServerHasBadXmldbSetMimeType() { - final String dockerTestImage = sysPropOrEnvVarOrDefault(SYS_PROP_NAME_DOCKER_DB_IMAGE, ENV_VAR_DOCKER_DB_IMAGE, null, envVarValue -> envVarValue); - if (dockerTestImage == null || dockerTestImage.isEmpty()) { - return false; - } + final Tuple2 serverVersion = getServerVersion(); + return serverVersion.equals(Tuple("FusionDB", "1.0.0-ALPHA2")); + } - return dockerTestImage.endsWith("fusiondb-server:1.0.0-ALPHA2"); + static boolean testServerHasBadCopyMoveCollectionOperations() { + final Tuple2 serverVersion = getServerVersion(); + return serverVersion.equals(Tuple("FusionDB", "1.0.0-ALPHA3")); } } diff --git a/src/test/java/com/fusiondb/studio/api/CollectionIT.java b/src/test/java/com/fusiondb/studio/api/CollectionIT.java index 20da691..de2d4ec 100644 --- a/src/test/java/com/fusiondb/studio/api/CollectionIT.java +++ b/src/test/java/com/fusiondb/studio/api/CollectionIT.java @@ -20,6 +20,7 @@ import io.restassured.http.Header; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; +import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -147,6 +148,8 @@ public void updateMode() { @Test public void copyCollection() { + Assumptions.assumeFalse(testServerHasBadCopyMoveCollectionOperations(), "Server has bad copy/move operations"); + final String collectionPath = "/db/fusion-studio-api-test-document-it-col-4"; // 1. create the source collection @@ -187,6 +190,8 @@ public void copyCollection() { @Test public void moveCollection() { + Assumptions.assumeFalse(testServerHasBadCopyMoveCollectionOperations(),"Server has bad copy/move operations"); + final String collectionPath = "/db/fusion-studio-api-test-document-it-col-5"; // 1. create the source collection diff --git a/src/test/java/com/fusiondb/studio/api/DocumentIT.java b/src/test/java/com/fusiondb/studio/api/DocumentIT.java index 74c4bf2..f85c18b 100644 --- a/src/test/java/com/fusiondb/studio/api/DocumentIT.java +++ b/src/test/java/com/fusiondb/studio/api/DocumentIT.java @@ -198,7 +198,7 @@ public void updateMode() { @Test public void updateMediaType() { - Assumptions.assumeFalse(testServerHasBadXmldbSetMimeType()); + Assumptions.assumeFalse(testServerHasBadXmldbSetMimeType(), "Server has bad XML:DB setMimetype"); final String docPath = "/db/fusion-studio-api-test-document-it-5.xml"; diff --git a/src/test/java/com/fusiondb/studio/api/QueryIT.java b/src/test/java/com/fusiondb/studio/api/QueryIT.java index 21e5931..e14e090 100644 --- a/src/test/java/com/fusiondb/studio/api/QueryIT.java +++ b/src/test/java/com/fusiondb/studio/api/QueryIT.java @@ -260,7 +260,7 @@ public void serializeQueryAsAdaptive() { @Test public void serializeQueryAsJsonNoIndent() { - Assumptions.assumeFalse(testServerHasBadJsonSerialization()); + Assumptions.assumeFalse(testServerHasBadJsonSerialization(), "Server has bad JSON serialization"); final Map requestBody = mapOf( Tuple("query", "map {'a': 'b', 'x': ['y', 'z'], 't': true(), 'f': false() }"), @@ -286,7 +286,7 @@ public void serializeQueryAsJsonNoIndent() { @Test public void serializeQueryAsJsonIndent() { - Assumptions.assumeFalse(testServerHasBadJsonSerialization()); + Assumptions.assumeFalse(testServerHasBadJsonSerialization(), "Server has bad JSON serialization"); final Map requestBody = mapOf( Tuple("query", "map {'a': 'b', 'x': ['y', 'z'], 't': true(), 'f': false() }"),