randomayzer/tests/provider-safety.test.ts

38 lines
1.4 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import { ProviderFactory } from '../src/providers/factory';
import { VkMockProvider } from '../src/providers/vk/vk-mock-provider';
import { VkProvider } from '../src/providers/vk/vk-provider';
import { DependencyUnavailableError } from '../src/core/errors/http-errors';
describe('Provider Safety (No unconfigured mocks in Production)', () => {
const originalEnv = { ...process.env };
beforeEach(() => {
delete process.env.USE_VK_MOCK;
delete process.env.VK_SERVICE_TOKEN;
});
afterEach(() => {
process.env = { ...originalEnv };
});
it('should return VkMockProvider when USE_VK_MOCK=true is explicitly set', () => {
process.env.USE_VK_MOCK = 'true';
const provider = ProviderFactory.getVkProvider();
expect(provider).toBeInstanceOf(VkMockProvider);
});
it('should return VkProvider when VK_SERVICE_TOKEN is present', () => {
process.env.VK_SERVICE_TOKEN = 'mock_service_token_123';
const provider = ProviderFactory.getVkProvider();
expect(provider).toBeInstanceOf(VkProvider);
});
it('should throw DependencyUnavailableError in production when VK credentials and USE_VK_MOCK are missing', () => {
process.env.NODE_ENV = 'production';
delete process.env.USE_VK_MOCK;
delete process.env.VK_SERVICE_TOKEN;
expect(() => ProviderFactory.getVkProvider()).toThrow(DependencyUnavailableError);
});
});