From b2548acca9fb8431f0d9e921ab54dee552e049f2 Mon Sep 17 00:00:00 2001 From: Antranig Basman Date: Mon, 9 Dec 2019 16:30:30 +0000 Subject: [PATCH 1/6] FLUID-6145: Beginning to upgrade to immutable options world --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index df664a6ed..55979230f 100644 --- a/package.json +++ b/package.json @@ -14,12 +14,12 @@ "fluid-resolve": "1.3.0", "glob": "7.1.3", "@google-cloud/trace-agent": "3.4.0", - "gpii-couchdb-test-harness": "1.0.0-dev.20190627T080736Z.0e3a1fd.GPII-3531", + "gpii-couchdb-test-harness": "1.0.0-dev.20190827T101451Z.024d2c3.GPII-3531", "gpii-json-schema": "2.1.2-dev.20190704T103720Z.3c177e5.GPII-4009", - "infusion": "3.0.0-dev.20190328T144119Z.ec44dbfab", + "infusion": "3.0.0-dev.20191126T121754Z.6452de06f.FLUID-6145", "ipaddr.js": "1.9.0", "json5": "2.1.0", - "kettle": "1.10.1", + "kettle": "1.12.0-dev.20191125T152958Z.c571ba7.FLUID-6145", "mkdirp": "0.5.1", "moment": "2.24.0", "ndef": "0.2.0", @@ -41,7 +41,7 @@ "browserify": "16.2.3", "gpii-express": "1.0.15", "gpii-grunt-lint-all": "1.0.5", - "gpii-testem": "2.1.7", + "gpii-testem": "2.1.11-dev.20191003T113129Z.477bcc0.GPII-4156", "grunt": "1.0.3", "grunt-markdownlint": "2.1.0", "http-browserify": "1.7.0", @@ -49,7 +49,7 @@ "nyc": "13.1.0", "recursive-copy": "2.0.9", "supports-color": "5.5.0", - "testem": "2.10.0", + "testem": "3.0.1", "url": "0.11.0" }, "license": "BSD-3-Clause", From b32fe36714fbc6943fb3d4f807d53df7090a98b3 Mon Sep 17 00:00:00 2001 From: Antranig Basman Date: Thu, 19 Dec 2019 18:36:37 +0000 Subject: [PATCH 2/6] FLUID-6145: Fully working tests and general dependency update --- .../test/web/html/ProcessReporterTest.html | 1 + .../test/web/html/ProcessesBridgeTest.html | 1 + .../test/web/html/LaunchHandlerTest.html | 1 + .../html/SettingsHandlerUtilitiesTest.html | 1 + gpii/node_modules/testing/src/Mocks.js | 5 ++- .../userListeners/test/pcscTests.js | 6 ++- package.json | 40 +++++++++---------- tests/UntrustedPSPIntegrationTests.js | 8 ++-- tests/UntrustedUserLogonRequestTests.js | 4 +- .../shared/FlowManagerSettingsPutTestDefs.js | 6 +-- tests/shared/UserLogonRequestTestDefs.js | 33 ++++++++------- 11 files changed, 59 insertions(+), 47 deletions(-) diff --git a/gpii/node_modules/processReporter/test/web/html/ProcessReporterTest.html b/gpii/node_modules/processReporter/test/web/html/ProcessReporterTest.html index f51117edd..73c8568ab 100644 --- a/gpii/node_modules/processReporter/test/web/html/ProcessReporterTest.html +++ b/gpii/node_modules/processReporter/test/web/html/ProcessReporterTest.html @@ -9,6 +9,7 @@ + diff --git a/gpii/node_modules/processReporter/test/web/html/ProcessesBridgeTest.html b/gpii/node_modules/processReporter/test/web/html/ProcessesBridgeTest.html index 1752099b4..0e7c91cd7 100644 --- a/gpii/node_modules/processReporter/test/web/html/ProcessesBridgeTest.html +++ b/gpii/node_modules/processReporter/test/web/html/ProcessesBridgeTest.html @@ -9,6 +9,7 @@ + diff --git a/gpii/node_modules/settingsHandlers/test/web/html/LaunchHandlerTest.html b/gpii/node_modules/settingsHandlers/test/web/html/LaunchHandlerTest.html index 4e66b8577..09ef580e1 100644 --- a/gpii/node_modules/settingsHandlers/test/web/html/LaunchHandlerTest.html +++ b/gpii/node_modules/settingsHandlers/test/web/html/LaunchHandlerTest.html @@ -9,6 +9,7 @@ + diff --git a/gpii/node_modules/settingsHandlers/test/web/html/SettingsHandlerUtilitiesTest.html b/gpii/node_modules/settingsHandlers/test/web/html/SettingsHandlerUtilitiesTest.html index ef071106d..588d93fa6 100644 --- a/gpii/node_modules/settingsHandlers/test/web/html/SettingsHandlerUtilitiesTest.html +++ b/gpii/node_modules/settingsHandlers/test/web/html/SettingsHandlerUtilitiesTest.html @@ -9,6 +9,7 @@ + diff --git a/gpii/node_modules/testing/src/Mocks.js b/gpii/node_modules/testing/src/Mocks.js index 8e017c7e9..a9e23c51c 100644 --- a/gpii/node_modules/testing/src/Mocks.js +++ b/gpii/node_modules/testing/src/Mocks.js @@ -366,7 +366,8 @@ gpii.test.integration.mockSettingsHandlerRegistry.populateOne = function (that, gpii.test.integration.mockSettingsHandlerRegistry.depopulate = function (that) { fluid.each(that.settingsHandlers, function (settingsHandler) { - if (fluid.isComponent(settingsHandler)) { + if (fluid.isComponent(settingsHandler) && !fluid.isDestroyed(settingsHandler)) { + // It may already be destroyed if it was one of the Journalling mocks created in place settingsHandler.destroy(); } }); @@ -375,7 +376,7 @@ gpii.test.integration.mockSettingsHandlerRegistry.depopulate = function (that) { gpii.test.integration.mockSettingsHandlerRegistry.populate = function (that) { fluid.each(that.options.settingsHandlers, function (options, key) { - var mock = options.noMock ? + var mock = options.noMock ? // TODO: Eliminate this sleazy scheme which creates free components and then bashes them into globals fluid.getGlobalValue(key) : gpii.test.integration.mockSettingsHandler(options); gpii.test.integration.mockSettingsHandlerRegistry.populateOne(that, mock, key); }); diff --git a/gpii/node_modules/userListeners/test/pcscTests.js b/gpii/node_modules/userListeners/test/pcscTests.js index 49c7fa5fa..bfcc3bd9e 100644 --- a/gpii/node_modules/userListeners/test/pcscTests.js +++ b/gpii/node_modules/userListeners/test/pcscTests.js @@ -217,7 +217,9 @@ jqUnit.asyncTest("PC/SC listener - mock card", function () { jqUnit.expect(gpii.tests.userListener.cardTests.length * 3 + 20); var index = 0; - var listener = gpii.test.userListeners.pcsc(); + var listener = gpii.test.userListeners.pcsc({ + failDelay: 0 + }); var reader; var messageSuffix; @@ -279,7 +281,7 @@ jqUnit.asyncTest("PC/SC listener - mock card", function () { }); listener.monitorReader(reader); - listener.options.failDelay = 0; +// listener.options.failDelay = 0; reader.removeCard(); diff --git a/package.json b/package.json index 55979230f..1c9c6276e 100644 --- a/package.json +++ b/package.json @@ -6,50 +6,50 @@ "bugs": "http://issues.gpii.net/browse/GPII", "homepage": "http://gpii.net/", "dependencies": { - "body-parser": "1.18.3", + "body-parser": "1.19.0", "connect-ensure-login": "0.1.1", - "express": "4.16.4", - "express-handlebars": "3.0.0", - "express-session": "1.15.6", + "express": "4.17.1", + "express-handlebars": "3.1.0", + "express-session": "1.17.0", "fluid-resolve": "1.3.0", - "glob": "7.1.3", + "glob": "7.1.6", "@google-cloud/trace-agent": "3.4.0", "gpii-couchdb-test-harness": "1.0.0-dev.20190827T101451Z.024d2c3.GPII-3531", "gpii-json-schema": "2.1.2-dev.20190704T103720Z.3c177e5.GPII-4009", - "infusion": "3.0.0-dev.20191126T121754Z.6452de06f.FLUID-6145", - "ipaddr.js": "1.9.0", - "json5": "2.1.0", + "infusion": "3.0.0-dev.20191219T155607Z.32876d29c.FLUID-6145", + "ipaddr.js": "1.9.1", + "json5": "2.1.1", "kettle": "1.12.0-dev.20191125T152958Z.c571ba7.FLUID-6145", "mkdirp": "0.5.1", "moment": "2.24.0", "ndef": "0.2.0", - "nock": "10.0.4", + "nock": "11.7.0", "node-jqunit": "1.1.8", "node-uuid": "1.4.8", "oauth2orize": "1.11.0", - "passport": "0.4.0", + "passport": "0.4.1", "passport-local": "1.0.0", "passport-oauth2-client-password": "0.1.2", "request": "2.88.0", - "rimraf": "2.6.3", - "semver": "5.6.0", - "write-file-atomic": "2.4.2", + "rimraf": "3.0.0", + "semver": "7.1.1", + "write-file-atomic": "3.0.1", "xml-mapping": "1.7.1", "xregexp": "4.2.4" }, "devDependencies": { - "browserify": "16.2.3", + "browserify": "16.5.0", "gpii-express": "1.0.15", "gpii-grunt-lint-all": "1.0.5", - "gpii-testem": "2.1.11-dev.20191003T113129Z.477bcc0.GPII-4156", - "grunt": "1.0.3", - "grunt-markdownlint": "2.1.0", + "gpii-testem": "2.1.11", + "grunt": "1.0.4", + "grunt-markdownlint": "2.8.0", "http-browserify": "1.7.0", "https-browserify": "1.0.0", "nyc": "13.1.0", - "recursive-copy": "2.0.9", - "supports-color": "5.5.0", - "testem": "3.0.1", + "recursive-copy": "2.0.10", + "supports-color": "7.1.0", + "testem": "3.0.2", "url": "0.11.0" }, "license": "BSD-3-Clause", diff --git a/tests/UntrustedPSPIntegrationTests.js b/tests/UntrustedPSPIntegrationTests.js index d3a68da35..feda3089a 100644 --- a/tests/UntrustedPSPIntegrationTests.js +++ b/tests/UntrustedPSPIntegrationTests.js @@ -190,20 +190,20 @@ gpii.test.untrusted.pspIntegration.endSequence = [ ]; gpii.test.untrusted.pspIntegration.verifyRawPrefsAtStart = function (that, preferences) { - that.options.initialPrefs = JSON.parse(preferences); + that.initialPrefs = JSON.parse(preferences); jqUnit.assertValue("The initial preferences has been received", preferences); }; gpii.test.untrusted.pspIntegration.verifyRawPrefsAtEnd = function (that, preferences, sequenceNum, expectedChange) { - fluid.log (that.options.name, ", number ", sequenceNum, " in the sequence"); + fluid.log(that.options.name, ", number ", sequenceNum, " in the sequence"); var expectedPrefsChange = expectedChange ? expectedChange : gpii.test.untrusted.pspIntegration.expectedPrefsChange[sequenceNum]; - var expected = fluid.extend(true, {}, that.options.initialPrefs, expectedPrefsChange); + var expected = fluid.extend(true, {}, that.initialPrefs, expectedPrefsChange); jqUnit.assertDeepEq("The updated preferences have been saved to the cloud", expected, JSON.parse(preferences)); }; gpii.test.untrusted.pspIntegration.verifyRawPrefsAfterAutoSave = function (that, preferences) { - jqUnit.assertDeepEq("The preferences not in \"autosave\" metadata are not auto saved", that.options.initialPrefs, JSON.parse(preferences)); + jqUnit.assertDeepEq("The preferences not in \"autosave\" metadata are not auto saved", that.initialPrefs, JSON.parse(preferences)); }; gpii.tests.pspIntegration.saveTestDefs = [ diff --git a/tests/UntrustedUserLogonRequestTests.js b/tests/UntrustedUserLogonRequestTests.js index 2448312d2..35e81da42 100644 --- a/tests/UntrustedUserLogonRequestTests.js +++ b/tests/UntrustedUserLogonRequestTests.js @@ -56,7 +56,7 @@ gpii.tests.untrusted.userLogonRequest.untrustedWithoutDbConnection = [{ "port": 8084, "isError": true }, - "{lifecycleManager}.userErrors.options.trackedUserErrors", + "{lifecycleManager}.userErrors.trackedUserErrors", { "isError": true, "messageKey": "NoConnection", @@ -119,7 +119,7 @@ gpii.tests.untrusted.userLogonRequest.nonexistentKeyInTestDefs = [{ "isError": true, "statusCode": 401 }, - "{lifecycleManager}.userErrors.options.trackedUserErrors", + "{lifecycleManager}.userErrors.trackedUserErrors", { "isError": true, "messageKey": "KeyInFail", diff --git a/tests/shared/FlowManagerSettingsPutTestDefs.js b/tests/shared/FlowManagerSettingsPutTestDefs.js index 080f7bdfd..7b3bc357a 100644 --- a/tests/shared/FlowManagerSettingsPutTestDefs.js +++ b/tests/shared/FlowManagerSettingsPutTestDefs.js @@ -484,7 +484,7 @@ fluid.defaults("gpii.tests.cloud.oauth2.settingsPut.updateSnapsetSequence", { null, { "headers": { - "Authorization": "{accessTokenUpdateSnapsetRequest}.options.stashedAuth" + "Authorization": "{accessTokenUpdateSnapsetRequest}.stashedAuth" } } ] @@ -497,7 +497,7 @@ fluid.defaults("gpii.tests.cloud.oauth2.settingsPut.updateSnapsetSequence", { gpii.tests.cloud.oauth2.settingsPut.updatedPrefsSet, { "headers": { - "Authorization": "{accessTokenUpdateSnapsetRequest}.options.stashedAuth" + "Authorization": "{accessTokenUpdateSnapsetRequest}.stashedAuth" } } ] @@ -604,7 +604,7 @@ gpii.tests.cloud.oauth2.settingsPut.updateSnapset.testResponse = function (data, gpii.tests.cloud.oauth2.settingsPut.updateSnapset.testAndStashAccessResponse = function (data, request) { var token = gpii.test.cloudBased.oauth2.verifyResourceOwnerGpiiKeyAccessTokenInResponse(data, request); var auth = "Bearer " + token.access_token; - request.options.stashedAuth = auth; + request.stashedAuth = auth; }; gpii.tests.cloud.oauth2.settingsPut.updateSnapset.testLifecycleResponse = function (data, request) { diff --git a/tests/shared/UserLogonRequestTestDefs.js b/tests/shared/UserLogonRequestTestDefs.js index ac16d229b..ec90b6583 100644 --- a/tests/shared/UserLogonRequestTestDefs.js +++ b/tests/shared/UserLogonRequestTestDefs.js @@ -158,7 +158,8 @@ fluid.defaults("gpii.tests.userLogonRequest.testCaseHolder", { }); gpii.tests.userLogonRequest.verifyActiveGpiiKey = function (lifecycleManager, expected) { - jqUnit.assertDeepEq("The current active GPII key is as expected - " + expected, expected, lifecycleManager.getActiveSessionGpiiKey()); + var current = lifecycleManager.getActiveSessionGpiiKey(); + jqUnit.assertDeepEq("The current active GPII key is as expected - " + expected, expected, current); }; gpii.tests.userLogonRequest.testLoginResponse = function (data, gpiiKey) { @@ -203,11 +204,13 @@ gpii.tests.userLogonRequest.commonTestConfig = { distributeOptions: { "lifecycleManager.userErrorsListener": { "record": { - trackedUserErrors: {}, + members: { + trackedUserErrors: {} + }, listeners: { "userError.trackReportedError": { listener: "fluid.set", - args: ["{that}.options.trackedUserErrors", "error", "{arguments}.0"] + args: ["{that}.trackedUserErrors", "error", "{arguments}.0"] } } }, @@ -236,11 +239,13 @@ gpii.tests.userLogonRequest.buildTestDefs = function (testDefs, testType) { distributeOptions: { "lifecycleManager.logonChangeListener": { "record": { - trackedLogonChange: [], + members: { + trackedLogonChange: [] + }, modelListeners: { "logonChange": { listener: "gpii.tests.userLogonRequest.trackLogonChange", - args: ["{that}.options.trackedLogonChange", "{change}.value", "{testCaseHolder}"] + args: ["{that}.trackedLogonChange", "{change}.value", "{testCaseHolder}"] } } }, @@ -276,7 +281,7 @@ gpii.tests.userLogonRequest.testDefs = [ }, { funcName: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.proximityTriggeredLogon"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.proximityTriggeredLogon"] // trackedLogonChange, expectedModelChanges) }, { func: "gpii.tests.userLogonRequest.verifyActiveGpiiKey", @@ -305,7 +310,7 @@ gpii.tests.userLogonRequest.testDefs = [ }, { funcName: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.proximityTriggeredLogout"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.proximityTriggeredLogout"] // trackedLogonChange, expectedModelChanges) } ] }, @@ -346,7 +351,7 @@ gpii.tests.userLogonRequest.testDefs = [ }, { funcName: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.secondProximityTriggered"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.secondProximityTriggered"] // trackedLogonChange, expectedModelChanges) } ] }, @@ -475,7 +480,7 @@ gpii.tests.userLogonRequest.testDefs = [ { event: "{lifecycleManager}.events.onQueueEmpty", listener: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.noUserLogin"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.noUserLogin"] // trackedLogonChange, expectedModelChanges) } ] }, @@ -568,7 +573,7 @@ gpii.tests.userLogonRequest.testDefs = [ }, { funcName: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.resetLogout"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.resetLogout"] // trackedLogonChange, expectedModelChanges) }, { // 6. Verify the default settings have been applied: stop the magnifier @@ -656,7 +661,7 @@ gpii.tests.userLogonRequest.testDefs = [ task: "{lifecycleManager}.performLogout", args: [gpii.tests.userLogonRequest.gpiiKey], reject: "gpii.tests.userLogonRequest.testLogoutError", - rejectArgs: ["{arguments}.0", "{lifecycleManager}.userErrors.options.trackedUserErrors", { + rejectArgs: ["{arguments}.0", "{lifecycleManager}.userErrors.trackedUserErrors", { "statusCode": 409, "message": "Got logout request from user adjustCursor, but the user sammy is logged in. So ignoring the request.", "ignoreUserErrors": false @@ -676,7 +681,7 @@ gpii.tests.userLogonRequest.testDefs = [ }, { funcName: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.noUserLogin"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.noUserLogin"] // trackedLogonChange, expectedModelChanges) } ] }, @@ -689,7 +694,7 @@ gpii.tests.userLogonRequest.testDefs = [ task: "{lifecycleManager}.performLogout", args: [gpii.tests.userLogonRequest.gpiiKey], reject: "gpii.tests.userLogonRequest.testLogoutError", - rejectArgs: ["{arguments}.0", "{lifecycleManager}.userErrors.options.trackedUserErrors", { + rejectArgs: ["{arguments}.0", "{lifecycleManager}.userErrors.trackedUserErrors", { "statusCode": 409, "message": "Got logout request from user adjustCursor, but the user noUser is logged in. So ignoring the request.", "ignoreUserErrors": true @@ -720,7 +725,7 @@ gpii.tests.userLogonRequest.testDefs = [ }, { funcName: "gpii.tests.userLogonRequest.checkLastModelChanges", - args: ["{lifecycleManager}.options.trackedLogonChange", "{that}.options.expectedModelChanges.logoutNoUser"] // trackedLogonChange, expectedModelChanges) + args: ["{lifecycleManager}.trackedLogonChange", "{that}.options.expectedModelChanges.logoutNoUser"] // trackedLogonChange, expectedModelChanges) } ] }, From 947e6dcb23a48427a3ca42074986a448ff9b0a23 Mon Sep 17 00:00:00 2001 From: Antranig Basman Date: Fri, 20 Dec 2019 18:27:51 +0000 Subject: [PATCH 3/6] FLUID-6145: Dependency update to matched gpii-json-schema for Infusion resolving FLUID-6445 and fix to production tests --- package.json | 6 +++--- tests/production/ProductionTestsUtils.js | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 1c9c6276e..34016ed0d 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,11 @@ "glob": "7.1.6", "@google-cloud/trace-agent": "3.4.0", "gpii-couchdb-test-harness": "1.0.0-dev.20190827T101451Z.024d2c3.GPII-3531", - "gpii-json-schema": "2.1.2-dev.20190704T103720Z.3c177e5.GPII-4009", - "infusion": "3.0.0-dev.20191219T155607Z.32876d29c.FLUID-6145", + "gpii-json-schema": "2.1.2-dev.20191220T175037Z.5f4201b.GPII-4009-FLUID-6145", + "infusion": "3.0.0-dev.20191220T163226Z.db83ce0ef.FLUID-6145", "ipaddr.js": "1.9.1", "json5": "2.1.1", - "kettle": "1.12.0-dev.20191125T152958Z.c571ba7.FLUID-6145", + "kettle": "1.12.0-dev.20191220T164344Z.f1fef17.FLUID-6145", "mkdirp": "0.5.1", "moment": "2.24.0", "ndef": "0.2.0", diff --git a/tests/production/ProductionTestsUtils.js b/tests/production/ProductionTestsUtils.js index 3d4d73bef..86c23d075 100644 --- a/tests/production/ProductionTestsUtils.js +++ b/tests/production/ProductionTestsUtils.js @@ -74,7 +74,9 @@ fluid.defaults("gpii.tests.cloud.oauth2.accessTokensDeleteRequests", { type: "gpii.tests.productionConfigTesting.dataBaseRequest", options: { path: "/gpii/_design/views/_view/findInfoByAccessToken", - tokensToRemove: [] // set by successful request. + members: { + tokensToRemove: [] // set by successful request. + } } }, bulkDeleteRequest: { @@ -100,7 +102,7 @@ fluid.defaults("gpii.tests.productionConfigTesting.deleteAccessTokensSequence", listener: "gpii.tests.productionConfigTesting.testGetAccessTokensForDeletion" }, { funcName: "gpii.tests.productionConfigTesting.bulkDelete", - args: ["{bulkDeleteRequest}", "{getAccessTokensRequest}.options.tokensToRemove"] + args: ["{bulkDeleteRequest}", "{getAccessTokensRequest}.tokensToRemove"] }, { event: "{bulkDeleteRequest}.events.onComplete", listener: "gpii.tests.productionConfigTesting.afterAccessTokensDeletion" @@ -161,7 +163,7 @@ gpii.tests.productionConfigTesting.testGetAccessTokensForDeletion = function (da var aToken = aRow.value.authorization; if (fluid.contains(gpii.test.cloudBased.oauth2.accessTokenCache, aToken.accessToken)) { aToken._deleted = true; - accessTokensRequest.options.tokensToRemove.push(aToken); + accessTokensRequest.tokensToRemove.push(aToken); fluid.log("Will remove ", aToken.type, " for ", aToken.gpiiKey); } }); From 25a2c5a48f8ced4610c1a240b530997a86b5a44d Mon Sep 17 00:00:00 2001 From: Antranig Basman Date: Fri, 20 Dec 2019 19:28:23 +0000 Subject: [PATCH 4/6] FLUID-6145: Removing final site of options modification from production tests --- tests/production/DeleteUserSettingsFromCouchTests.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/production/DeleteUserSettingsFromCouchTests.js b/tests/production/DeleteUserSettingsFromCouchTests.js index bb70856c4..0d8186085 100644 --- a/tests/production/DeleteUserSettingsFromCouchTests.js +++ b/tests/production/DeleteUserSettingsFromCouchTests.js @@ -47,7 +47,7 @@ gpii.tests.productionConfigTesting.testGetThenSaveDocForDeletion = function (dat var thisDoc = JSON.parse(data); thisDoc._deleted = true; // saved for the furthur use in getPrefsSafeDoc() for getting corresponding prefs safe of this GPII key - request.options.docToRemove = thisDoc; + request.docToRemove = thisDoc; fluid.log("Will remove ", thisDoc.type, " ", thisDoc._id); docsToRemove.push(thisDoc); } else { @@ -56,7 +56,7 @@ gpii.tests.productionConfigTesting.testGetThenSaveDocForDeletion = function (dat }; gpii.tests.productionConfigTesting.getPrefsSafeDoc = function (prefsSafeRequest, gpiiKeyRequest) { - var gpiiKeyToRemove = gpiiKeyRequest.options.docToRemove; + var gpiiKeyToRemove = gpiiKeyRequest.docToRemove; if (gpiiKeyToRemove && gpiiKeyToRemove.prefsSafeId) { prefsSafeRequest.options.path = "/gpii/" + gpiiKeyToRemove.prefsSafeId; } else { From 56414a36043c60d33a2a03a83d1dbbb3d6c7ba96 Mon Sep 17 00:00:00 2001 From: Antranig Basman Date: Fri, 20 Dec 2019 23:04:53 +0000 Subject: [PATCH 5/6] FLUID-6145: Moved CouchTests request option modification into directModel --- tests/production/DeleteUserSettingsFromCouchTests.js | 9 +++++---- tests/production/ProductionTestsUtils.js | 7 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/production/DeleteUserSettingsFromCouchTests.js b/tests/production/DeleteUserSettingsFromCouchTests.js index 0d8186085..d8b374c0b 100644 --- a/tests/production/DeleteUserSettingsFromCouchTests.js +++ b/tests/production/DeleteUserSettingsFromCouchTests.js @@ -57,14 +57,15 @@ gpii.tests.productionConfigTesting.testGetThenSaveDocForDeletion = function (dat gpii.tests.productionConfigTesting.getPrefsSafeDoc = function (prefsSafeRequest, gpiiKeyRequest) { var gpiiKeyToRemove = gpiiKeyRequest.docToRemove; + var path; if (gpiiKeyToRemove && gpiiKeyToRemove.prefsSafeId) { - prefsSafeRequest.options.path = "/gpii/" + gpiiKeyToRemove.prefsSafeId; + path = "/gpii/" + gpiiKeyToRemove.prefsSafeId; } else { // This path should force a 404 - prefsSafeRequest.options.path = "/gpii/prefsSafe-" + prefsSafeRequest.options.gpiiKey; + path = "/gpii/prefsSafe-" + prefsSafeRequest.options.gpiiKey; fluid.log("No Prefs Safe to retrieve for GPII key " + prefsSafeRequest.options.gpiiKey); } - prefsSafeRequest.sendToDatabase(); + prefsSafeRequest.sendToDatabase(undefined, { path: path }); }; gpii.tests.productionConfigTesting.testGetExtraAccessTokens = function (data, accessTokensRequest, docsToRemove) { @@ -264,7 +265,7 @@ gpii.tests.productionConfigTesting.deleteTestRecordsFromDatabaseTests = [{ gpiiKey: "nonexistent_gpii_key" } }, - "getClientCredentialSchemaV01": { + getClientCredentialSchemaV01: { type: "gpii.tests.productionConfigTesting.dataBaseRequest", options: { path: "/gpii/clientCredential-schemaV0.1" diff --git a/tests/production/ProductionTestsUtils.js b/tests/production/ProductionTestsUtils.js index 86c23d075..c9d863a34 100644 --- a/tests/production/ProductionTestsUtils.js +++ b/tests/production/ProductionTestsUtils.js @@ -46,7 +46,8 @@ fluid.defaults("gpii.tests.productionConfigTesting.dataBaseRequest", { args: [ "{that}", gpii.tests.productionConfigTesting.couchdbUrl.port, - "{arguments}.0" // payload (optional) + "{arguments}.0", // payload (optional) + "{arguments}.1" // directModel (optional) ] } } @@ -184,6 +185,6 @@ gpii.tests.productionConfigTesting.afterAccessTokensDeletion = function (data, r gpii.test.cloudBased.oauth2.clearAccessTokenCache(); }; -gpii.tests.productionConfigTesting.sendToRemoteHost = function (request, remotePort, payload) { - request.send(payload, { port: remotePort }); +gpii.tests.productionConfigTesting.sendToRemoteHost = function (request, remotePort, payload, directModel) { + request.send(payload, fluid.extend(true, { port: remotePort }, directModel)); }; From 363c88844f1f4761fee78bcd4b1e26dda1ea4f44 Mon Sep 17 00:00:00 2001 From: Antranig Basman Date: Mon, 6 Jan 2020 11:58:48 +0000 Subject: [PATCH 6/6] FLUID-6145: Resolved latest immutable modifications in PSPChannel --- gpii/node_modules/flowManager/src/PSPChannel.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gpii/node_modules/flowManager/src/PSPChannel.js b/gpii/node_modules/flowManager/src/PSPChannel.js index f1c026bc5..269652d42 100644 --- a/gpii/node_modules/flowManager/src/PSPChannel.js +++ b/gpii/node_modules/flowManager/src/PSPChannel.js @@ -143,7 +143,7 @@ gpii.pspChannel.generateDefaultSettingControlsPromise = function (defaultSetting // "settingControls" block. fluid.each(defaultPreferences, function (defaultPrefsVal, defaultPrefsKey) { var prefsInfo = gpii.pspChannel.getPreferenceInfo(schemas, defaultPrefsKey, defaultPrefsVal); - var schema = prefsInfo.schema; + var schema = fluid.copy(prefsInfo.schema); if (schema) { fluid.set(schema, ["default"], prefsInfo.prefsValue); gpii.pspChannel.emitSettingControl(defaultSettingControls, schema, undefined, prefsInfo.prefsKeySegs, "live"); @@ -192,7 +192,7 @@ gpii.pspChannel.getPreferenceInfo = function (solutionSchemas, prefsKey, prefsVa // When the inner pref key is a common term, use the schema of this common term. // TODO: This if block should be removed at fixing https://issues.gpii.net/browse/GPII-4063 // when the support for "common terms scoped within applications" discontinues. - schema = fluid.get(solutionSchemas, [innerPrefsKey]); + schema = fluid.copy(fluid.get(solutionSchemas, [innerPrefsKey])); delete schema.$schema; solutionName = fluid.get(schema, ["title"]); presentedCommonTerm = innerPrefsKey; @@ -213,7 +213,7 @@ gpii.pspChannel.getPreferenceInfo = function (solutionSchemas, prefsKey, prefsVa }); } else { // Handle common terms - var schema = fluid.get(solutionSchemas, [prefsKey]); + var schema = fluid.copy(fluid.get(solutionSchemas, [prefsKey])); delete schema.$schema; togo = { schema: schema,