Home Reference Source Test Repository

unit/util/validator.js

import chai from 'chai';
import Validator from '../../../src/util/validator.js';
import { IDENTITY_V2_USER_RESPONSE, ACCESS_TOKEN_RESPONSE, DEVICE_CODE_RESPONSE } from '../../test-data';


const should = chai.should();


/** @test {Validator} */
describe('Validator', () => {
    let responseClone;


    /** @test {Validator.validateCollectionDoc} */
    describe('validateCollectionDoc', () => {
        beforeEach(() => {
            responseClone = JSON.parse(JSON.stringify(IDENTITY_V2_USER_RESPONSE));
        });

        it('should not throw an error on valid input', () => {
            should.not.exist(Validator.validateCollectionDoc(responseClone));
        });

        it('should throw an error on invalid input', () => {
            delete responseClone.version;
            should.Throw(Validator.validateCollectionDoc.bind(this, responseClone));
        });
    });


    /** @test {Validator.validateAccessToken} */
    describe('validateAccessToken', () => {
        beforeEach(() => {
            responseClone = JSON.parse(JSON.stringify(ACCESS_TOKEN_RESPONSE));
        });

        it('should not throw an error on valid input', () => {
            should.not.exist(Validator.validateAccessToken(responseClone));
        });

        it('should throw an error on invalid input', () => {
            delete responseClone.token_type;
            should.Throw(Validator.validateAccessToken.bind(this, responseClone));
        });
    });


    /** @test {Validator.validateDeviceCode} */
    describe('validateDeviceCode', () => {
        beforeEach(() => {
            responseClone = JSON.parse(JSON.stringify(DEVICE_CODE_RESPONSE));
        });

        it('should not throw an error on valid input', () => {
            should.not.exist(Validator.validateDeviceCode(responseClone));
        });

        it('should throw an error on invalid input', () => {
            delete responseClone.verification_uri;
            should.Throw(Validator.validateDeviceCode.bind(this, responseClone));
        });
    });
});