From d1874b03be272b3ca47539cb01eca77f95588f7c Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Mon, 8 May 2023 17:07:13 +0530 Subject: [PATCH 1/2] fix: added version check for multitenant apis --- coreDriverInterfaceSupported.json | 3 +- .../java/io/supertokens/utils/SemVer.java | 1 + .../supertokens/webserver/WebserverAPI.java | 10 ++++- .../test/authRecipe/MultitenantAPITest.java | 7 +-- .../emailpassword/api/MultitenantAPITest.java | 44 +++++++++++++------ .../api/MultitenantAPITest.java | 6 +-- .../api/TestMultitenancyAPIHelper.java | 42 +++++++++--------- .../passwordless/api/MultitenantAPITest.java | 23 +++++----- .../test/session/api/MultitenantAPITest.java | 13 +++--- .../thirdparty/api/MultitenantAPITest.java | 9 ++-- .../test/totp/api/MultitenantAPITest.java | 9 ++-- .../userIdMapping/api/MultitenantAPITest.java | 13 +++--- 12 files changed, 107 insertions(+), 73 deletions(-) diff --git a/coreDriverInterfaceSupported.json b/coreDriverInterfaceSupported.json index 146be56fd..bcf1d2746 100644 --- a/coreDriverInterfaceSupported.json +++ b/coreDriverInterfaceSupported.json @@ -15,6 +15,7 @@ "2.18", "2.19", "2.20", - "2.21" + "2.21", + "2.22" ] } \ No newline at end of file diff --git a/src/main/java/io/supertokens/utils/SemVer.java b/src/main/java/io/supertokens/utils/SemVer.java index f92f43f2b..120c9ae06 100644 --- a/src/main/java/io/supertokens/utils/SemVer.java +++ b/src/main/java/io/supertokens/utils/SemVer.java @@ -32,6 +32,7 @@ public class SemVer implements Comparable { public static final SemVer v2_19 = new SemVer("2.19"); public static final SemVer v2_20 = new SemVer("2.20"); public static final SemVer v2_21 = new SemVer("2.21"); + public static final SemVer v2_22 = new SemVer("2.22"); final private String version; diff --git a/src/main/java/io/supertokens/webserver/WebserverAPI.java b/src/main/java/io/supertokens/webserver/WebserverAPI.java index d14c94ae6..443f92c5e 100644 --- a/src/main/java/io/supertokens/webserver/WebserverAPI.java +++ b/src/main/java/io/supertokens/webserver/WebserverAPI.java @@ -75,10 +75,11 @@ public abstract class WebserverAPI extends HttpServlet { supportedVersions.add(SemVer.v2_19); supportedVersions.add(SemVer.v2_20); supportedVersions.add(SemVer.v2_21); + supportedVersions.add(SemVer.v2_22); } public static SemVer getLatestCDIVersion() { - return SemVer.v2_21; + return SemVer.v2_22; } public WebserverAPI(Main main, String rid) { @@ -396,9 +397,16 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws if (this.checkAPIKey(req)) { assertThatAPIKeyCheckPasses(req); } + tenantIdentifier = getTenantIdentifierWithStorageFromRequest(req); if (this.versionNeeded(req)) { + // Check for CDI version for multitenancy SemVer version = getVersionFromRequest(req); + if (version.lesserThan(SemVer.v2_22) && !tenantIdentifier.getTenantId().equals(TenantIdentifier.DEFAULT_TENANT_ID)) { + sendTextResponse(404, "Not found", resp); + return; + } + assertThatVersionIsCompatible(version); Logging.info(main, tenantIdentifier, "API called: " + req.getRequestURI() + ". Method: " + req.getMethod() + ". Version: " + version, diff --git a/src/test/java/io/supertokens/test/authRecipe/MultitenantAPITest.java b/src/test/java/io/supertokens/test/authRecipe/MultitenantAPITest.java index cd78b9543..b8564065a 100644 --- a/src/test/java/io/supertokens/test/authRecipe/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/authRecipe/MultitenantAPITest.java @@ -44,6 +44,7 @@ import io.supertokens.test.httpRequest.HttpResponseException; import io.supertokens.thirdparty.InvalidProviderConfigException; import io.supertokens.thirdparty.ThirdParty; +import io.supertokens.utils.SemVer; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -309,7 +310,7 @@ private long getUserCount(TenantIdentifier tenantIdentifier, String []recipeIds, JsonObject response = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/users/count"), params, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), null); + SemVer.v2_22.get(), null); assertEquals("OK", response.get("status").getAsString()); @@ -326,7 +327,7 @@ private String[] getUsers(TenantIdentifier tenantIdentifier, String []recipeIds) JsonObject response = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/users"), params, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), null); + SemVer.v2_22.get(), null); assertEquals("OK", response.get("status").getAsString()); @@ -356,7 +357,7 @@ private String[] getUsers(TenantIdentifier tenantIdentifier, String[] emails, St JsonObject response = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/users"), params, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), null); + SemVer.v2_22.get(), null); assertEquals("OK", response.get("status").getAsString()); diff --git a/src/test/java/io/supertokens/test/emailpassword/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/emailpassword/api/MultitenantAPITest.java index 9a9b70143..248274997 100644 --- a/src/test/java/io/supertokens/test/emailpassword/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/emailpassword/api/MultitenantAPITest.java @@ -47,8 +47,7 @@ import java.util.HashMap; import java.util.Random; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.*; public class MultitenantAPITest { TestingProcessManager.TestingProcess process; @@ -191,7 +190,7 @@ private JsonObject signUp(TenantIdentifier tenantIdentifier, String email, Strin JsonObject signUpResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signup"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", signUpResponse.getAsJsonPrimitive("status").getAsString()); return signUpResponse.getAsJsonObject("user"); } @@ -204,7 +203,7 @@ private JsonObject successfulSignIn(TenantIdentifier tenantIdentifier, String em JsonObject signInResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signin"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", signInResponse.getAsJsonPrimitive("status").getAsString()); return signInResponse.getAsJsonObject("user"); } @@ -217,7 +216,7 @@ private void wrongCredentialsSignIn(TenantIdentifier tenantIdentifier, String em JsonObject signInResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signin"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals("WRONG_CREDENTIALS_ERROR", signInResponse.getAsJsonPrimitive("status").getAsString()); } @@ -227,7 +226,7 @@ private JsonObject getUserUsingId(TenantIdentifier tenantIdentifier, String user map.put("userId", userId); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -241,7 +240,7 @@ private void updatePassword(TenantIdentifier tenantIdentifier, String userId, St JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), body, - 1000, 1000, null, SemVer.v2_8.get(), + 1000, 1000, null, SemVer.v2_22.get(), RECIPE_ID.EMAIL_PASSWORD.toString()); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -254,7 +253,7 @@ private void updateEmail(TenantIdentifier tenantIdentifier, String userId, Strin JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), body, - 1000, 1000, null, SemVer.v2_8.get(), + 1000, 1000, null, SemVer.v2_22.get(), RECIPE_ID.EMAIL_PASSWORD.toString()); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -268,7 +267,7 @@ private void updateEmailAndPassword(TenantIdentifier tenantIdentifier, String us JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), body, - 1000, 1000, null, SemVer.v2_8.get(), + 1000, 1000, null, SemVer.v2_22.get(), RECIPE_ID.EMAIL_PASSWORD.toString()); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -279,7 +278,7 @@ private JsonObject getUserUsingEmail(TenantIdentifier tenantIdentifier, String e map.put("email", email); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -293,7 +292,7 @@ private String generatePasswordResetToken(TenantIdentifier tenantIdentifier, Str JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user/password/reset/token"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals(response.get("status").getAsString(), "OK"); assertEquals(response.entrySet().size(), 2); @@ -312,7 +311,7 @@ private void successfulResetPasswordUsingToken(TenantIdentifier tenantIdentifier JsonObject passwordResetResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user/password/reset"), resetPasswordBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals(passwordResetResponse.get("status").getAsString(), "OK"); assertEquals(passwordResetResponse.get("userId").getAsString(), userId); assertEquals(passwordResetResponse.entrySet().size(), 2); @@ -328,7 +327,7 @@ private void invalidResetPasswordUsingToken(TenantIdentifier tenantIdentifier, S JsonObject passwordResetResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user/password/reset"), resetPasswordBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals(passwordResetResponse.get("status").getAsString(), "RESET_PASSWORD_INVALID_TOKEN_ERROR"); } @@ -639,4 +638,23 @@ public void testImportUsersWorksCorrectlyAcrossTenants() throws Exception { wrongCredentialsSignIn(t1, email, password); wrongCredentialsSignIn(t3, email, password); } + + @Test + public void testThatTenantIdIsNotAllowedForOlderCDIVersion() throws Exception { + createTenants(false); + + JsonObject requestBody = new JsonObject(); + requestBody.addProperty("email", "test@example.com"); + requestBody.addProperty("password", "password"); + + try { + HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", + HttpRequestForTesting.getMultitenantUrl(t2, "/recipe/signup"), + requestBody, 1000, 1000, null, + SemVer.v2_21.get(), "emailpassword"); + fail(); + } catch (HttpResponseException e) { + assertEquals(404, e.statusCode); + } + } } diff --git a/src/test/java/io/supertokens/test/emailverification/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/emailverification/api/MultitenantAPITest.java index d0f91ac02..3997c8a0f 100644 --- a/src/test/java/io/supertokens/test/emailverification/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/emailverification/api/MultitenantAPITest.java @@ -160,7 +160,7 @@ private void verifyEmail(TenantIdentifier tenantIdentifier, String userId, Strin JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user/email/verify/token"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailverification"); + SemVer.v2_22.get(), "emailverification"); assertEquals(response.entrySet().size(), 2); assertEquals(response.get("status").getAsString(), "OK"); @@ -173,7 +173,7 @@ private void verifyEmail(TenantIdentifier tenantIdentifier, String userId, Strin JsonObject response2 = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user/email/verify"), verifyResponseBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailverification"); + SemVer.v2_22.get(), "emailverification"); assertEquals(response2.entrySet().size(), 3); assertEquals(response2.get("status").getAsString(), "OK"); @@ -191,7 +191,7 @@ private boolean isEmailVerified(TenantIdentifier tenantIdentifier, String userId JsonObject verifyResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user/email/verify"), map, 1000, 1000, null, - SemVer.v2_7.get(), "emailverification"); + SemVer.v2_22.get(), "emailverification"); assertEquals(verifyResponse.entrySet().size(), 2); assertEquals(verifyResponse.get("status").getAsString(), "OK"); return verifyResponse.get("isVerified").getAsBoolean(); diff --git a/src/test/java/io/supertokens/test/multitenant/api/TestMultitenancyAPIHelper.java b/src/test/java/io/supertokens/test/multitenant/api/TestMultitenancyAPIHelper.java index 547fe8605..edf3d4f11 100644 --- a/src/test/java/io/supertokens/test/multitenant/api/TestMultitenancyAPIHelper.java +++ b/src/test/java/io/supertokens/test/multitenant/api/TestMultitenancyAPIHelper.java @@ -21,9 +21,9 @@ import io.supertokens.Main; import io.supertokens.pluginInterface.multitenancy.TenantIdentifier; import io.supertokens.pluginInterface.multitenancy.ThirdPartyConfig; -import io.supertokens.test.Utils; import io.supertokens.test.httpRequest.HttpRequestForTesting; import io.supertokens.test.httpRequest.HttpResponseException; +import io.supertokens.utils.SemVer; import java.io.IOException; import java.util.HashMap; @@ -47,7 +47,7 @@ public static void createConnectionUriDomain(Main main, TenantIdentifier sourceT JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/connectionuridomain"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -57,7 +57,7 @@ public static JsonObject listConnectionUriDomains(TenantIdentifier sourceTenant, JsonObject response = HttpRequestForTesting.sendGETRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/connectionuridomain/list"), null, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -72,7 +72,7 @@ public static JsonObject deleteConnectionUriDomain(TenantIdentifier sourceTenant JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/connectionuridomain/remove"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -91,7 +91,7 @@ public static void createApp(Main main, TenantIdentifier sourceTenant, String ap JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/app"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -101,7 +101,7 @@ public static JsonObject listApps(TenantIdentifier sourceTenant, Main main) JsonObject response = HttpRequestForTesting.sendGETRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/app/list"), null, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -115,7 +115,7 @@ public static JsonObject deleteApp(TenantIdentifier sourceTenant, String appId, JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/app/remove"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -134,7 +134,7 @@ public static void createTenant(Main main, TenantIdentifier sourceTenant, String JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/tenant"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -144,7 +144,7 @@ public static JsonObject listTenants(TenantIdentifier sourceTenant, Main main) JsonObject response = HttpRequestForTesting.sendGETRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/tenant/list"), null, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -158,7 +158,7 @@ public static JsonObject deleteTenant(TenantIdentifier sourceTenant, String tena JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/recipe/multitenancy/tenant/remove"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -170,7 +170,7 @@ public static JsonObject getTenant(TenantIdentifier tenantIdentifier, Main main) JsonObject response = HttpRequestForTesting.sendGETRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/multitenancy/tenant"), null, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -184,7 +184,7 @@ public static JsonObject associateUserToTenant(TenantIdentifier tenantIdentifier JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/multitenancy/tenant/user"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); return response; } @@ -197,7 +197,7 @@ public static JsonObject disassociateUserFromTenant(TenantIdentifier tenantIdent JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/multitenancy/tenant/user/remove"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -211,7 +211,7 @@ public static JsonObject addOrUpdateThirdPartyProviderConfig(TenantIdentifier te JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/multitenancy/config/thirdparty"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -225,7 +225,7 @@ public static JsonObject deleteThirdPartyProvider(TenantIdentifier tenantIdentif JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/multitenancy/config/thirdparty/remove"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "multitenancy"); + SemVer.v2_22.get(), "multitenancy"); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -246,7 +246,7 @@ public static JsonObject listUsers(TenantIdentifier sourceTenant, String paginat JsonObject response = HttpRequestForTesting.sendGETRequest(main, "", HttpRequestForTesting.getMultitenantUrl(sourceTenant, "/users"), params, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), null); + SemVer.v2_22.get(), null); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); return response; @@ -260,7 +260,7 @@ public static JsonObject epSignUp(TenantIdentifier tenantIdentifier, String emai JsonObject signUpResponse = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signup"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", signUpResponse.getAsJsonPrimitive("status").getAsString()); return signUpResponse.getAsJsonObject("user"); } @@ -278,7 +278,7 @@ public static JsonObject tpSignInUp(TenantIdentifier tenantIdentifier, String th JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup"), signUpRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "thirdparty"); + SemVer.v2_22.get(), "thirdparty"); assertEquals("OK", response.get("status").getAsString()); assertEquals(3, response.entrySet().size()); @@ -292,7 +292,7 @@ public static void addLicense(String licenseKey, Main main) throws HttpResponseE JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(main, "", "http://localhost:3567/ee/license", licenseKeyRequest, 2000, 2000, null, - Utils.getCdiVersionStringLatestForTests(), null); + SemVer.v2_22.get(), null); assertEquals("OK", response.get("status").getAsString()); } @@ -300,7 +300,7 @@ public static void removeLicense(Main main) throws HttpResponseException, IOExce JsonObject response = HttpRequestForTesting.sendJsonDELETERequest(main, "", "http://localhost:3567/ee/license", null, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), null); + SemVer.v2_22.get(), null); assertEquals("OK", response.get("status").getAsString()); } @@ -310,7 +310,7 @@ public static JsonObject getEpUserById(TenantIdentifier tenantIdentifier, String map.put("userId", userId); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(main, "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); diff --git a/src/test/java/io/supertokens/test/passwordless/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/passwordless/api/MultitenantAPITest.java index 9a6470c92..68a848cfb 100644 --- a/src/test/java/io/supertokens/test/passwordless/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/passwordless/api/MultitenantAPITest.java @@ -35,6 +35,7 @@ import io.supertokens.test.httpRequest.HttpRequestForTesting; import io.supertokens.test.httpRequest.HttpResponseException; import io.supertokens.thirdparty.InvalidProviderConfigException; +import io.supertokens.utils.SemVer; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -186,7 +187,7 @@ private JsonObject createCodeWithEmail(TenantIdentifier tenantIdentifier, String JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup/code"), createCodeRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "passwordless"); + SemVer.v2_22.get(), "passwordless"); assertEquals("OK", response.get("status").getAsString()); assertEquals(8, response.entrySet().size()); @@ -202,7 +203,7 @@ private JsonObject createCodeWithNumber(TenantIdentifier tenantIdentifier, Strin JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup/code"), createCodeRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "passwordless"); + SemVer.v2_22.get(), "passwordless"); assertEquals("OK", response.get("status").getAsString()); assertEquals(8, response.entrySet().size()); @@ -219,7 +220,7 @@ private JsonObject consumeCode(TenantIdentifier tenantIdentifier, String preAuth JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup/code/consume"), consumeCodeRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "passwordless"); + SemVer.v2_22.get(), "passwordless"); assertEquals("OK", response.get("status").getAsString()); return response.get("user").getAsJsonObject(); @@ -234,7 +235,7 @@ private void unsuccessfulConsumeCode(TenantIdentifier tenantIdentifier, String p JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup/code/consume"), consumeCodeRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "passwordless"); + SemVer.v2_22.get(), "passwordless"); assertEquals("RESTART_FLOW_ERROR", response.get("status").getAsString()); } @@ -249,7 +250,7 @@ private JsonObject consumeCode(TenantIdentifier tenantIdentifier, String deviceI JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup/code/consume"), consumeCodeRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "passwordless"); + SemVer.v2_22.get(), "passwordless"); assertEquals("OK", response.get("status").getAsString()); return response.get("user").getAsJsonObject(); } @@ -264,7 +265,7 @@ private void unsuccessfulConsumeCode(TenantIdentifier tenantIdentifier, String d JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup/code/consume"), consumeCodeRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "passwordless"); + SemVer.v2_22.get(), "passwordless"); assertEquals("RESTART_FLOW_ERROR", response.get("status").getAsString()); } @@ -298,7 +299,7 @@ private JsonObject getUserUsingId(TenantIdentifier tenantIdentifier, String user map.put("userId", userId); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "passwordless"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -310,7 +311,7 @@ private JsonObject getUserUsingEmail(TenantIdentifier tenantIdentifier, String e map.put("email", email); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "passwordless"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -322,7 +323,7 @@ private JsonObject getUserUsingNumber(TenantIdentifier tenantIdentifier, String map.put("phoneNumber", phoneNumber); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "passwordless"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -336,7 +337,7 @@ private void updateEmail(TenantIdentifier tenantIdentifier, String userId, Strin JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), body, - 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + 1000, 1000, null, SemVer.v2_22.get(), RECIPE_ID.PASSWORDLESS.toString()); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } @@ -349,7 +350,7 @@ private void updatePhoneNumber(TenantIdentifier tenantIdentifier, String userId, JsonObject response = HttpRequestForTesting.sendJsonPUTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), body, - 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + 1000, 1000, null, SemVer.v2_22.get(), RECIPE_ID.PASSWORDLESS.toString()); assertEquals("OK", response.getAsJsonPrimitive("status").getAsString()); } diff --git a/src/test/java/io/supertokens/test/session/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/session/api/MultitenantAPITest.java index c154fdda0..4378fac93 100644 --- a/src/test/java/io/supertokens/test/session/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/session/api/MultitenantAPITest.java @@ -34,6 +34,7 @@ import io.supertokens.test.httpRequest.HttpRequestForTesting; import io.supertokens.test.httpRequest.HttpResponseException; import io.supertokens.thirdparty.InvalidProviderConfigException; +import io.supertokens.utils.SemVer; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -161,7 +162,7 @@ private JsonObject createSession(TenantIdentifier tenantIdentifier, String userI JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/session"), request, - 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + 1000, 1000, null, SemVer.v2_22.get(), "session"); return response; @@ -173,7 +174,7 @@ private JsonObject getSession(TenantIdentifier tenantIdentifier, String sessionH map.put("sessionHandle", sessionHandle); JsonObject sessionResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/session"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "session"); assertEquals("OK", sessionResponse.getAsJsonPrimitive("status").getAsString()); @@ -186,7 +187,7 @@ private void getSessionUnauthorised(TenantIdentifier tenantIdentifier, String se map.put("sessionHandle", sessionHandle); JsonObject sessionResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/session"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "session"); assertEquals("UNAUTHORISED", sessionResponse.getAsJsonPrimitive("status").getAsString()); @@ -201,7 +202,7 @@ private void regenerateSession(TenantIdentifier tenantIdentifier, String accessT JsonObject sessionRegenerateResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/session/regenerate"), sessionRegenerateRequest, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "session"); + SemVer.v2_22.get(), "session"); assertEquals(sessionRegenerateResponse.get("status").getAsString(), "OK"); } @@ -216,7 +217,7 @@ private JsonObject verifySession(TenantIdentifier tenantIdentifier, String acces JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/session/verify"), request, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "session"); + SemVer.v2_22.get(), "session"); return response; } @@ -230,7 +231,7 @@ private JsonObject refreshSession(TenantIdentifier tenantIdentifier, String refr JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/session/refresh"), sessionRefreshBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "session"); + SemVer.v2_22.get(), "session"); return response; } diff --git a/src/test/java/io/supertokens/test/thirdparty/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/thirdparty/api/MultitenantAPITest.java index 3b951073d..5f462e39b 100644 --- a/src/test/java/io/supertokens/test/thirdparty/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/thirdparty/api/MultitenantAPITest.java @@ -36,6 +36,7 @@ import io.supertokens.test.httpRequest.HttpRequestForTesting; import io.supertokens.test.httpRequest.HttpResponseException; import io.supertokens.thirdparty.InvalidProviderConfigException; +import io.supertokens.utils.SemVer; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -165,7 +166,7 @@ public JsonObject signInUp(TenantIdentifier tenantIdentifier, String thirdPartyI JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signinup"), signUpRequestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "thirdparty"); + SemVer.v2_22.get(), "thirdparty"); assertEquals("OK", response.get("status").getAsString()); assertEquals(3, response.entrySet().size()); @@ -178,7 +179,7 @@ private JsonObject getUserUsingId(TenantIdentifier tenantIdentifier, String user map.put("userId", userId); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "thirdparty"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -191,7 +192,7 @@ private JsonObject getUserUsingThirdPartyUserId(TenantIdentifier tenantIdentifie map.put("thirdPartyUserId", thirdPartyUserId); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/user"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "thirdparty"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); return userResponse.getAsJsonObject("user"); @@ -203,7 +204,7 @@ private JsonObject[] getUsersUsingEmail(TenantIdentifier tenantIdentifier, Strin map.put("email", email); JsonObject userResponse = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/users/by-email"), - map, 1000, 1000, null, Utils.getCdiVersionStringLatestForTests(), + map, 1000, 1000, null, SemVer.v2_22.get(), "thirdparty"); assertEquals("OK", userResponse.getAsJsonPrimitive("status").getAsString()); diff --git a/src/test/java/io/supertokens/test/totp/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/totp/api/MultitenantAPITest.java index 2e9bc727d..acaa6bc09 100644 --- a/src/test/java/io/supertokens/test/totp/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/totp/api/MultitenantAPITest.java @@ -36,6 +36,7 @@ import io.supertokens.test.httpRequest.HttpResponseException; import io.supertokens.test.totp.TOTPRecipeTest; import io.supertokens.thirdparty.InvalidProviderConfigException; +import io.supertokens.utils.SemVer; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -167,7 +168,7 @@ private JsonObject createDevice(TenantIdentifier tenantIdentifier, String userId 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), + SemVer.v2_22.get(), "totp"); assertEquals("OK", res.get("status").getAsString()); return res; @@ -189,7 +190,7 @@ private void createDeviceAlreadyExists(TenantIdentifier tenantIdentifier, String 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), + SemVer.v2_22.get(), "totp"); assertEquals("DEVICE_ALREADY_EXISTS_ERROR", res.get("status").getAsString()); } @@ -208,7 +209,7 @@ private void verifyDevice(TenantIdentifier tenantIdentifier, String userId, Stri 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), + SemVer.v2_22.get(), "totp"); assert res.get("status").getAsString().equals("OK"); } @@ -228,7 +229,7 @@ private void validateTotp(TenantIdentifier tenantIdentifier, String userId, Stri 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), + SemVer.v2_22.get(), "totp"); assertEquals("OK", res.get("status").getAsString()); } diff --git a/src/test/java/io/supertokens/test/userIdMapping/api/MultitenantAPITest.java b/src/test/java/io/supertokens/test/userIdMapping/api/MultitenantAPITest.java index 6ed85d9e1..07dd65a78 100644 --- a/src/test/java/io/supertokens/test/userIdMapping/api/MultitenantAPITest.java +++ b/src/test/java/io/supertokens/test/userIdMapping/api/MultitenantAPITest.java @@ -35,6 +35,7 @@ import io.supertokens.test.httpRequest.HttpRequestForTesting; import io.supertokens.test.httpRequest.HttpResponseException; import io.supertokens.thirdparty.InvalidProviderConfigException; +import io.supertokens.utils.SemVer; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -158,7 +159,7 @@ private JsonObject emailPasswordSignUp(TenantIdentifier tenantIdentifier, String JsonObject signUpResponse = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/signup"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "emailpassword"); + SemVer.v2_22.get(), "emailpassword"); assertEquals("OK", signUpResponse.getAsJsonPrimitive("status").getAsString()); return signUpResponse.getAsJsonObject("user"); } @@ -172,7 +173,7 @@ private void successfulCreateUserIdMapping(TenantIdentifier tenantIdentifier, St JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/userid/map"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "useridmapping"); + SemVer.v2_22.get(), "useridmapping"); assertEquals("OK", response.get("status").getAsString()); } @@ -185,7 +186,7 @@ private void mappingAlreadyExistsWithCreateUserIdMapping(TenantIdentifier tenant JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/userid/map"), requestBody, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "useridmapping"); + SemVer.v2_22.get(), "useridmapping"); assertEquals("USER_ID_MAPPING_ALREADY_EXISTS_ERROR", response.get("status").getAsString()); } @@ -197,7 +198,7 @@ private JsonObject getUserIdMapping(TenantIdentifier tenantIdentifier, String us JsonObject response = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/userid/map"), QUERY_PARAM, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "useridmapping"); + SemVer.v2_22.get(), "useridmapping"); assertEquals("OK", response.get("status").getAsString()); return response; } @@ -210,7 +211,7 @@ private void getUnknownUserIdMapping(TenantIdentifier tenantIdentifier, String u JsonObject response = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/userid/map"), QUERY_PARAM, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "useridmapping"); + SemVer.v2_22.get(), "useridmapping"); assertEquals("UNKNOWN_MAPPING_ERROR", response.get("status").getAsString()); } @@ -223,7 +224,7 @@ private void successfulRemoveUserIdMapping(TenantIdentifier tenantIdentifier, St JsonObject response = HttpRequestForTesting.sendJsonPOSTRequest(process.getProcess(), "", HttpRequestForTesting.getMultitenantUrl(tenantIdentifier, "/recipe/userid/map/remove"), request, 1000, 1000, null, - Utils.getCdiVersionStringLatestForTests(), "useridmapping"); + SemVer.v2_22.get(), "useridmapping"); assertEquals(2, response.entrySet().size()); assertEquals("OK", response.get("status").getAsString()); assertTrue(response.get("didMappingExist").getAsBoolean()); From ce5dcb46cf73b7bd2fe05db9a9370aa9b47333a4 Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Mon, 8 May 2023 18:09:56 +0530 Subject: [PATCH 2/2] fix: pr comment --- .../io/supertokens/webserver/WebserverAPI.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/supertokens/webserver/WebserverAPI.java b/src/main/java/io/supertokens/webserver/WebserverAPI.java index 443f92c5e..79f9cbe77 100644 --- a/src/main/java/io/supertokens/webserver/WebserverAPI.java +++ b/src/main/java/io/supertokens/webserver/WebserverAPI.java @@ -399,14 +399,15 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws } tenantIdentifier = getTenantIdentifierWithStorageFromRequest(req); - if (this.versionNeeded(req)) { - // Check for CDI version for multitenancy - SemVer version = getVersionFromRequest(req); - if (version.lesserThan(SemVer.v2_22) && !tenantIdentifier.getTenantId().equals(TenantIdentifier.DEFAULT_TENANT_ID)) { - sendTextResponse(404, "Not found", resp); - return; - } + SemVer version = getVersionFromRequest(req); + + // Check for CDI version for multitenancy + if (version.lesserThan(SemVer.v2_22) && !tenantIdentifier.getTenantId().equals(TenantIdentifier.DEFAULT_TENANT_ID)) { + sendTextResponse(404, "Not found", resp); + return; + } + if (this.versionNeeded(req)) { assertThatVersionIsCompatible(version); Logging.info(main, tenantIdentifier, "API called: " + req.getRequestURI() + ". Method: " + req.getMethod() + ". Version: " + version,