Add Info Broker Removal service (FRE-5402)
New service for helping clients remove personal listings from data broker sites. Service features: - BrokerRegistry: Catalog of 20+ data brokers with removal methods - RemoveBrokersService: Core service for scanning, creating removal requests, submitting removals, and verifying completions - RemoveBrokersScheduler: Automated processing of pending removals and verification of completed removals - BrokerAlertPipeline: Alert integration for listing discoveries and removal status API endpoints (/removebrokers): - GET /brokers - List available data brokers - GET /status - Get removal request status and stats - POST /scan - Scan for personal listings across brokers - POST /request - Create a new removal request - GET /request/:id - Get specific removal request details - DELETE /request/:id - Cancel a removal request - POST /process - Trigger processing of pending removals - POST /verify/:id - Manually verify a removal completion DB models: InfoBroker, RemovalRequest, BrokerListing Types: BrokerStatus, RemovalStatus, RemovalMethod, and related interfaces
This commit is contained in:
36
services/removebrokers/test/brokerRegistry.test.ts
Normal file
36
services/removebrokers/test/brokerRegistry.test.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { BROKER_REGISTRY, getBrokerById, getActiveBrokers } from "../src/brokerRegistry";
|
||||
import { RemovalMethod } from "@shieldai/types";
|
||||
|
||||
describe("BrokerRegistry", () => {
|
||||
it("should have brokers registered", () => {
|
||||
expect(BROKER_REGISTRY.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it("should find broker by id", () => {
|
||||
const broker = getBrokerById("whitepages");
|
||||
expect(broker).toBeDefined();
|
||||
expect(broker?.name).toBe("Whitepages");
|
||||
expect(broker?.domain).toBe("whitepages.com");
|
||||
});
|
||||
|
||||
it("should return undefined for unknown broker", () => {
|
||||
const broker = getBrokerById("nonexistent");
|
||||
expect(broker).toBeUndefined();
|
||||
});
|
||||
|
||||
it("should return only active brokers", () => {
|
||||
const active = getActiveBrokers();
|
||||
expect(active.length).toBeGreaterThan(0);
|
||||
for (const broker of active) {
|
||||
expect(broker.isActive).toBe(true);
|
||||
}
|
||||
});
|
||||
|
||||
it("should have varied removal methods", () => {
|
||||
const methods = new Set(BROKER_REGISTRY.map((b) => b.removalMethod));
|
||||
expect(methods.has(RemovalMethod.AUTOMATED)).toBe(true);
|
||||
expect(methods.has(RemovalMethod.MANUAL_FORM)).toBe(true);
|
||||
expect(methods.has(RemovalMethod.EMAIL)).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user