diff --git a/src/lib/utils/twilio-validator.js b/src/lib/utils/twilio-validator.js index 429f04f..306fd2d 100644 --- a/src/lib/utils/twilio-validator.js +++ b/src/lib/utils/twilio-validator.js @@ -12,6 +12,10 @@ * @returns {{valid: boolean, errors: string[]}} */ export function validateTwilioCredentials(credentials) { + if (!credentials || typeof credentials !== 'object') { + return { valid: false, errors: ['Credentials must be a non-null object'] }; + } + const errors = []; // Validate Account SID diff --git a/tests/twilio-validator.test.js b/tests/twilio-validator.test.js index 27dbf92..d6c6af1 100644 --- a/tests/twilio-validator.test.js +++ b/tests/twilio-validator.test.js @@ -67,6 +67,24 @@ describe('Twilio Validator', () => { assert.strictEqual(result.valid, true); assert.strictEqual(result.errors.length, 0); }); + + it('should return validation failure for null input', () => { + const result = validateTwilioCredentials(null); + assert.strictEqual(result.valid, false); + assert.ok(result.errors.length > 0); + }); + + it('should return validation failure for undefined input', () => { + const result = validateTwilioCredentials(undefined); + assert.strictEqual(result.valid, false); + assert.ok(result.errors.length > 0); + }); + + it('should return validation failure for non-object input', () => { + const result = validateTwilioCredentials('not-an-object'); + assert.strictEqual(result.valid, false); + assert.ok(result.errors.length > 0); + }); }); describe('parseTwilioError', () => {