45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
|
import { tap, expect } from '@push.rocks/tapbundle';
|
||
|
import { SmartProxy } from '../ts/smartproxy/classes.smartproxy.js';
|
||
|
|
||
|
tap.test('performRenewals only renews domains below threshold', async () => {
|
||
|
// Set up SmartProxy instance without real servers
|
||
|
const proxy = new SmartProxy({
|
||
|
fromPort: 0,
|
||
|
toPort: 0,
|
||
|
domainConfigs: [],
|
||
|
sniEnabled: false,
|
||
|
defaultAllowedIPs: [],
|
||
|
globalPortRanges: []
|
||
|
});
|
||
|
// Stub port80Handler status and renewal
|
||
|
const statuses = new Map<string, any>();
|
||
|
const now = new Date();
|
||
|
statuses.set('expiring.com', {
|
||
|
certObtained: true,
|
||
|
expiryDate: new Date(now.getTime() + 2 * 24 * 60 * 60 * 1000),
|
||
|
obtainingInProgress: false
|
||
|
});
|
||
|
statuses.set('ok.com', {
|
||
|
certObtained: true,
|
||
|
expiryDate: new Date(now.getTime() + 100 * 24 * 60 * 60 * 1000),
|
||
|
obtainingInProgress: false
|
||
|
});
|
||
|
const renewed: string[] = [];
|
||
|
// Inject fake handler
|
||
|
(proxy as any).port80Handler = {
|
||
|
getDomainCertificateStatus: () => statuses,
|
||
|
renewCertificate: async (domain: string) => { renewed.push(domain); }
|
||
|
};
|
||
|
// Configure threshold
|
||
|
proxy.settings.port80HandlerConfig.enabled = true;
|
||
|
proxy.settings.port80HandlerConfig.autoRenew = true;
|
||
|
proxy.settings.port80HandlerConfig.renewThresholdDays = 10;
|
||
|
|
||
|
// Execute renewals
|
||
|
await (proxy as any).performRenewals();
|
||
|
|
||
|
// Only the expiring.com domain should be renewed
|
||
|
expect(renewed).toEqual(['expiring.com']);
|
||
|
});
|
||
|
|
||
|
export default tap.start();
|