diff --git a/qqq-middleware-javalin/pom.xml b/qqq-middleware-javalin/pom.xml
index dc94f1ae..3cfe058d 100644
--- a/qqq-middleware-javalin/pom.xml
+++ b/qqq-middleware-javalin/pom.xml
@@ -162,6 +162,18 @@
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.4.2
+
+
+
+ test-jar
+
+
+
+
org.apache.maven.plugins
maven-shade-plugin
diff --git a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/specs/SpecTestBase.java b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/specs/SpecTestBase.java
index 8425d3da..afc3ac42 100644
--- a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/specs/SpecTestBase.java
+++ b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/middleware/javalin/specs/SpecTestBase.java
@@ -24,7 +24,12 @@ package com.kingsrook.qqq.middleware.javalin.specs;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
+import com.kingsrook.qqq.backend.core.context.CapturedContext;
+import com.kingsrook.qqq.backend.core.context.QContext;
+import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
+import com.kingsrook.qqq.backend.core.model.session.QSystemUserSession;
import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore;
import com.kingsrook.qqq.backend.javalin.TestUtils;
import io.javalin.Javalin;
@@ -38,7 +43,7 @@ import org.junit.jupiter.api.BeforeEach;
*******************************************************************************/
public abstract class SpecTestBase
{
- private static int PORT = 6273;
+ protected static int PORT = 6273;
protected static Javalin service;
@@ -109,32 +114,74 @@ public abstract class SpecTestBase
service = null;
}
- TestMiddlewareVersion testMiddlewareVersion = new TestMiddlewareVersion();
-
if(service == null)
{
service = Javalin.create(config ->
{
- QInstance qInstance = TestUtils.defineInstance();
+ QInstance qInstance;
+ try
+ {
+ qInstance = defineQInstance();
+ primeTestData(qInstance);
+ }
+ catch(Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+
+ AtomicReference middlewareVersionRef = new AtomicReference<>();
+ QContext.withTemporaryContext(new CapturedContext(qInstance, new QSystemUserSession()), () ->
+ middlewareVersionRef.set(getMiddlewareVersion()));
+ AbstractMiddlewareVersion middlewareVersion = middlewareVersionRef.get();
AbstractEndpointSpec, ?, ?> spec = getSpec();
spec.setQInstance(qInstance);
- config.router.apiBuilder(() -> spec.defineRoute(testMiddlewareVersion, getVersion()));
+
+ String versionBasePath = middlewareVersion.getVersionBasePath();
+ config.router.apiBuilder(() -> spec.defineRoute(middlewareVersion, versionBasePath));
for(AbstractEndpointSpec, ?, ?> additionalSpec : getAdditionalSpecs())
{
additionalSpec.setQInstance(qInstance);
- config.router.apiBuilder(() -> additionalSpec.defineRoute(testMiddlewareVersion, getVersion()));
+ config.router.apiBuilder(() -> additionalSpec.defineRoute(middlewareVersion, versionBasePath));
}
}
).start(PORT);
}
+ }
+
+
+ /***************************************************************************
+ **
+ ***************************************************************************/
+ protected void primeTestData(QInstance qInstance) throws Exception
+ {
TestUtils.primeTestDatabase();
}
+ /***************************************************************************
+ **
+ ***************************************************************************/
+ protected AbstractMiddlewareVersion getMiddlewareVersion()
+ {
+ return new TestMiddlewareVersion();
+ }
+
+
+
+ /***************************************************************************
+ **
+ ***************************************************************************/
+ protected QInstance defineQInstance() throws QException
+ {
+ return (TestUtils.defineInstance());
+ }
+
+
+
/***************************************************************************
**
***************************************************************************/