Feature: Security scan hooks configuration
  As a QA developer
  I want to verify that Bandit and Semgrep hooks are properly declared
  So that security scanning runs automatically on every commit

  Scenario: Bandit hook is declared in pre-commit config
    Given the pre-commit config file exists
    When I parse the pre-commit configuration
    Then a hook with id "bandit" should be declared

  Scenario: Bandit hook targets src directory only
    Given the pre-commit config file exists
    When I parse the pre-commit configuration
    Then the "bandit" hook should have a files pattern matching src

  Scenario: Bandit hook uses pyproject.toml config
    Given the pre-commit config file exists
    When I parse the pre-commit configuration
    Then the "bandit" hook args should reference pyproject.toml

  Scenario: Semgrep hook is declared in pre-commit config
    Given the pre-commit config file exists
    When I parse the pre-commit configuration
    Then a hook with id "semgrep-eval-exec" should be declared

  Scenario: Semgrep hook references semgrep config file
    Given the pre-commit config file exists
    When I parse the pre-commit configuration
    Then the "semgrep-eval-exec" hook entry should reference .semgrep.yml

  Scenario: Semgrep hook targets src directory
    Given the pre-commit config file exists
    When I parse the pre-commit configuration
    Then the "semgrep-eval-exec" hook should have a files pattern matching src

  Scenario: Semgrep is listed as a project dev dependency
    Given the pyproject.toml exists
    When I parse the dev dependencies from pyproject.toml
    Then "semgrep" should be in the dev dependencies

  Scenario: Bandit is listed as a project dev dependency
    Given the pyproject.toml exists
    When I parse the dev dependencies from pyproject.toml
    Then "bandit" should be in the dev dependencies

  Scenario: Nox security_scan session exists in noxfile
    Given the noxfile.py exists
    When I parse the nox session names from noxfile.py
    Then "security_scan" should be a registered nox session

  Scenario: Nox security_scan session runs bandit
    Given the noxfile.py exists
    When I read the security_scan session source from noxfile.py
    Then the session source should contain a bandit invocation

  Scenario: Nox security_scan session runs semgrep
    Given the noxfile.py exists
    When I read the security_scan session source from noxfile.py
    Then the session source should contain a semgrep invocation

  Scenario: Nox security_scan session runs vulture
    Given the noxfile.py exists
    When I read the security_scan session source from noxfile.py
    Then the session source should contain a vulture invocation

  Scenario: Semgrep config file exists with custom rules
    Given the semgrep config file exists
    When I parse the semgrep configuration
    Then the semgrep config should contain at least 3 rules
