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()); + } + + + /*************************************************************************** ** ***************************************************************************/