flamesshield-sdk
Version:
Flames Shield Smart rate limiting for Firebase Cloud Functions to protect your services from excessive requests
87 lines (86 loc) • 3.82 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const configuration_retriever_1 = require("./configuration_retriever");
// Mock the firebase-admin imports
jest.mock('firebase-admin/app', () => ({
initializeApp: jest.fn().mockReturnValue({})
}));
jest.mock('firebase-admin/remote-config', () => {
const mockConfig = {
getBoolean: jest.fn(),
getNumber: jest.fn(),
getString: jest.fn()
};
const mockTemplate = {
load: jest.fn().mockResolvedValue(undefined),
evaluate: jest.fn().mockReturnValue(mockConfig)
};
return {
getRemoteConfig: jest.fn().mockReturnValue({
getServerTemplate: jest.fn().mockResolvedValue(mockTemplate)
}),
ServerConfig: jest.fn(),
ServerTemplate: jest.fn()
};
});
describe('ConfigurationRetriever', () => {
let configRetriever;
beforeEach(() => {
// Create a mock app
const mockApp = {
name: 'test-app',
options: {},
// Add other required App properties as needed
};
// Create a mock loader function
const mockLoader = jest.fn().mockResolvedValue({
load: jest.fn().mockResolvedValue(undefined),
evaluate: jest.fn().mockReturnValue({
getBoolean: jest.fn().mockImplementation((key) => {
if (key === 'TEST_BOOLEAN')
return true;
return false;
}),
getNumber: jest.fn().mockImplementation((key) => {
if (key === 'TEST_NUMBER')
return 42;
return 0;
}),
getString: jest.fn().mockImplementation((key) => {
if (key === 'TEST_STRING')
return 'test-value';
return '';
})
})
});
configRetriever = new configuration_retriever_1.ConfigurationRetriever(mockApp, mockLoader);
});
it('should load configuration from remote source', () => __awaiter(void 0, void 0, void 0, function* () {
yield configRetriever.load();
expect(configRetriever.configuration).toBeDefined();
}));
it('should get boolean values correctly', () => __awaiter(void 0, void 0, void 0, function* () {
yield configRetriever.load();
expect(configRetriever.getBoolean('TEST_BOOLEAN')).toBe(true);
expect(configRetriever.getBoolean('NON_EXISTENT')).toBe(false);
}));
it('should get number values correctly', () => __awaiter(void 0, void 0, void 0, function* () {
yield configRetriever.load();
expect(configRetriever.getNumber('TEST_NUMBER')).toBe(42);
expect(configRetriever.getNumber('NON_EXISTENT')).toBe(0);
}));
it('should get string values correctly', () => __awaiter(void 0, void 0, void 0, function* () {
yield configRetriever.load();
expect(configRetriever.getString('TEST_STRING')).toBe('test-value');
expect(configRetriever.getString('NON_EXISTENT')).toBe('');
}));
});