test : add unit tests for _unshare_net_supported in parser_sandbox

Aperta
#2,444 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
testing

Direzione di ricerca

Read backend/secuscan/parser_sandbox.py to inspect _unshare_net_supported and its cache globals, then run the pytest command given in the issue. Add testing/backend/unit/test_parser_sandbox_unshare_supported.py with the four mocked platform and probe cases, resetting the cache around each test. Done means all four paths pass in isolation; the issue says tmdeveloper007 is handling it, so confirm availability before starting.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary of What Needs to be Done:
Add unit tests for the _unshare_net_supported function in backend/secuscan/parser_sandbox.py. This function probes whether the unshare --user --net system call works on the host, and caches the result to avoid repeated probes.

The function has several distinct code paths that should each be tested:

  1. Non-Linux platform returns False immediately
  2. unshare binary not found returns False
  3. unshare binary found but probe fails (non-zero exit) returns False
  4. unshare binary found and probe succeeds (exit 0) returns True

Changes that Need to be Made:
Create testing/backend/unit/test_parser_sandbox_unshare_supported.py:

  • Test non-Linux path by patching platform.system() to return "Darwin"
  • Test unshare binary not found by patching shutil.which to return None
  • Test probe failure by patching subprocess.run to return a non-zero returncode
  • Test probe success by patching subprocess.run to return zero returncode
  • The function uses module-level caching (_unshare_capability_checked, _unshare_available): each test case needs to reset these globals before and after to ensure test isolation
  • Import the real production function directly: from backend.secuscan.parser_sandbox import _unshare_net_supported
  • Run with python3 -m pytest testing/backend/unit/test_parser_sandbox_unshare_supported.py -v --noconftest

Impact that it would Provide:

  • Tests a code path (capability detection) that is currently completely untested
  • Prevents regressions when refactoring the unshare support detection logic
  • Ensures the function behaves correctly on different platforms and when the unshare binary is unavailable
  • Uses standard unittest.mock patching, no heavy framework dependencies

Note: This task is being handled by tmdeveloper007 — please assign to that account when picking it up.

Lingua principale
Python
Stelle
36
Fork
234
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di utksh1/SecuScan

Tutte le issue di utksh1/SecuScan

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.