import { FeatureMap, Flags, flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; import { describe, it, expect } from 'vitest'; describe('flagsAllowedInFeatures()', () => { function checkFeatures(featureMap: FeatureMap, flags: Flags[], output: boolean) { expect(flagsAllowedInFeatures(featureMap, flags)).toEqual(output); } it('should check required correctly', () => { checkFeatures( { requires: [], disallowed: [], }, [], true, ); checkFeatures( { requires: [flags.CORS_ALLOWED], disallowed: [], }, [flags.CORS_ALLOWED], true, ); checkFeatures( { requires: [flags.CORS_ALLOWED], disallowed: [], }, [], false, ); checkFeatures( { requires: [flags.CORS_ALLOWED, flags.IP_LOCKED], disallowed: [], }, [flags.CORS_ALLOWED, flags.IP_LOCKED], true, ); checkFeatures( { requires: [flags.IP_LOCKED], disallowed: [], }, [flags.CORS_ALLOWED], false, ); checkFeatures( { requires: [flags.IP_LOCKED], disallowed: [], }, [], false, ); }); it('should check disallowed correctly', () => { checkFeatures( { requires: [], disallowed: [], }, [], true, ); checkFeatures( { requires: [], disallowed: [flags.CORS_ALLOWED], }, [], true, ); checkFeatures( { requires: [], disallowed: [flags.CORS_ALLOWED], }, [flags.CORS_ALLOWED], false, ); checkFeatures( { requires: [], disallowed: [flags.CORS_ALLOWED], }, [flags.IP_LOCKED], true, ); checkFeatures( { requires: [], disallowed: [flags.CORS_ALLOWED, flags.IP_LOCKED], }, [flags.CORS_ALLOWED], false, ); }); it('should pass mixed tests', () => { checkFeatures( { requires: [flags.CORS_ALLOWED], disallowed: [flags.IP_LOCKED], }, [], false, ); checkFeatures( { requires: [flags.CORS_ALLOWED], disallowed: [flags.IP_LOCKED], }, [flags.CORS_ALLOWED], true, ); checkFeatures( { requires: [flags.CORS_ALLOWED], disallowed: [flags.IP_LOCKED], }, [flags.IP_LOCKED], false, ); checkFeatures( { requires: [flags.CORS_ALLOWED], disallowed: [flags.IP_LOCKED], }, [flags.IP_LOCKED, flags.CORS_ALLOWED], false, ); }); });