Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [unreleased]

## [6.0.6] - 2023-07-24

- Adds all ee features enabled for in memory database.

## [6.0.5] - 2023-07-20

- Fixes logging issue in API call where it used to print out the root CUD tenant info when querying with a tenant
Expand Down Expand Up @@ -1725,33 +1729,33 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
#### Migration steps for SQL

- If using `access_token_signing_key_dynamic` false:
- ```sql
```sql
ALTER TABLE session_info ADD COLUMN use_static_key BOOLEAN NOT NULL DEFAULT(true);
ALTER TABLE session_info ALTER COLUMN use_static_key DROP DEFAULT;
```
- ```sql
```sql
INSERT INTO jwt_signing_keys(key_id, key_string, algorithm, created_at)
select CONCAT('s-', created_at_time) as key_id, value as key_string, 'RS256' as algorithm, created_at_time as created_at
from session_access_token_signing_keys;
```
- If using `access_token_signing_key_dynamic` true or not set:
- ```sql
- ```sql
ALTER TABLE session_info ADD COLUMN use_static_key BOOLEAN NOT NULL DEFAULT(false);
ALTER TABLE session_info ALTER COLUMN use_static_key DROP DEFAULT;
```

#### Migration steps for MongoDB

- If using `access_token_signing_key_dynamic` false:
- ```
```
db.session_info.update({},
{
"$set": {
"use_static_key": true
}
});
```
- ```
```
db.key_value.aggregate([
{
"$match": {
Expand Down Expand Up @@ -1796,7 +1800,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
```

- If using `access_token_signing_key_dynamic` true or not set:
- ```
```
db.session_info.update({},
{
"$set": {
Expand Down Expand Up @@ -2280,4 +2284,4 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### Changed

- Allow for an unlimited number of SuperTokens instances in production mode
- License changes to reflect the above
- License changes to reflect the above
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ compileTestJava { options.encoding = "UTF-8" }
// }
//}

version = "6.0.5"
version = "6.0.6"


repositories {
Expand Down
15 changes: 15 additions & 0 deletions ee/src/test/java/io/supertokens/ee/test/CronjobTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,11 @@ public void testThatInvalidOpaqueKeyOnCronjobCausesNoFeaturesToBeLoaded() throws
process.startProcess();
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(EETest.OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);
Assert.assertNotNull(
Expand Down Expand Up @@ -245,6 +250,11 @@ public void testThatInvalidStatelessKeyOnCronjobCausesNoFeaturesToBeLoaded() thr
process.startProcess();
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(EETest.STATELESS_LICENSE_KEY_WITH_TEST_AND_RANDOM_FEATURE_WITH_EXP);

Expand Down Expand Up @@ -274,6 +284,11 @@ public void cronjobRemovesFeaturesIfJWTExpired() throws Exception {
process.startProcess();
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(EETest.STATELESS_LICENSE_KEY_WITH_TEST_AND_RANDOM_FEATURE_WITH_EXP);

Expand Down
96 changes: 96 additions & 0 deletions ee/src/test/java/io/supertokens/ee/test/EETest.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ public void testRemovingLicenseKeyWhenItIsNotSet() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag featureFlag = FeatureFlag.getInstance(process.getProcess());

// call removeLicenseKeyAndSyncFeatures
Expand Down Expand Up @@ -130,6 +135,11 @@ public void testLoadingValidOpaqueKey() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);
Assert.assertNotNull(
process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.LICENSE_KEY_CHECK_NETWORK_CALL));
Expand Down Expand Up @@ -223,6 +233,11 @@ public void testLoadingValidStatelessKey() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(
STATELESS_LICENSE_KEY_WITH_TEST_FEATURE_NO_EXP);
Assert.assertNull(
Expand Down Expand Up @@ -584,6 +599,11 @@ public void checkThatRemovingOpaqueLicenseKeyHasNoNetworkCall()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);

Assert.assertEquals(FeatureFlag.getInstance(process.main).getEnabledFeatures().length, 1);
Expand All @@ -609,6 +629,11 @@ public void addingInvalidKeyAfterAddingCorrectKeyShouldHaveNoEffect()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);

Assert.assertEquals(FeatureFlag.getInstance(process.main).getEnabledFeatures().length, 1);
Expand Down Expand Up @@ -638,6 +663,11 @@ public void addingInvalidStatelessKeyAfterAddingCorrectKeyShouldHaveNoEffect()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);

Assert.assertEquals(FeatureFlag.getInstance(process.main).getEnabledFeatures().length, 1);
Expand Down Expand Up @@ -673,6 +703,11 @@ public void updateOpaqueToOpaqueLicenseKey()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);
Assert.assertNotNull(
process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.LICENSE_KEY_CHECK_NETWORK_CALL));
Expand Down Expand Up @@ -707,6 +742,11 @@ public void updateOpaqueToStatelessLicenseKey()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);
Assert.assertNotNull(
process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.LICENSE_KEY_CHECK_NETWORK_CALL));
Expand Down Expand Up @@ -741,6 +781,11 @@ public void updateStatelessToOpaqueLicenseKey()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(STATELESS_LICENSE_KEY_WITH_TEST_FEATURE_NO_EXP);
Assert.assertNull(
Expand Down Expand Up @@ -776,6 +821,12 @@ public void updateStatelessToStatelessLicenseKey()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}


FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(STATELESS_LICENSE_KEY_WITH_TEST_FEATURE_NO_EXP);
Assert.assertNull(
Expand Down Expand Up @@ -810,6 +861,11 @@ public void testRemovingOpaqueLicenseKey()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_TEST_FEATURE);
Assert.assertNotNull(
process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.LICENSE_KEY_CHECK_NETWORK_CALL));
Expand All @@ -836,6 +892,11 @@ public void testRemovingStatelessLicenseKey()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(STATELESS_LICENSE_KEY_WITH_TEST_FEATURE_NO_EXP);
Assert.assertEquals(FeatureFlag.getInstance(process.main).getEnabledFeatures().length, 1);
Expand All @@ -860,6 +921,11 @@ public void testVariousStatelessKeys()
{
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));
if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}


FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(STATELESS_LICENSE_KEY_WITH_EMPTY_FEATURE_NO_EXP);
Expand Down Expand Up @@ -914,6 +980,11 @@ public void testVariousOpaqueKeys()
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(OPAQUE_LICENSE_KEY_WITH_EMPTY_FEATURE);
Assert.assertEquals(FeatureFlag.getInstance(process.main).getEnabledFeatures().length, 0);
Expand Down Expand Up @@ -1060,6 +1131,11 @@ public void gettingFeatureFlagInAPIDoesntAlwaysQueryDb() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(STATELESS_LICENSE_KEY_WITH_TEST_FEATURE_WITH_EXP);

Expand All @@ -1084,6 +1160,11 @@ public void gettingFeatureFlagInAPIQueriesDbAfterCertainAmountOfTime() throws Ex
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main)
.setLicenseKeyAndSyncFeatures(STATELESS_LICENSE_KEY_WITH_TEST_FEATURE_WITH_EXP);

Expand Down Expand Up @@ -1114,6 +1195,11 @@ public void gettingEmptyFeatureFlagFromDb() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

EE_FEATURES[] features = new EE_FEATURES[]{};
JsonArray json = new JsonArray();
Arrays.stream(features).forEach(ee_features -> json.add(new JsonPrimitive(ee_features.toString())));
Expand All @@ -1138,6 +1224,11 @@ public void gettingMissingFeatureFlagFromDb() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

FeatureFlag.getInstance(process.main).getEeFeatureFlagInstance()
.updateEnabledFeaturesValueReadFromDbTime(System.currentTimeMillis() - (1000 * 3600 * 5));

Expand All @@ -1155,6 +1246,11 @@ public void gettingInvalidFeatureFlagShouldIgnoreItFromDb() throws Exception {
TestingProcessManager.TestingProcess process = TestingProcessManager.start(args);
Assert.assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED));

if (StorageLayer.isInMemDb(process.main)) {
// cause we keep all features enabled in memdb anyway
return;
}

JsonArray json = new JsonArray();
json.add(new JsonPrimitive("random"));
json.add(new JsonPrimitive("test"));
Expand Down
Loading