@optimizely-opal/opal-tool-ocp-sdk 1.0.0-beta.1 → 1.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -3
- package/dist/auth/AuthUtils.d.ts +12 -5
- package/dist/auth/AuthUtils.d.ts.map +1 -1
- package/dist/auth/AuthUtils.js +80 -25
- package/dist/auth/AuthUtils.js.map +1 -1
- package/dist/auth/AuthUtils.test.js +161 -117
- package/dist/auth/AuthUtils.test.js.map +1 -1
- package/dist/function/GlobalToolFunction.d.ts +5 -3
- package/dist/function/GlobalToolFunction.d.ts.map +1 -1
- package/dist/function/GlobalToolFunction.js +32 -8
- package/dist/function/GlobalToolFunction.js.map +1 -1
- package/dist/function/GlobalToolFunction.test.js +73 -12
- package/dist/function/GlobalToolFunction.test.js.map +1 -1
- package/dist/function/ToolFunction.d.ts +11 -4
- package/dist/function/ToolFunction.d.ts.map +1 -1
- package/dist/function/ToolFunction.js +45 -9
- package/dist/function/ToolFunction.js.map +1 -1
- package/dist/function/ToolFunction.test.js +278 -11
- package/dist/function/ToolFunction.test.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/logging/ToolLogger.d.ts +42 -0
- package/dist/logging/ToolLogger.d.ts.map +1 -0
- package/dist/logging/ToolLogger.js +255 -0
- package/dist/logging/ToolLogger.js.map +1 -0
- package/dist/logging/ToolLogger.test.d.ts +2 -0
- package/dist/logging/ToolLogger.test.d.ts.map +1 -0
- package/dist/logging/ToolLogger.test.js +864 -0
- package/dist/logging/ToolLogger.test.js.map +1 -0
- package/dist/service/Service.d.ts +88 -2
- package/dist/service/Service.d.ts.map +1 -1
- package/dist/service/Service.js +228 -39
- package/dist/service/Service.js.map +1 -1
- package/dist/service/Service.test.js +558 -22
- package/dist/service/Service.test.js.map +1 -1
- package/dist/types/Models.d.ts +7 -1
- package/dist/types/Models.d.ts.map +1 -1
- package/dist/types/Models.js +5 -1
- package/dist/types/Models.js.map +1 -1
- package/dist/types/ToolError.d.ts +72 -0
- package/dist/types/ToolError.d.ts.map +1 -0
- package/dist/types/ToolError.js +107 -0
- package/dist/types/ToolError.js.map +1 -0
- package/dist/types/ToolError.test.d.ts +2 -0
- package/dist/types/ToolError.test.d.ts.map +1 -0
- package/dist/types/ToolError.test.js +185 -0
- package/dist/types/ToolError.test.js.map +1 -0
- package/dist/validation/ParameterValidator.d.ts +31 -0
- package/dist/validation/ParameterValidator.d.ts.map +1 -0
- package/dist/validation/ParameterValidator.js +129 -0
- package/dist/validation/ParameterValidator.js.map +1 -0
- package/dist/validation/ParameterValidator.test.d.ts +2 -0
- package/dist/validation/ParameterValidator.test.d.ts.map +1 -0
- package/dist/validation/ParameterValidator.test.js +323 -0
- package/dist/validation/ParameterValidator.test.js.map +1 -0
- package/package.json +3 -3
- package/src/auth/AuthUtils.test.ts +176 -157
- package/src/auth/AuthUtils.ts +96 -33
- package/src/function/GlobalToolFunction.test.ts +78 -14
- package/src/function/GlobalToolFunction.ts +46 -11
- package/src/function/ToolFunction.test.ts +298 -13
- package/src/function/ToolFunction.ts +61 -13
- package/src/index.ts +2 -1
- package/src/logging/ToolLogger.test.ts +1020 -0
- package/src/logging/ToolLogger.ts +292 -0
- package/src/service/Service.test.ts +712 -28
- package/src/service/Service.ts +288 -38
- package/src/types/Models.ts +8 -1
- package/src/types/ToolError.test.ts +222 -0
- package/src/types/ToolError.ts +125 -0
- package/src/validation/ParameterValidator.test.ts +371 -0
- package/src/validation/ParameterValidator.ts +150 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParameterValidator = void 0;
|
|
4
|
+
const Models_1 = require("../types/Models");
|
|
5
|
+
const ToolError_1 = require("../types/ToolError");
|
|
6
|
+
/**
|
|
7
|
+
* Parameter validator for tool inputs
|
|
8
|
+
*/
|
|
9
|
+
class ParameterValidator {
|
|
10
|
+
/**
|
|
11
|
+
* Validate parameters against their definitions
|
|
12
|
+
* Throws ToolError with status 400 if validation fails
|
|
13
|
+
*
|
|
14
|
+
* @param params The actual parameters received
|
|
15
|
+
* @param parameterDefinitions The expected parameter definitions
|
|
16
|
+
* @param _endpoint The endpoint being validated (reserved for future use)
|
|
17
|
+
* @throws {ToolError} When validation fails
|
|
18
|
+
*/
|
|
19
|
+
static validate(params, parameterDefinitions, _endpoint) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
// Validate each defined parameter
|
|
22
|
+
for (const paramDef of parameterDefinitions) {
|
|
23
|
+
const value = params ? params[paramDef.name] : undefined;
|
|
24
|
+
// Check if required parameter is missing
|
|
25
|
+
if (paramDef.required && (value === undefined || value === null)) {
|
|
26
|
+
errors.push({
|
|
27
|
+
field: paramDef.name,
|
|
28
|
+
message: `Required parameter '${paramDef.name}' is missing`
|
|
29
|
+
});
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
// Skip validation if parameter is optional and not provided
|
|
33
|
+
if (!paramDef.required && (value === undefined || value === null)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// Validate parameter type
|
|
37
|
+
const typeError = this.validateParameterType(paramDef.name, value, paramDef.type);
|
|
38
|
+
if (typeError) {
|
|
39
|
+
errors.push(typeError);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Throw ToolError if validation failed
|
|
43
|
+
if (errors.length > 0) {
|
|
44
|
+
throw new ToolError_1.ToolError('One or more validation errors occurred.', 400, "See 'errors' field for details.", errors);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate a single parameter's type
|
|
49
|
+
* @param paramName Parameter name
|
|
50
|
+
* @param value Parameter value
|
|
51
|
+
* @param expectedType Expected parameter type
|
|
52
|
+
* @returns Validation error if invalid, null if valid
|
|
53
|
+
*/
|
|
54
|
+
static validateParameterType(paramName, value, expectedType) {
|
|
55
|
+
const actualType = this.getActualType(value);
|
|
56
|
+
switch (expectedType) {
|
|
57
|
+
case Models_1.ParameterType.String:
|
|
58
|
+
if (typeof value !== 'string') {
|
|
59
|
+
return {
|
|
60
|
+
field: paramName,
|
|
61
|
+
message: `Parameter '${paramName}' must be a string, but received ${actualType}`
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case Models_1.ParameterType.Integer:
|
|
66
|
+
if (!Number.isInteger(value)) {
|
|
67
|
+
return {
|
|
68
|
+
field: paramName,
|
|
69
|
+
message: `Parameter '${paramName}' must be an integer, but received ${actualType}`
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
case Models_1.ParameterType.Number:
|
|
74
|
+
if (typeof value !== 'number' || isNaN(value)) {
|
|
75
|
+
return {
|
|
76
|
+
field: paramName,
|
|
77
|
+
message: `Parameter '${paramName}' must be a number, but received ${actualType}`
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case Models_1.ParameterType.Boolean:
|
|
82
|
+
if (typeof value !== 'boolean') {
|
|
83
|
+
return {
|
|
84
|
+
field: paramName,
|
|
85
|
+
message: `Parameter '${paramName}' must be a boolean, but received ${actualType}`
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
case Models_1.ParameterType.List:
|
|
90
|
+
if (!Array.isArray(value)) {
|
|
91
|
+
return {
|
|
92
|
+
field: paramName,
|
|
93
|
+
message: `Parameter '${paramName}' must be an array, but received ${actualType}`
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
break;
|
|
97
|
+
case Models_1.ParameterType.Dictionary:
|
|
98
|
+
if (typeof value !== 'object' || Array.isArray(value) || value === null) {
|
|
99
|
+
return {
|
|
100
|
+
field: paramName,
|
|
101
|
+
message: `Parameter '${paramName}' must be an object, but received ${actualType}`
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
default:
|
|
106
|
+
return {
|
|
107
|
+
field: paramName,
|
|
108
|
+
message: `Parameter '${paramName}' has unknown expected type: ${String(expectedType)}`
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get a human-readable description of the actual type
|
|
115
|
+
* @param value The value to check
|
|
116
|
+
* @returns String description of the type
|
|
117
|
+
*/
|
|
118
|
+
static getActualType(value) {
|
|
119
|
+
if (value === null)
|
|
120
|
+
return 'null';
|
|
121
|
+
if (value === undefined)
|
|
122
|
+
return 'undefined';
|
|
123
|
+
if (Array.isArray(value))
|
|
124
|
+
return 'array';
|
|
125
|
+
return typeof value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.ParameterValidator = ParameterValidator;
|
|
129
|
+
//# sourceMappingURL=ParameterValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParameterValidator.js","sourceRoot":"","sources":["../../src/validation/ParameterValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParameterValidator.test.d.ts","sourceRoot":"","sources":["../../src/validation/ParameterValidator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ParameterValidator_1 = require("./ParameterValidator");
|
|
4
|
+
const Models_1 = require("../types/Models");
|
|
5
|
+
const ToolError_1 = require("../types/ToolError");
|
|
6
|
+
describe('ParameterValidator', () => {
|
|
7
|
+
describe('validate', () => {
|
|
8
|
+
it('should pass validation for valid parameters', () => {
|
|
9
|
+
const paramDefs = [
|
|
10
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
|
|
11
|
+
new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'User age', false),
|
|
12
|
+
new Models_1.Parameter('score', Models_1.ParameterType.Number, 'User score', false),
|
|
13
|
+
new Models_1.Parameter('active', Models_1.ParameterType.Boolean, 'Is active', false),
|
|
14
|
+
new Models_1.Parameter('tags', Models_1.ParameterType.List, 'User tags', false),
|
|
15
|
+
new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'User config', false)
|
|
16
|
+
];
|
|
17
|
+
const validParams = {
|
|
18
|
+
name: 'John Doe',
|
|
19
|
+
age: 25,
|
|
20
|
+
score: 85.5,
|
|
21
|
+
active: true,
|
|
22
|
+
tags: ['admin', 'user'],
|
|
23
|
+
config: { theme: 'dark', language: 'en' }
|
|
24
|
+
};
|
|
25
|
+
expect(() => {
|
|
26
|
+
ParameterValidator_1.ParameterValidator.validate(validParams, paramDefs, '/test-endpoint');
|
|
27
|
+
}).not.toThrow();
|
|
28
|
+
});
|
|
29
|
+
it('should throw ToolError for missing required parameters', () => {
|
|
30
|
+
const paramDefs = [
|
|
31
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
|
|
32
|
+
new Models_1.Parameter('email', Models_1.ParameterType.String, 'User email', true)
|
|
33
|
+
];
|
|
34
|
+
const params = {
|
|
35
|
+
name: 'John Doe'
|
|
36
|
+
// email is missing
|
|
37
|
+
};
|
|
38
|
+
expect(() => {
|
|
39
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
40
|
+
}).toThrow(ToolError_1.ToolError);
|
|
41
|
+
try {
|
|
42
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
46
|
+
const toolError = error;
|
|
47
|
+
expect(toolError.status).toBe(400);
|
|
48
|
+
expect(toolError.message).toBe("[400] One or more validation errors occurred.: email (Required parameter 'email' is missing)");
|
|
49
|
+
expect(toolError.title).toBe('One or more validation errors occurred.');
|
|
50
|
+
expect(toolError.detail).toBe("See 'errors' field for details.");
|
|
51
|
+
expect(toolError.errors).toHaveLength(1);
|
|
52
|
+
expect(toolError.errors).toEqual([{
|
|
53
|
+
field: 'email',
|
|
54
|
+
message: "Required parameter 'email' is missing"
|
|
55
|
+
}]);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
it('should throw ToolError for wrong parameter types', () => {
|
|
59
|
+
const paramDefs = [
|
|
60
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
|
|
61
|
+
new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'User age', true),
|
|
62
|
+
new Models_1.Parameter('active', Models_1.ParameterType.Boolean, 'Is active', true),
|
|
63
|
+
new Models_1.Parameter('tags', Models_1.ParameterType.List, 'User tags', true),
|
|
64
|
+
new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'User config', true)
|
|
65
|
+
];
|
|
66
|
+
const invalidParams = {
|
|
67
|
+
name: 123, // should be string
|
|
68
|
+
age: '25', // should be integer
|
|
69
|
+
active: 'true', // should be boolean
|
|
70
|
+
tags: 'tag1,tag2', // should be array
|
|
71
|
+
config: 'invalid' // should be object
|
|
72
|
+
};
|
|
73
|
+
try {
|
|
74
|
+
ParameterValidator_1.ParameterValidator.validate(invalidParams, paramDefs, '/test-endpoint');
|
|
75
|
+
fail('Should have thrown ToolError');
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
79
|
+
const toolError = error;
|
|
80
|
+
expect(toolError.status).toBe(400);
|
|
81
|
+
expect(toolError.errors).toHaveLength(5);
|
|
82
|
+
expect(toolError.errors[0].field).toBe('name');
|
|
83
|
+
expect(toolError.errors[0].message).toContain('must be a string');
|
|
84
|
+
expect(toolError.errors[1].field).toBe('age');
|
|
85
|
+
expect(toolError.errors[1].message).toContain('must be an integer');
|
|
86
|
+
expect(toolError.errors[2].field).toBe('active');
|
|
87
|
+
expect(toolError.errors[2].message).toContain('must be a boolean');
|
|
88
|
+
expect(toolError.errors[3].field).toBe('tags');
|
|
89
|
+
expect(toolError.errors[3].message).toContain('must be an array');
|
|
90
|
+
expect(toolError.errors[4].field).toBe('config');
|
|
91
|
+
expect(toolError.errors[4].message).toContain('must be an object');
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
it('should throw ToolError when params is null with required parameters', () => {
|
|
95
|
+
const paramDefs = [
|
|
96
|
+
new Models_1.Parameter('required', Models_1.ParameterType.String, 'Required param', true),
|
|
97
|
+
new Models_1.Parameter('optional', Models_1.ParameterType.String, 'Optional param', false)
|
|
98
|
+
];
|
|
99
|
+
try {
|
|
100
|
+
ParameterValidator_1.ParameterValidator.validate(null, paramDefs, '/test-endpoint');
|
|
101
|
+
fail('Should have thrown ToolError');
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
105
|
+
const toolError = error;
|
|
106
|
+
expect(toolError.errors).toHaveLength(1);
|
|
107
|
+
expect(toolError.errors[0].field).toBe('required');
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
it('should throw ToolError when params is undefined with required parameters', () => {
|
|
111
|
+
const paramDefs = [
|
|
112
|
+
new Models_1.Parameter('required', Models_1.ParameterType.String, 'Required param', true),
|
|
113
|
+
new Models_1.Parameter('optional', Models_1.ParameterType.String, 'Optional param', false)
|
|
114
|
+
];
|
|
115
|
+
try {
|
|
116
|
+
ParameterValidator_1.ParameterValidator.validate(undefined, paramDefs, '/test-endpoint');
|
|
117
|
+
fail('Should have thrown ToolError');
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
121
|
+
const toolError = error;
|
|
122
|
+
expect(toolError.errors).toHaveLength(1);
|
|
123
|
+
expect(toolError.errors[0].field).toBe('required');
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
it('should allow optional parameters to be missing', () => {
|
|
127
|
+
const paramDefs = [
|
|
128
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
|
|
129
|
+
new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'User age', false)
|
|
130
|
+
];
|
|
131
|
+
const params = {
|
|
132
|
+
name: 'John Doe'
|
|
133
|
+
// age is optional and missing
|
|
134
|
+
};
|
|
135
|
+
expect(() => {
|
|
136
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
137
|
+
}).not.toThrow();
|
|
138
|
+
});
|
|
139
|
+
it('should distinguish between integer and number types', () => {
|
|
140
|
+
const paramDefs = [
|
|
141
|
+
new Models_1.Parameter('count', Models_1.ParameterType.Integer, 'Item count', true),
|
|
142
|
+
new Models_1.Parameter('score', Models_1.ParameterType.Number, 'Score value', true)
|
|
143
|
+
];
|
|
144
|
+
const params1 = {
|
|
145
|
+
count: 25.5, // should be integer, not float
|
|
146
|
+
score: 85.5 // number is fine
|
|
147
|
+
};
|
|
148
|
+
try {
|
|
149
|
+
ParameterValidator_1.ParameterValidator.validate(params1, paramDefs, '/test-endpoint');
|
|
150
|
+
fail('Should have thrown ToolError');
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
154
|
+
const toolError = error;
|
|
155
|
+
expect(toolError.errors).toHaveLength(1);
|
|
156
|
+
expect(toolError.errors[0].field).toBe('count');
|
|
157
|
+
expect(toolError.errors[0].message).toContain('must be an integer');
|
|
158
|
+
}
|
|
159
|
+
const params2 = {
|
|
160
|
+
count: 25, // integer is fine
|
|
161
|
+
score: 85.5 // number is fine
|
|
162
|
+
};
|
|
163
|
+
expect(() => {
|
|
164
|
+
ParameterValidator_1.ParameterValidator.validate(params2, paramDefs, '/test-endpoint');
|
|
165
|
+
}).not.toThrow();
|
|
166
|
+
});
|
|
167
|
+
it('should handle array vs object distinction', () => {
|
|
168
|
+
const paramDefs = [
|
|
169
|
+
new Models_1.Parameter('tags', Models_1.ParameterType.List, 'Tags', true),
|
|
170
|
+
new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'Config', true)
|
|
171
|
+
];
|
|
172
|
+
const params = {
|
|
173
|
+
tags: { key: 'value' }, // should be array, not object
|
|
174
|
+
config: ['item1', 'item2'] // should be object, not array
|
|
175
|
+
};
|
|
176
|
+
try {
|
|
177
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
178
|
+
fail('Should have thrown ToolError');
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
182
|
+
const toolError = error;
|
|
183
|
+
expect(toolError.errors).toHaveLength(2);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
it('should handle null values for optional parameters', () => {
|
|
187
|
+
const paramDefs = [
|
|
188
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'User name', true),
|
|
189
|
+
new Models_1.Parameter('nickname', Models_1.ParameterType.String, 'Nickname', false)
|
|
190
|
+
];
|
|
191
|
+
const params = {
|
|
192
|
+
name: 'John Doe',
|
|
193
|
+
nickname: null // optional param can be null
|
|
194
|
+
};
|
|
195
|
+
expect(() => {
|
|
196
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
197
|
+
}).not.toThrow();
|
|
198
|
+
});
|
|
199
|
+
it('should handle edge cases for number validation', () => {
|
|
200
|
+
const paramDefs = [
|
|
201
|
+
new Models_1.Parameter('value', Models_1.ParameterType.Number, 'Number value', true)
|
|
202
|
+
];
|
|
203
|
+
// NaN should fail
|
|
204
|
+
try {
|
|
205
|
+
ParameterValidator_1.ParameterValidator.validate({ value: NaN }, paramDefs, '/test-endpoint');
|
|
206
|
+
fail('Should have thrown ToolError for NaN');
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
210
|
+
}
|
|
211
|
+
// Infinity should pass (it's a number)
|
|
212
|
+
expect(() => {
|
|
213
|
+
ParameterValidator_1.ParameterValidator.validate({ value: Infinity }, paramDefs, '/test-endpoint');
|
|
214
|
+
}).not.toThrow();
|
|
215
|
+
// Negative numbers should pass
|
|
216
|
+
expect(() => {
|
|
217
|
+
ParameterValidator_1.ParameterValidator.validate({ value: -42.5 }, paramDefs, '/test-endpoint');
|
|
218
|
+
}).not.toThrow();
|
|
219
|
+
});
|
|
220
|
+
it('should handle edge cases for integer validation', () => {
|
|
221
|
+
const paramDefs = [
|
|
222
|
+
new Models_1.Parameter('count', Models_1.ParameterType.Integer, 'Count', true)
|
|
223
|
+
];
|
|
224
|
+
// Zero should pass
|
|
225
|
+
expect(() => {
|
|
226
|
+
ParameterValidator_1.ParameterValidator.validate({ count: 0 }, paramDefs, '/test-endpoint');
|
|
227
|
+
}).not.toThrow();
|
|
228
|
+
// Negative integer should pass
|
|
229
|
+
expect(() => {
|
|
230
|
+
ParameterValidator_1.ParameterValidator.validate({ count: -10 }, paramDefs, '/test-endpoint');
|
|
231
|
+
}).not.toThrow();
|
|
232
|
+
});
|
|
233
|
+
it('should handle empty arrays and objects', () => {
|
|
234
|
+
const paramDefs = [
|
|
235
|
+
new Models_1.Parameter('tags', Models_1.ParameterType.List, 'Tags', true),
|
|
236
|
+
new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'Config', true)
|
|
237
|
+
];
|
|
238
|
+
const params = {
|
|
239
|
+
tags: [],
|
|
240
|
+
config: {}
|
|
241
|
+
};
|
|
242
|
+
expect(() => {
|
|
243
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
244
|
+
}).not.toThrow();
|
|
245
|
+
});
|
|
246
|
+
it('should handle special string values', () => {
|
|
247
|
+
const paramDefs = [
|
|
248
|
+
new Models_1.Parameter('value', Models_1.ParameterType.String, 'String value', true)
|
|
249
|
+
];
|
|
250
|
+
// Empty string should pass
|
|
251
|
+
expect(() => {
|
|
252
|
+
ParameterValidator_1.ParameterValidator.validate({ value: '' }, paramDefs, '/test-endpoint');
|
|
253
|
+
}).not.toThrow();
|
|
254
|
+
// String with only whitespace should pass
|
|
255
|
+
expect(() => {
|
|
256
|
+
ParameterValidator_1.ParameterValidator.validate({ value: ' ' }, paramDefs, '/test-endpoint');
|
|
257
|
+
}).not.toThrow();
|
|
258
|
+
});
|
|
259
|
+
it('should collect multiple validation errors', () => {
|
|
260
|
+
const paramDefs = [
|
|
261
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'Name', true),
|
|
262
|
+
new Models_1.Parameter('age', Models_1.ParameterType.Integer, 'Age', true),
|
|
263
|
+
new Models_1.Parameter('email', Models_1.ParameterType.String, 'Email', true)
|
|
264
|
+
];
|
|
265
|
+
const params = {
|
|
266
|
+
// name is missing
|
|
267
|
+
age: 'invalid' // wrong type
|
|
268
|
+
// email is missing
|
|
269
|
+
};
|
|
270
|
+
try {
|
|
271
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
272
|
+
fail('Should have thrown ToolError');
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
expect(error).toBeInstanceOf(ToolError_1.ToolError);
|
|
276
|
+
const toolError = error;
|
|
277
|
+
expect(toolError.errors).toHaveLength(3);
|
|
278
|
+
expect(toolError.errors.some((e) => e.field === 'name')).toBe(true);
|
|
279
|
+
expect(toolError.errors.some((e) => e.field === 'age')).toBe(true);
|
|
280
|
+
expect(toolError.errors.some((e) => e.field === 'email')).toBe(true);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
it('should handle tools with no parameter definitions', () => {
|
|
284
|
+
expect(() => {
|
|
285
|
+
ParameterValidator_1.ParameterValidator.validate({ anyParam: 'value' }, [], '/test-endpoint');
|
|
286
|
+
}).not.toThrow();
|
|
287
|
+
});
|
|
288
|
+
it('should handle extra parameters not in definition', () => {
|
|
289
|
+
const paramDefs = [
|
|
290
|
+
new Models_1.Parameter('name', Models_1.ParameterType.String, 'Name', true)
|
|
291
|
+
];
|
|
292
|
+
const params = {
|
|
293
|
+
name: 'John',
|
|
294
|
+
extraParam: 'ignored', // not in definition
|
|
295
|
+
anotherExtra: 123
|
|
296
|
+
};
|
|
297
|
+
// Extra parameters should be ignored
|
|
298
|
+
expect(() => {
|
|
299
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
300
|
+
}).not.toThrow();
|
|
301
|
+
});
|
|
302
|
+
it('should handle nested objects and arrays', () => {
|
|
303
|
+
const paramDefs = [
|
|
304
|
+
new Models_1.Parameter('config', Models_1.ParameterType.Dictionary, 'Config', true),
|
|
305
|
+
new Models_1.Parameter('items', Models_1.ParameterType.List, 'Items', true)
|
|
306
|
+
];
|
|
307
|
+
const params = {
|
|
308
|
+
config: {
|
|
309
|
+
nested: {
|
|
310
|
+
deeply: {
|
|
311
|
+
nested: 'value'
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
items: [1, 2, [3, 4, [5, 6]]]
|
|
316
|
+
};
|
|
317
|
+
expect(() => {
|
|
318
|
+
ParameterValidator_1.ParameterValidator.validate(params, paramDefs, '/test-endpoint');
|
|
319
|
+
}).not.toThrow();
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
//# sourceMappingURL=ParameterValidator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParameterValidator.test.js","sourceRoot":"","sources":["../../src/validation/ParameterValidator.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optimizely-opal/opal-tool-ocp-sdk",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.10",
|
|
4
4
|
"description": "OCP SDK for Opal tool",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"validate-deps": "node scripts/validate-deps.js",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@typescript-eslint/eslint-plugin": "^8.27.0",
|
|
38
38
|
"@typescript-eslint/eslint-plugin-tslint": "^7.0.2",
|
|
39
39
|
"@typescript-eslint/parser": "^8.27.0",
|
|
40
|
+
"@zaiusinc/app-sdk": "^2.2.4",
|
|
40
41
|
"@zaiusinc/eslint-config-presets": "^2.0.0",
|
|
41
42
|
"copyfiles": "^2.4.1",
|
|
42
43
|
"cross-env": "^7.0.3",
|
|
@@ -51,8 +52,7 @@
|
|
|
51
52
|
"rimraf": "^6.0.1",
|
|
52
53
|
"ts-jest": "^29.3.2",
|
|
53
54
|
"tslint": "^6.1.3",
|
|
54
|
-
"typescript": "^5.8.2"
|
|
55
|
-
"@zaiusinc/app-sdk": "^2.2.4"
|
|
55
|
+
"typescript": "^5.8.2"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"jose": "^6.1.0",
|