diff --git a/packages/optimizely-sdk/lib/core/project_config/index.js b/packages/optimizely-sdk/lib/core/project_config/index.js index 3f26f2376..ad0260d51 100644 --- a/packages/optimizely-sdk/lib/core/project_config/index.js +++ b/packages/optimizely-sdk/lib/core/project_config/index.js @@ -17,7 +17,6 @@ var fns = require('../../utils/fns'); var enums = require('../../utils/enums'); var jsSdkUtils = require('@optimizely/js-sdk-utils'); var configValidator = require('../../utils/config_validator'); -var projectConfigSchema = require('./project_config_schema'); var EXPERIMENT_RUNNING_STATUS = 'Running'; var RESERVED_ATTRIBUTE_PREFIX = '$opt_'; @@ -508,7 +507,7 @@ module.exports = { if (config.skipJSONValidation === true) { config.logger.log(LOG_LEVEL.INFO, jsSdkUtils.sprintf(LOG_MESSAGES.SKIPPING_JSON_VALIDATION, MODULE_NAME)); } else if (config.jsonSchemaValidator) { - config.jsonSchemaValidator.validate(projectConfigSchema, config.datafile); + config.jsonSchemaValidator.validate(config.datafile); config.logger.log(LOG_LEVEL.INFO, jsSdkUtils.sprintf(LOG_MESSAGES.VALID_DATAFILE, MODULE_NAME)); } return module.exports.createProjectConfig(config.datafile); diff --git a/packages/optimizely-sdk/lib/utils/enums/index.js b/packages/optimizely-sdk/lib/utils/enums/index.js index a0e4d4435..743aed808 100644 --- a/packages/optimizely-sdk/lib/utils/enums/index.js +++ b/packages/optimizely-sdk/lib/utils/enums/index.js @@ -48,7 +48,6 @@ exports.ERROR_MESSAGES = { INVALID_ROLLOUT_ID: '%s: Invalid rollout ID %s attached to feature %s', INVALID_USER_ID: '%s: Provided user ID is in an invalid format.', INVALID_USER_PROFILE_SERVICE: '%s: Provided user profile service instance is in an invalid format: %s.', - JSON_SCHEMA_EXPECTED: '%s: JSON schema expected.', NO_DATAFILE_SPECIFIED: '%s: No datafile specified. Cannot start optimizely.', NO_JSON_PROVIDED: '%s: No JSON object to validate against schema.', NO_VARIATION_FOR_EXPERIMENT_KEY: '%s: No variation key %s defined in datafile for experiment %s.', diff --git a/packages/optimizely-sdk/lib/utils/json_schema_validator/index.js b/packages/optimizely-sdk/lib/utils/json_schema_validator/index.js index a0cec952f..69876c6e4 100644 --- a/packages/optimizely-sdk/lib/utils/json_schema_validator/index.js +++ b/packages/optimizely-sdk/lib/utils/json_schema_validator/index.js @@ -15,6 +15,7 @@ */ var validate = require('json-schema').validate; var sprintf = require('@optimizely/js-sdk-utils').sprintf; +var projectConfigSchema = require('../../core/project_config/project_config_schema'); var ERROR_MESSAGES = require('../enums').ERROR_MESSAGES; var MODULE_NAME = 'JSON_SCHEMA_VALIDATOR'; @@ -26,16 +27,12 @@ module.exports = { * @param {Object} jsonObject The object to validate against the schema * @return {Boolean} True if the given object is valid */ - validate: function(jsonSchema, jsonObject) { - if (!jsonSchema) { - throw new Error(sprintf(ERROR_MESSAGES.JSON_SCHEMA_EXPECTED, MODULE_NAME)); - } - + validate: function(jsonObject) { if (!jsonObject) { throw new Error(sprintf(ERROR_MESSAGES.NO_JSON_PROVIDED, MODULE_NAME)); } - var result = validate(jsonObject, jsonSchema); + var result = validate(jsonObject, projectConfigSchema); if (result.valid) { return true; } else { diff --git a/packages/optimizely-sdk/lib/utils/json_schema_validator/index.tests.js b/packages/optimizely-sdk/lib/utils/json_schema_validator/index.tests.js index 7e016ab67..caf2b5284 100644 --- a/packages/optimizely-sdk/lib/utils/json_schema_validator/index.tests.js +++ b/packages/optimizely-sdk/lib/utils/json_schema_validator/index.tests.js @@ -16,7 +16,6 @@ var chai = require('chai'); var assert = chai.assert; var jsonSchemaValidator = require('./'); -var projectConfigSchema = require('../../core/project_config/project_config_schema'); var sprintf = require('@optimizely/js-sdk-utils').sprintf; var testData = require('../../tests/test_data.js'); @@ -25,30 +24,20 @@ var ERROR_MESSAGES = require('../enums').ERROR_MESSAGES; describe('lib/utils/json_schema_validator', function() { describe('APIs', function() { describe('validate', function() { - it('should validate the given object against the specified schema', function() { - assert.isTrue(jsonSchemaValidator.validate({ type: 'number' }, 4)); - }); - it('should throw an error if the object is not valid', function() { assert.throws(function() { - jsonSchemaValidator.validate({ type: 'number' }, 'not a number'); - }, 'string value found, but a number is required'); - }); - - it('should throw an error if no schema is passed in', function() { - assert.throws(function() { - jsonSchemaValidator.validate(); - }, sprintf(ERROR_MESSAGES.JSON_SCHEMA_EXPECTED, 'JSON_SCHEMA_VALIDATOR')); + jsonSchemaValidator.validate({}); + }); }); it('should throw an error if no json object is passed in', function() { assert.throws(function() { - jsonSchemaValidator.validate({ type: 'number' }); + jsonSchemaValidator.validate(); }, sprintf(ERROR_MESSAGES.NO_JSON_PROVIDED, 'JSON_SCHEMA_VALIDATOR')); }); - it('should validate specified Optimizely datafile with the Optimizely datafile schema', function() { - assert.isTrue(jsonSchemaValidator.validate(projectConfigSchema, testData.getTestProjectConfig())); + it('should validate specified Optimizely datafile', function() { + assert.isTrue(jsonSchemaValidator.validate(testData.getTestProjectConfig())); }); }); });