Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 23988b1

Browse files
authored
[OASIS-6102]: changed functionality of the JSON schema validator module (optimizely#438)
Summary: - Changed functionality of the JSON schema validator module to only validate against projectConfigSchema - Updated existing unit tests to reflect this change Test plan: Existing unit tests Issues: OASIS-6102 Co-authored-by: Polina Nguen <[email protected]>
1 parent a49d323 commit 23988b1

File tree

4 files changed

+9
-25
lines changed

4 files changed

+9
-25
lines changed

Diff for: packages/optimizely-sdk/lib/core/project_config/index.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ var fns = require('../../utils/fns');
1717
var enums = require('../../utils/enums');
1818
var jsSdkUtils = require('@optimizely/js-sdk-utils');
1919
var configValidator = require('../../utils/config_validator');
20-
var projectConfigSchema = require('./project_config_schema');
2120

2221
var EXPERIMENT_RUNNING_STATUS = 'Running';
2322
var RESERVED_ATTRIBUTE_PREFIX = '$opt_';
@@ -508,7 +507,7 @@ module.exports = {
508507
if (config.skipJSONValidation === true) {
509508
config.logger.log(LOG_LEVEL.INFO, jsSdkUtils.sprintf(LOG_MESSAGES.SKIPPING_JSON_VALIDATION, MODULE_NAME));
510509
} else if (config.jsonSchemaValidator) {
511-
config.jsonSchemaValidator.validate(projectConfigSchema, config.datafile);
510+
config.jsonSchemaValidator.validate(config.datafile);
512511
config.logger.log(LOG_LEVEL.INFO, jsSdkUtils.sprintf(LOG_MESSAGES.VALID_DATAFILE, MODULE_NAME));
513512
}
514513
return module.exports.createProjectConfig(config.datafile);

Diff for: packages/optimizely-sdk/lib/utils/enums/index.js

-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ exports.ERROR_MESSAGES = {
4848
INVALID_ROLLOUT_ID: '%s: Invalid rollout ID %s attached to feature %s',
4949
INVALID_USER_ID: '%s: Provided user ID is in an invalid format.',
5050
INVALID_USER_PROFILE_SERVICE: '%s: Provided user profile service instance is in an invalid format: %s.',
51-
JSON_SCHEMA_EXPECTED: '%s: JSON schema expected.',
5251
NO_DATAFILE_SPECIFIED: '%s: No datafile specified. Cannot start optimizely.',
5352
NO_JSON_PROVIDED: '%s: No JSON object to validate against schema.',
5453
NO_VARIATION_FOR_EXPERIMENT_KEY: '%s: No variation key %s defined in datafile for experiment %s.',

Diff for: packages/optimizely-sdk/lib/utils/json_schema_validator/index.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
var validate = require('json-schema').validate;
1717
var sprintf = require('@optimizely/js-sdk-utils').sprintf;
18+
var projectConfigSchema = require('../../core/project_config/project_config_schema');
1819

1920
var ERROR_MESSAGES = require('../enums').ERROR_MESSAGES;
2021
var MODULE_NAME = 'JSON_SCHEMA_VALIDATOR';
@@ -26,16 +27,12 @@ module.exports = {
2627
* @param {Object} jsonObject The object to validate against the schema
2728
* @return {Boolean} True if the given object is valid
2829
*/
29-
validate: function(jsonSchema, jsonObject) {
30-
if (!jsonSchema) {
31-
throw new Error(sprintf(ERROR_MESSAGES.JSON_SCHEMA_EXPECTED, MODULE_NAME));
32-
}
33-
30+
validate: function(jsonObject) {
3431
if (!jsonObject) {
3532
throw new Error(sprintf(ERROR_MESSAGES.NO_JSON_PROVIDED, MODULE_NAME));
3633
}
3734

38-
var result = validate(jsonObject, jsonSchema);
35+
var result = validate(jsonObject, projectConfigSchema);
3936
if (result.valid) {
4037
return true;
4138
} else {

Diff for: packages/optimizely-sdk/lib/utils/json_schema_validator/index.tests.js

+5-16
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
var chai = require('chai');
1717
var assert = chai.assert;
1818
var jsonSchemaValidator = require('./');
19-
var projectConfigSchema = require('../../core/project_config/project_config_schema');
2019
var sprintf = require('@optimizely/js-sdk-utils').sprintf;
2120
var testData = require('../../tests/test_data.js');
2221

@@ -25,30 +24,20 @@ var ERROR_MESSAGES = require('../enums').ERROR_MESSAGES;
2524
describe('lib/utils/json_schema_validator', function() {
2625
describe('APIs', function() {
2726
describe('validate', function() {
28-
it('should validate the given object against the specified schema', function() {
29-
assert.isTrue(jsonSchemaValidator.validate({ type: 'number' }, 4));
30-
});
31-
3227
it('should throw an error if the object is not valid', function() {
3328
assert.throws(function() {
34-
jsonSchemaValidator.validate({ type: 'number' }, 'not a number');
35-
}, 'string value found, but a number is required');
36-
});
37-
38-
it('should throw an error if no schema is passed in', function() {
39-
assert.throws(function() {
40-
jsonSchemaValidator.validate();
41-
}, sprintf(ERROR_MESSAGES.JSON_SCHEMA_EXPECTED, 'JSON_SCHEMA_VALIDATOR'));
29+
jsonSchemaValidator.validate({});
30+
});
4231
});
4332

4433
it('should throw an error if no json object is passed in', function() {
4534
assert.throws(function() {
46-
jsonSchemaValidator.validate({ type: 'number' });
35+
jsonSchemaValidator.validate();
4736
}, sprintf(ERROR_MESSAGES.NO_JSON_PROVIDED, 'JSON_SCHEMA_VALIDATOR'));
4837
});
4938

50-
it('should validate specified Optimizely datafile with the Optimizely datafile schema', function() {
51-
assert.isTrue(jsonSchemaValidator.validate(projectConfigSchema, testData.getTestProjectConfig()));
39+
it('should validate specified Optimizely datafile', function() {
40+
assert.isTrue(jsonSchemaValidator.validate(testData.getTestProjectConfig()));
5241
});
5342
});
5443
});

0 commit comments

Comments
 (0)