UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

37 lines (36 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const github_1 = require("../../src/collectors/github"); const logger_1 = require("../../src/utils/logger"); const rate_limiter_1 = require("../../src/utils/rate-limiter"); describe("Live API Integration", () => { let collector; beforeEach(() => { const logger = new logger_1.ConsoleLogger(); const rateLimiter = new rate_limiter_1.RateLimiter({ maxRequestsPerSecond: 1 }); // Very low limit for testing collector = new github_1.GitHubCollector({ token: process.env.GITHUB_TOKEN, repo: process.env.TEST_GITHUB_REPO, logger, rateLimiter, }); }); it("should handle rate limits gracefully", async () => { // Skip if no token provided if (!process.env.GITHUB_TOKEN) { console.warn("Skipping test: No GitHub token provided"); return; } // Make multiple concurrent requests to trigger rate limiting const promises = Array(5) .fill(null) .map(() => collector.testConnection()); const results = await Promise.allSettled(promises); const rejected = results.filter((r) => r.status === "rejected"); // At least one request should succeed const fulfilled = results.filter((r) => r.status === "fulfilled"); expect(fulfilled.length).toBeGreaterThan(0); // Some requests might be rate limited expect(rejected.length).toBeLessThanOrEqual(promises.length); }); });