Duplicate Code Opportunity
Summary
- Pattern: Repeated 28-line
mockedExeca mock sequence for the iptables chain creation flow (getNetworkBridgeName + permission check + chain existence check + subsequent calls)
- Locations:
src/host-iptables-setup.test.ts at lines 31-59, 109-123, 164-178, 205-232, 254-281, 378-392, 444-455 (and more)
- Impact: ~6 occurrences of a 15-28 line setup sequence; security-critical path (iptables firewall rules)
Evidence
The following nearly-identical mock setup block appears in 6+ test cases:
// First occurrence (lines 31-59):
mockedExeca
// Mock getNetworkBridgeName
.mockResolvedValueOnce(execaResult({
stdout: 'fw-bridge',
stderr: '',
exitCode: 0,
}))
// Mock iptables -L DOCKER-USER (permission check)
.mockResolvedValueOnce(execaResult({
stdout: '',
stderr: '',
exitCode: 0,
}))
// Mock chain existence check (doesn't exist)
.mockResolvedValueOnce(execaResult({
exitCode: 1,
}));
// Mock all subsequent iptables calls
mockedExeca.mockResolvedValue(execaResult({
stdout: 'Chain DOCKER-USER\nChain FW_WRAPPER',
stderr: '',
exitCode: 0,
}));
jscpd found 6 clones of 15-28 lines each within this single file, including:
lines 205-232 <-> lines 31-191 (28 lines)
lines 254-281 <-> lines 31-191 (28 lines)
lines 109-123 <-> lines 31-45 (15 lines)
lines 164-178 <-> lines 31-45 (15 lines)
lines 378-392 <-> lines 31-45 (15 lines)
Suggested Refactoring
Extract a setupDefaultIptablesMocks(mockedExeca, options?) helper in the test file (or a shared src/test-helpers/iptables-mock-helpers.test-utils.ts) that:
- Accepts optional overrides for chain existence (
chainExists: boolean) and bridge name
- Configures the standard 3-step mock sequence plus default catch-all
- Returns
mockedExeca for chaining
function setupDefaultIptablesMocks(
mocked: jest.MockedFunction<typeof execa>,
opts: { chainExists?: boolean; bridgeName?: string } = {}
) {
mocked
.mockResolvedValueOnce(execaResult({ stdout: opts.bridgeName ?? 'fw-bridge', exitCode: 0 }))
.mockResolvedValueOnce(execaResult({ stdout: '', exitCode: 0 }))
.mockResolvedValueOnce(execaResult({ exitCode: opts.chainExists ? 0 : 1 }));
mocked.mockResolvedValue(execaResult({ stdout: 'Chain FW_WRAPPER', exitCode: 0 }));
}
Affected Files
src/host-iptables-setup.test.ts — 6+ duplicate sequences scattered throughout the file
Effort Estimate
Low
Detected by Duplicate Code Detector workflow. Run date: 2026-05-14
Generated by Duplicate Code Detector · ● 10.7M · ◷
Duplicate Code Opportunity
Summary
mockedExecamock sequence for the iptables chain creation flow (getNetworkBridgeName+ permission check + chain existence check + subsequent calls)src/host-iptables-setup.test.tsat lines 31-59, 109-123, 164-178, 205-232, 254-281, 378-392, 444-455 (and more)Evidence
The following nearly-identical mock setup block appears in 6+ test cases:
jscpdfound 6 clones of 15-28 lines each within this single file, including:lines 205-232 <-> lines 31-191(28 lines)lines 254-281 <-> lines 31-191(28 lines)lines 109-123 <-> lines 31-45(15 lines)lines 164-178 <-> lines 31-45(15 lines)lines 378-392 <-> lines 31-45(15 lines)Suggested Refactoring
Extract a
setupDefaultIptablesMocks(mockedExeca, options?)helper in the test file (or a sharedsrc/test-helpers/iptables-mock-helpers.test-utils.ts) that:chainExists: boolean) and bridge namemockedExecafor chainingAffected Files
src/host-iptables-setup.test.ts— 6+ duplicate sequences scattered throughout the fileEffort Estimate
Low
Detected by Duplicate Code Detector workflow. Run date: 2026-05-14