BLT icon indicating copy to clipboard operation
BLT copied to clipboard

An error message is added if user enters wrong credentials while login and the UI of /accounts/confirm-email page is fixed

Open swaparup36 opened this issue 9 months ago • 1 comments

It resolves #4056

The error message for the wrong credentials while login - Screenshot 2025-03-27 200429

The UI of /accounts/confirm-email/ page - Screenshot 2025-03-27 221557

Summary by CodeRabbit

  • New Features
    • Enhanced the login experience with clear, instant error notifications for invalid inputs.
    • Added a new verification page that guides users to check their email and offers easy access to login and sign-up options.
  • Refactor
    • Improved the header structure for more flexible customization, supporting a consistent and adaptable interface.

swaparup36 avatar Mar 27 '25 17:03 swaparup36

Walkthrough

Login now shows non-field form errors and Django messages and replaces "Username" with translatable "Email" (input still bound to form.login); verification pages converted to two‑panel layouts with resend/login/signup CTAs and spam reminders; ACCOUNT_USERNAME_REQUIRED removed and ACCOUNT_AUTHENTICATION_METHOD = "email" added; tests updated to use email-based login.

Changes

Cohort / File(s) Change Summary
Login template
website/templates/account/login.html
Replaced "Username" label with translatable "Email" (type="email" input still bound to form.login/form.login.value); added rendering for form.non_field_errors and Django messages with tag-based alert styling; minor comment/text fixes.
Verification sent page
website/templates/account/verification_sent.html
Added {% load i18n %} and header/include_header blocks; converted to a responsive two-panel layout (branding/info left, verification content right); updated heading to "Check Your Email"; moved resend action and added two-column CTAs for Login and Sign Up.
Email confirmation page
website/templates/account/email_confirm.html
Added "Already Verified" indicator, spam-folder reminder and "Helpful Tips" blocks for verified and invalid/expired flows; changed action label to "Resend Verification Email"; minor styling/markup refinements.
Auth settings
blt/settings.py
Removed ACCOUNT_USERNAME_REQUIRED = True; added ACCOUNT_AUTHENTICATION_METHOD = "email" near existing email/verification settings.
API tests
website/tests/test_api.py
Updated login payloads (3 occurrences) to use email instead of username.
Selenium / UI tests
website/tests/test_main.py
Switched UI login flows to use email; added _ensure_bugbug_user_verified helper and invoked it; adjusted assertions and DOM selectors to match updated flows.
Unit & integration tests (many)
website/tests/test_feed.py, website/tests/test_adventure.py, website/tests/test_bidding.py, website/tests/test_bitcoin_slack_notification.py, website/tests/test_bugs_list.py, website/tests/test_core.py, website/tests/test_issues.py, website/tests/test_organization.py, website/tests/test_project_compact_view.py, website/tests/test_user_profile.py
Tests updated to create users with email and authenticate via login(email=..., password=...) (replacing username=...); no other assertion or control-flow changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Pay special attention to:
    • website/templates/account/login.html: confirm name="login" / form.login remain compatible with the authentication backend (allauth) and that message rendering is properly escaped and accessible.
    • blt/settings.py: ensure ACCOUNT_AUTHENTICATION_METHOD = "email" is consistent with allauth configuration and there are no residual username checks.
    • website/tests/test_main.py: verify the _ensure_bugbug_user_verified helper deterministically verifies the user in test context and that Selenium selectors reflect updated markup.
    • Broad test sweep: many tests switched to login(email=...) — confirm Django test Client and user creation calls match positional/keyword argument expectations used in each test.

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes significant out-of-scope changes beyond the three stated objectives: a comprehensive email-based authentication refactor affecting 16 test files with wholesale credential migration from username to email, and changes to Django settings that go beyond the issue requirements. Separate the email authentication refactor (tests and core settings) into a distinct PR, keeping this PR focused on the three stated objectives: error message display, UI fixes, and ACCOUNT_AUTHENTICATION_METHOD configuration only.
Docstring Coverage ⚠️ Warning Docstring coverage is 59.52% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is partially related to the changeset. It mentions two main goals (error message on login and email verification UI fixes) which are present, but the actual implementation reveals a much broader email-based authentication refactor affecting test files and configuration, which the title does not capture.
Linked Issues check ✅ Passed The PR addresses the three coding requirements from issue #4056: (1) error message display for wrong credentials via form.non_field_errors rendering in login.html, (2) email verification UI fixes via updated email_confirm.html and verification_sent.html, and (3) email-based authentication via ACCOUNT_AUTHENTICATION_METHOD="email" setting and updated form bindings.
✨ Finishing touches
  • [ ] 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • [ ] Create PR with unit tests
  • [ ] Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Mar 27 '25 17:03 coderabbitai[bot]

please resolve the conflicts

DonnieBLT avatar Nov 15 '25 20:11 DonnieBLT

Sure

swaparup36 avatar Nov 16 '25 02:11 swaparup36

@swaparup36 LGTM! Just a note, the UI for /accounts/confirm-email/ was also updated recently in another PR by someone. Maybe double-check with @DonnieBLT on which version should be kept.

e-esakman avatar Nov 19 '25 17:11 e-esakman

❌ Pre-commit checks failed

The pre-commit hooks found issues that need to be fixed. Please run the following commands locally to fix them:

# Install pre-commit if you haven't already
pip install pre-commit

# Run pre-commit on all files
pre-commit run --all-files

# Or run pre-commit on staged files only
pre-commit run

After running these commands, the pre-commit hooks will automatically fix most issues. Please review the changes, commit them, and push to your branch.

💡 Tip: You can set up pre-commit to run automatically on every commit by running:

pre-commit install
Pre-commit output
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this.  if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/pycqa/isort.
[WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this.  if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/djlint/djLint.
[INFO] Initializing environment for local.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/djlint/djLint.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for local.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
check python ast.........................................................Passed
check builtin type constructor use.......................................Passed
check yaml...............................................................Passed
fix python encoding pragma...............................................Passed
mixed line ending........................................................Passed
isort....................................................................Passed
ruff.....................................................................Passed
ruff-format..............................................................Failed
- hook id: ruff-format
- files were modified by this hook

1 file reformatted, 432 files left unchanged


For more information, see the pre-commit documentation.

github-actions[bot] avatar Nov 23 '25 08:11 github-actions[bot]

💬 Reminder: Unresolved Conversations

Hi @swaparup36!

This pull request has 2 unresolved conversations that need to be addressed.

Please review and resolve the pending discussions so we can move forward with merging this PR.

Thank you! 🙏

github-actions[bot] avatar Nov 25 '25 00:11 github-actions[bot]

❌ Pre-commit checks failed

The pre-commit hooks found issues that need to be fixed. Please run the following commands locally to fix them:

# Install pre-commit if you haven't already
pip install pre-commit

# Run pre-commit on all files
pre-commit run --all-files

# Or run pre-commit on staged files only
pre-commit run

After running these commands, the pre-commit hooks will automatically fix most issues. Please review the changes, commit them, and push to your branch.

💡 Tip: You can set up pre-commit to run automatically on every commit by running:

pre-commit install
Pre-commit output
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this.  if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/pycqa/isort.
[WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this.  if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/djlint/djLint.
[INFO] Initializing environment for local.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/djlint/djLint.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for local.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
check python ast.........................................................Passed
check builtin type constructor use.......................................Passed
check yaml...............................................................Passed
fix python encoding pragma...............................................Passed
mixed line ending........................................................Passed
isort....................................................................Failed
- hook id: isort
- files were modified by this hook

Fixing /home/runner/work/BLT/BLT/website/views/core.py


For more information, see the pre-commit documentation.

github-actions[bot] avatar Nov 27 '25 04:11 github-actions[bot]

👋 Hi @swaparup36!

This pull request needs a peer review before it can be merged. Please request a review from a team member who is not:

  • The PR author
  • DonnieBLT
  • coderabbitai
  • copilot

Once a valid peer review is submitted, this check will pass automatically. Thank you!

github-actions[bot] avatar Nov 27 '25 05:11 github-actions[bot]

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
DEBUG Finished Request
tearDownClass (website.tests.test_main.MySeleniumTests) ... ERROR

======================================================================
ERROR: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
ERROR: tearDownClass (website.tests.test_main.MySeleniumTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 93, in tearDownClass
    User.objects.filter(username="bugbugbug").delete()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1187, in delete
    collector.collect(del_query)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/deletion.py", line 282, in collect
    new_objs = self.add(
               ^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/deletion.py", line 124, in add
    if not objs:
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 414, in __bool__
    self._fetch_all()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1928, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 91, in __iter__
    results = compiler.execute_sql(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 232, in test_post_bug_domain_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:54623/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 06:51:38 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get("detected_tz")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.431395484.1764485490\'\n_gid\n\'GA1.1.830803467.1764485490\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764485489$o1$g1$t1764485496$j53$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'NA3vdYi7VQGcdd76lLY7aBDH2HVrUjYs\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19795174177\'\nGITHUB_RUN_NUMBER\n\'14375\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_35790635-8156-480f-960c-103386f01a84\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:54623\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'97f612fddd07456eacbaa1f09bbc5f93\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:14387\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000578780\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_3aecf096-d92d-4746-84ed-92793f43eee3\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'54623\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1893\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.VeKhvH/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f4b946f9c00>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f4baa8e1620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7f4ba8ce3380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 215 tests in 128.268s

FAILED (failures=1, errors=2)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Nov 30 '25 06:11 github-actions[bot]

@coderabbitai can you give me the fix for the test failing error

swaparup36 avatar Nov 30 '25 08:11 swaparup36

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get PR details including CI status and checks
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT

# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)

echo "=== Latest commit: $LATEST_COMMIT ==="

# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url}'

Length of output: 16083


🏁 Script executed:

#!/bin/bash
# Get the logs from the failed test job
gh run view 19795174177 --repo OWASP-BLT/BLT --log | grep -A 50 -B 10 "FAILED\|ERROR\|AssertionError\|Traceback" | head -200

Length of output: 24431


🏁 Script executed:

#!/bin/bash
# Search for the actual test failure summary at the end of the log
gh run view 19795174177 --repo OWASP-BLT/BLT --log | grep -A 100 "FAILED\|test_login"

Length of output: 68449


I need to get the actual specific test error details from the logs. Let me search more specifically in the logs.


🏁 Script executed:

#!/bin/bash
# Get the detailed error/failure messages from the test logs
gh run view 19795174177 --repo OWASP-BLT/BLT --log | grep -B 20 "FAILED (failures=1, errors=2)" | head -100

Length of output: 32618


🏁 Script executed:

#!/bin/bash
# Get the test_main.py file to see the test structure
cat website/tests/test_main.py

Length of output: 22696


@swaparup36 I found the issue! The tests test_post_bug_full_url and test_post_bug_domain_url are failing because they're trying to log in with the user "bugbug", but that user doesn't have a verified email address. Your PR requires email verification for login to work properly.

Here's the fix for website/tests/test_main.py:

@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
    # Create and verify the bugbug user
    self._ensure_verified_user("bugbug", "[email protected]", "secret")
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    # Add explicit wait for the URL input field
    url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
    url_input.send_keys("https://blt.owasp.org/report/")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
    # Create and verify the bugbug user
    self._ensure_verified_user("bugbug", "[email protected]", "secret")
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    self.selenium.find_element("name", "url").send_keys("https://google.com")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

Also update the tearDownClass method to clean up both test users:

@classmethod
def tearDownClass(cls):
    cls.selenium.quit()
    # Clean up both test users
    User.objects.filter(username="bugbugbug").delete()
    User.objects.filter(username="bugbug").delete()
    super(MySeleniumTests, cls).tearDownClass()

Summary of changes:

  1. Add self._ensure_verified_user("bugbug", "[email protected]", "secret") at the beginning of both test_post_bug_full_url and test_post_bug_domain_url methods
  2. Update tearDownClass to delete both "bugbugbug" and "bugbug" users

This ensures that the "bugbug" user has a verified email address before the tests try to log in, which is required after your authentication changes.

coderabbitai[bot] avatar Nov 30 '25 08:11 coderabbitai[bot]

❌ Pre-commit checks failed

The pre-commit hooks found issues that need to be fixed. Please run the following commands locally to fix them:

# Install pre-commit if you haven't already
pip install pre-commit

# Run pre-commit on all files
pre-commit run --all-files

# Or run pre-commit on staged files only
pre-commit run

After running these commands, the pre-commit hooks will automatically fix most issues. Please review the changes, commit them, and push to your branch.

💡 Tip: You can set up pre-commit to run automatically on every commit by running:

pre-commit install
Pre-commit output
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this.  if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/pycqa/isort.
[WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this.  if it does not -- consider reporting an issue to that repo.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/djlint/djLint.
[INFO] Initializing environment for local.
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/djlint/djLint.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for local.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
check python ast.........................................................Passed
check builtin type constructor use.......................................Passed
check yaml...............................................................Passed
fix python encoding pragma...............................................Passed
mixed line ending........................................................Passed
isort....................................................................Passed
ruff.....................................................................Passed
ruff-format..............................................................Failed
- hook id: ruff-format
- files were modified by this hook

1 file reformatted, 461 files left unchanged


For more information, see the pre-commit documentation.

github-actions[bot] avatar Nov 30 '25 09:11 github-actions[bot]

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:52611 "POST /session/b4b53bd941c289c78556dcb43241c371/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:52611 "POST /session/b4b53bd941c289c78556dcb43241c371/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:52611 "POST /session/b4b53bd941c289c78556dcb43241c371/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371/element/f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422/text {}
DEBUG http://localhost:52611 "GET /session/b4b53bd941c289c78556dcb43241c371/element/f.EBB2BCDB451C4D1FD31537DA670B2267.d.893D30F0328B3C4CDDB2086C7230736A.e.422/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:56995/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Sun, 30 Nov 2025 09:13:55 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get(\"detected_tz\")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.979471064.1764494023'\n_gid\n'GA1.1.1495401734.1764494023'\n_gat\n'1'\ncsrftoken\n'********************'\nsessionid\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764494022$o1$g1$t1764494034$j48$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'ED8vdcqZ6pDnPkwtaLtCzXKUU6nVIc8x'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'false'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19796685423'\nGITHUB_RUN_NUMBER\n'14380'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_bf253c3e-9a7f-4721-b21b-28dfdb51e20e'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:56995'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'5cbc1ab196874c4b8d8a0f6a27fa826e'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:13571'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000578934'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_12364ba3-f986-4484-8504-a05c7d941dd7'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'56995'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1964'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.VJpxrR/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7f9473aa5a80>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7f948cd25620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'username_email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n             'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n             'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n             'AUTOCOMMIT': True,\n             'CONN_HEALTH_CHECKS': False,\n             'CONN_MAX_AGE': 0,\n             'ENGINE': 'django.db.backends.sqlite3',\n             'HOST': '',\n             'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n             'OPTIONS': {},\n             'PASSWORD': '********************',\n             'PORT': '',\n             'TEST': {'CHARSET': None,\n                      'COLLATION': None,\n                      'MIGRATE': True,\n                      'MIRROR': None,\n                      'NAME': None},\n             'TIME_ZONE': None,\n             'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n                'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n                                      '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n                          'formatter': 'simple',\n                          'level': 'DEBUG',\n                          'stream': 'ext://sys.stdout'},\n              'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n                              'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n                        'level': 'INFO',\n                        'propagate': True},\n             'django.server': {'handlers': ['console'],\n                               'level': 'INFO',\n                               'propagate': True},\n             'website': {'handlers': ['console'],\n                         'level': 'DEBUG',\n                         'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n             'toolbar': ['undo',\n                         'redo',\n                         '|',\n                         'bold',\n                         'del',\n                         'italic',\n                         'quote',\n                         'ucwords',\n                         'uppercase',\n                         'lowercase',\n                         '|',\n                         'h1',\n                         'h2',\n                         'h3',\n                         'h5',\n                         'h6',\n                         '|',\n                         'list-ul',\n                         'list-ol',\n                         'hr',\n                         '|',\n                         'link',\n                         'reference-link',\n                         'code',\n                         'code-block',\n                         'table',\n                         'datetime',\n                         '||',\n                         'preview',\n                         'fullscreen'],\n             'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n              'FIELDS': ['id',\n                         'email',\n                         'name',\n                         'first_name',\n                         'last_name',\n                         'verified',\n                         'locale',\n                         'timezone',\n                         'link'],\n              'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7f948af0f380>,\n              'METHOD': 'oauth2',\n              'SCOPE': ['email'],\n              'VERIFIED_EMAIL': False,\n              'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n  'BACKEND': 'django.template.backends.django.DjangoTemplates',\n  'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n                                     'django.template.context_processors.request',\n                                     'django.template.context_processors.media',\n                                     'django.contrib.auth.context_processors.auth',\n                                     'django.contrib.messages.context_processors.messages',\n                                     'django.template.context_processors.i18n'],\n              'debug': False,\n              'loaders': [('django.template.loaders.cached.Loader',\n                           ['django.template.loaders.filesystem.Loader',\n                            'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '29056', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url) ... ERROR
DEBUG DELETE http://localhost:52611/session/b4b53bd941c289c78556dcb43241c371 {}
DEBUG http://localhost:52611 "DELETE /session/b4b53bd941c289c78556dcb43241c371 HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request

======================================================================
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 184, in test_post_bug_full_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:56995/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 09:13:55 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get("detected_tz")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.979471064.1764494023\'\n_gid\n\'GA1.1.1495401734.1764494023\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764494022$o1$g1$t1764494034$j48$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'ED8vdcqZ6pDnPkwtaLtCzXKUU6nVIc8x\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19796685423\'\nGITHUB_RUN_NUMBER\n\'14380\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_bf253c3e-9a7f-4721-b21b-28dfdb51e20e\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:56995\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'5cbc1ab196874c4b8d8a0f6a27fa826e\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:13571\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000578934\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_12364ba3-f986-4484-8504-a05c7d941dd7\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'56995\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1964\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.VJpxrR/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f9473aa5a80>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f948cd25620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7f948af0f380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 216 tests in 128.162s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Nov 30 '25 09:11 github-actions[bot]

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py", line 161, in _record_ip
    ip_record.save(update_fields=["agent", "count"])
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 892, in save
    self.save_base(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 998, in save_base
    updated = self._save_table(
              ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1130, in _save_table
    updated = self._do_update(
              ^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1195, in _do_update
    return filtered._update(values) > 0
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1278, in _update
    return query.get_compiler(self.db).execute_sql(CURSOR)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 2003, in execute_sql
    cursor = super().execute_sql(result_type)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 184, in test_post_bug_full_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:37253/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 09:20:37 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 161, in _record_ip\n                    ip_record.save(update_fields=["agent", "count"])\n                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 892, in save\n        self.save_base(\n             ^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 998, in save_base\n            updated = self._save_table(\n                            \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1130, in _save_table\n            updated = self._do_update(\n                             \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1195, in _do_update\n        return filtered._update(values) > 0\n                     ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1278, in _update\n        return query.get_compiler(self.db).execute_sql(CURSOR)\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 2003, in execute_sql\n        cursor = super().execute_sql(result_type)\n                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\nThe above exception (An error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.) was the direct cause of the following exception:\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get("detected_tz")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.19036856.1764494424\'\n_gid\n\'GA1.1.1672972759.1764494424\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764494424$o1$g1$t1764494436$j48$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'L5AUnvetpGPo8nFFRPeKXjlUsZhcMLkW\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19796764319\'\nGITHUB_RUN_NUMBER\n\'14381\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_e43973ae-b98c-481f-8a2c-f74434d578e2\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:37253\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'ea9c39a5dee3485a81faf08610e13c26\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:10881\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000578960\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_a0dda4cb-967c-42ef-a77d-1a284f1ab860\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'37253\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1914\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.H71Ff0/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7fda3427bfa0>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7fda4e011620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7fda4c20f380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 216 tests in 130.959s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Nov 30 '25 09:11 github-actions[bot]

@coderabbitai Can you help me to fix the test error now

swaparup36 avatar Nov 30 '25 09:11 swaparup36

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the current PR status and latest CI runs
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT

# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)

echo "=== Latest commit: $LATEST_COMMIT ==="

# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url, started_at: .started_at}'

Length of output: 20380


🏁 Script executed:

#!/bin/bash
# Check the current state of test_main.py to see if fixes were applied
cat website/tests/test_main.py | grep -A 15 "def test_post_bug_full_url"

Length of output: 1201


🏁 Script executed:

#!/bin/bash
# Get the most recent test run logs
LATEST_RUN=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId --jq '.[0].databaseId')
echo "=== Latest run ID: $LATEST_RUN ==="

if [ -n "$LATEST_RUN" ]; then
    gh run view $LATEST_RUN --repo OWASP-BLT/BLT --log | grep -A 30 "FAILED\|ERROR" | tail -100
fi

Length of output: 34


🏁 Script executed:

#!/bin/bash
# Get detailed logs from the failed test run
gh run view 19796764319 --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR" | tail -200

Length of output: 91835


🏁 Script executed:

#!/bin/bash
# Also check the full test_main.py to understand the setUp method
cat website/tests/test_main.py | grep -A 30 "class MySeleniumTests"

Length of output: 1256


🏁 Script executed:

#!/bin/bash
# Check if _ensure_verified_user method exists
cat website/tests/test_main.py | grep -A 10 "_ensure_verified_user"

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Get the setUp method and user creation logic
cat website/tests/test_main.py | grep -A 50 "def setUp"

Length of output: 10380


🏁 Script executed:

#!/bin/bash
# Look for how users are created and verified in the test file
cat website/tests/test_main.py | grep -B 5 -A 15 "User.objects.create\|EmailAddress"

Length of output: 6204


🏁 Script executed:

#!/bin/bash
# Check for test_post_bug_domain_url to see if it has the same pattern
cat website/tests/test_main.py | grep -A 20 "def test_post_bug_domain_url"

Length of output: 1548


@swaparup36 I see the issue now! The error is happening because the bugbug user from the fixtures doesn't have a verified email address, even though the setUp method tries to verify all users. The TransactionManagementError is occurring after login when the test navigates to /all_activity/.

Here's the fix for both failing tests in website/tests/test_main.py:

For test_post_bug_full_url:

@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
    # Ensure bugbug user exists and has verified email
    from allauth.account.models import EmailAddress
    
    # Get or create the bugbug user
    bugbug_user, created = User.objects.get_or_create(
        username="bugbug",
        defaults={"email": "[email protected]"}
    )
    if created:
        bugbug_user.set_password("secret")
        bugbug_user.save()
    
    # Verify the email
    email_address, created = EmailAddress.objects.get_or_create(
        user=bugbug_user,
        email="[email protected]",
        defaults={"verified": True, "primary": True}
    )
    if not created:
        email_address.verified = True
        email_address.primary = True
        email_address.save()
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    # Add explicit wait for the URL input field
    url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
    url_input.send_keys("https://blt.owasp.org/report/")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

For test_post_bug_domain_url:

@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
    # Ensure bugbug user exists and has verified email
    from allauth.account.models import EmailAddress
    
    # Get or create the bugbug user
    bugbug_user, created = User.objects.get_or_create(
        username="bugbug",
        defaults={"email": "[email protected]"}
    )
    if created:
        bugbug_user.set_password("secret")
        bugbug_user.save()
    
    # Verify the email
    email_address, created = EmailAddress.objects.get_or_create(
        user=bugbug_user,
        email="[email protected]",
        defaults={"verified": True, "primary": True}
    )
    if not created:
        email_address.verified = True
        email_address.primary = True
        email_address.save()
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    self.selenium.find_element("name", "url").send_keys("https://google.com")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

Key changes:

  1. Both tests now explicitly create or get the bugbug user at the start
  2. Set the password if the user was just created
  3. Create and verify the EmailAddress entry for that user
  4. This ensures the user can log in successfully with mandatory email verification enabled

This fix follows the same pattern used in the test_signup method and ensures the bugbug user has a verified email before attempting to log in.

coderabbitai[bot] avatar Nov 30 '25 09:11 coderabbitai[bot]

@sidd190 Sure, all of these are already done. And for the remaining tests that still posts username instead of login/email after signup is fine because both of the methods will work for login.

swaparup36 avatar Nov 30 '25 10:11 swaparup36

@sidd190 Sure, all of these are already done. And for the remaining tests that still posts username instead of login/email after signup is fine because both of the methods will work for login.

Coool. I kinda figured! LGTM I think.

sidd190 avatar Nov 30 '25 10:11 sidd190

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:56901 "POST /session/3b0cbee6c5afc4b56c5a0985b27a6fde/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56901 "POST /session/3b0cbee6c5afc4b56c5a0985b27a6fde/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56901 "POST /session/3b0cbee6c5afc4b56c5a0985b27a6fde/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde/element/f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495/text {}
DEBUG http://localhost:56901 "GET /session/3b0cbee6c5afc4b56c5a0985b27a6fde/element/f.C7E07904E45977B90B83C27D16C0E36F.d.F3DEE8BC6E1DDC88D72273C293BA7F9F.e.495/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:55435/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Sun, 30 Nov 2025 11:43:32 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get(\"detected_tz\")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.498057479.1764502997'\n_gid\n'GA1.1.840050233.1764502997'\n_gat\n'1'\ncsrftoken\n'********************'\nsessionid\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764502997$o1$g1$t1764503011$j46$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'k7LS08MFluk62tVNukDdBC77CMmxuGIO'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'false'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19798335209'\nGITHUB_RUN_NUMBER\n'14390'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_cfc134d3-1acf-4385-800d-3943fb7b061e'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:55435'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'a224b4a42e3b4cb18a74159eabb6d05d'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:11058'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000579342'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_dcda8d85-42a5-405d-a052-a3c94a9f62fd'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'55435'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1899'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.Higjh6/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7f89011a6500>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7f891ac41620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'username_email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n             'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n             'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n             'AUTOCOMMIT': True,\n             'CONN_HEALTH_CHECKS': False,\n             'CONN_MAX_AGE': 0,\n             'ENGINE': 'django.db.backends.sqlite3',\n             'HOST': '',\n             'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n             'OPTIONS': {},\n             'PASSWORD': '********************',\n             'PORT': '',\n             'TEST': {'CHARSET': None,\n                      'COLLATION': None,\n                      'MIGRATE': True,\n                      'MIRROR': None,\n                      'NAME': None},\n             'TIME_ZONE': None,\n             'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n                'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n                                      '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n                          'formatter': 'simple',\n                          'level': 'DEBUG',\n                          'stream': 'ext://sys.stdout'},\n              'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n                              'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n                        'level': 'INFO',\n                        'propagate': True},\n             'django.server': {'handlers': ['console'],\n                               'level': 'INFO',\n                               'propagate': True},\n             'website': {'handlers': ['console'],\n                         'level': 'DEBUG',\n                         'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n             'toolbar': ['undo',\n                         'redo',\n                         '|',\n                         'bold',\n                         'del',\n                         'italic',\n                         'quote',\n                         'ucwords',\n                         'uppercase',\n                         'lowercase',\n                         '|',\n                         'h1',\n                         'h2',\n                         'h3',\n                         'h5',\n                         'h6',\n                         '|',\n                         'list-ul',\n                         'list-ol',\n                         'hr',\n                         '|',\n                         'link',\n                         'reference-link',\n                         'code',\n                         'code-block',\n                         'table',\n                         'datetime',\n                         '||',\n                         'preview',\n                         'fullscreen'],\n             'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n              'FIELDS': ['id',\n                         'email',\n                         'name',\n                         'first_name',\n                         'last_name',\n                         'verified',\n                         'locale',\n                         'timezone',\n                         'link'],\n              'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7f8918e0f380>,\n              'METHOD': 'oauth2',\n              'SCOPE': ['email'],\n              'VERIFIED_EMAIL': False,\n              'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n  'BACKEND': 'django.template.backends.django.DjangoTemplates',\n  'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n                                     'django.template.context_processors.request',\n                                     'django.template.context_processors.media',\n                                     'django.contrib.auth.context_processors.auth',\n                                     'django.contrib.messages.context_processors.messages',\n                                     'django.template.context_processors.i18n'],\n              'debug': False,\n              'loaders': [('django.template.loaders.cached.Loader',\n                           ['django.template.loaders.filesystem.Loader',\n                            'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '29055', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url) ... ERROR
DEBUG DELETE http://localhost:56901/session/3b0cbee6c5afc4b56c5a0985b27a6fde {}
DEBUG http://localhost:56901 "DELETE /session/3b0cbee6c5afc4b56c5a0985b27a6fde HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request

======================================================================
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 229, in test_post_bug_full_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:55435/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 11:43:32 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get("detected_tz")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.498057479.1764502997\'\n_gid\n\'GA1.1.840050233.1764502997\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764502997$o1$g1$t1764503011$j46$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'k7LS08MFluk62tVNukDdBC77CMmxuGIO\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19798335209\'\nGITHUB_RUN_NUMBER\n\'14390\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_cfc134d3-1acf-4385-800d-3943fb7b061e\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:55435\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'a224b4a42e3b4cb18a74159eabb6d05d\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:11058\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000579342\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_dcda8d85-42a5-405d-a052-a3c94a9f62fd\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'55435\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1899\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.Higjh6/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f89011a6500>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f891ac41620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7f8918e0f380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 217 tests in 135.005s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Nov 30 '25 11:11 github-actions[bot]

@coderabbitai give the fix for the tests

swaparup36 avatar Nov 30 '25 11:11 swaparup36

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get the latest PR status and CI runs
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT

# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)

echo "=== Latest commit: $LATEST_COMMIT ==="

# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url, started_at: .started_at}' | head -50

Length of output: 21234


🏁 Script executed:

#!/bin/bash
# Get the most recent failed test run logs
LATEST_RUN=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId,conclusion,status --jq '.[0] | {id: .databaseId, conclusion: .conclusion, status: .status}')
echo "=== Latest run info: $LATEST_RUN ==="

LATEST_RUN_ID=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId --jq '.[0].databaseId')
echo "=== Fetching logs for run ID: $LATEST_RUN_ID ==="

if [ -n "$LATEST_RUN_ID" ]; then
    gh run view $LATEST_RUN_ID --repo OWASP-BLT/BLT --log | grep -B 5 -A 20 "FAILED\|AssertionError" | tail -150
fi

Length of output: 133


🏁 Script executed:

#!/bin/bash
# Check the current state of test_main.py
cat website/tests/test_main.py

Length of output: 24785


🏁 Script executed:

#!/bin/bash
# Get detailed logs from the failing test run
gh run view 19798335209 --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR\|AssertionError" | tail -200

Length of output: 83659


@swaparup36 I can see the issue! The tests are failing with a TransactionManagementError when navigating to /all_activity/. This is because the user creation and email verification happening inside the test methods are not being committed properly in Django's LiveServerTestCase transaction.

Here's the fix for website/tests/test_main.py:

Replace both test_post_bug_full_url and test_post_bug_domain_url methods with:

@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
    # Use transaction.atomic to ensure changes are committed
    from django.db import transaction
    from allauth.account.models import EmailAddress

    # Wrap user setup in atomic block and force commit
    with transaction.atomic():
        # Get or create the bugbug user
        bugbug_user, created = User.objects.get_or_create(
            username="bugbug", defaults={"email": "[email protected]"}
        )
        if created:
            bugbug_user.set_password("secret")
            bugbug_user.save()

        # Verify the email
        email_address, created = EmailAddress.objects.get_or_create(
            user=bugbug_user, email="[email protected]", defaults={"verified": True, "primary": True}
        )
        if not created:
            email_address.verified = True
            email_address.primary = True
            email_address.save()

    # Force transaction commit by accessing the database
    User.objects.get(username="bugbug")
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    # Add explicit wait for the URL input field
    url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
    url_input.send_keys("https://blt.owasp.org/report/")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
    # Use transaction.atomic to ensure changes are committed
    from django.db import transaction
    from allauth.account.models import EmailAddress

    # Wrap user setup in atomic block and force commit
    with transaction.atomic():
        # Get or create the bugbug user
        bugbug_user, created = User.objects.get_or_create(
            username="bugbug", defaults={"email": "[email protected]"}
        )
        if created:
            bugbug_user.set_password("secret")
            bugbug_user.save()

        # Verify the email
        email_address, created = EmailAddress.objects.get_or_create(
            user=bugbug_user, email="[email protected]", defaults={"verified": True, "primary": True}
        )
        if not created:
            email_address.verified = True
            email_address.primary = True
            email_address.save()

    # Force transaction commit by accessing the database
    User.objects.get(username="bugbug")
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    self.selenium.find_element("name", "url").send_keys("https://google.com")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

Key changes:

  1. Wrapped the user creation and email verification in transaction.atomic() to ensure proper transaction handling
  2. Added User.objects.get(username="bugbug") after the atomic block to force the transaction to be seen by the live server thread
  3. This ensures the database changes are visible to the Selenium tests running against the live server

The issue was that Django's LiveServerTestCase runs in a separate thread, and without proper transaction handling, the user created in the test wasn't visible to the live server. This fix ensures the changes are properly committed and visible.

coderabbitai[bot] avatar Nov 30 '25 11:11 coderabbitai[bot]

@coderabbitai verification_sent.html — missing features: Lines 1-6: No {% block title %}, {% block description %}, {% block keywords %}, {% block og_title %}, {% block og_description %} — confirmed missing Grep for "resend|account_email": no matches — confirmed missing No conditional blocks for expired/invalid links — confirmed missing login.html line 50 — dark mode: Line 50:

— no dark:text-gray-300 — confirmed login.html line 51 — error handling: Line 51: {% if form.errors %} — not form.non_field_errors — confirmed Test duplication: test_post_bug_full_url() (lines 196-212) and test_post_bug_domain_url() (lines 246-262) have identical user setup code — confirmed duplicate. Have these been addressed?

Pritz395 avatar Nov 30 '25 12:11 Pritz395

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check verification_sent.html for the missing features
echo "=== verification_sent.html content ==="
cat website/templates/account/verification_sent.html

echo -e "\n\n=== login.html lines 45-55 ==="
cat website/templates/account/login.html | head -60 | tail -20

echo -e "\n\n=== test_main.py lines 196-212 (test_post_bug_full_url) ==="
sed -n '196,212p' website/tests/test_main.py

echo -e "\n\n=== test_main.py lines 246-262 (test_post_bug_domain_url) ==="
sed -n '246,262p' website/tests/test_main.py

Length of output: 6864


@Pritz395 Great catch! All four issues you identified are confirmed. Here are the fixes:

1. verification_sent.html — Add missing SEO blocks and resend functionality

Replace the first few lines of website/templates/account/verification_sent.html:

{% extends "base.html" %}
{% load i18n %}
{% load static %}
{% load custom_tags %}

{% block title %}{% trans "Verify Your Email" %} - {% env 'PROJECT_NAME' %}{% endblock %}
{% block description %}{% trans "Please check your email to verify your account" %}{% endblock %}
{% block keywords %}{% trans "email verification, account verification, confirm email" %}{% endblock %}
{% block og_title %}{% trans "Verify Your Email" %} - {% env 'PROJECT_NAME' %}{% endblock %}
{% block og_description %}{% trans "Please check your email to verify your account" %}{% endblock %}

{% block header %}{% endblock %}
{% block include_header %}{% endblock %}
{% block natural_content %}
    <div class="flex items-center min-h-screen py-6 px-4 bg-gray-100 lg:justify-center">
        <div class="flex flex-col overflow-hidden bg-white rounded-md shadow-lg max md:flex-row md:flex-1 lg:max-w-screen-sm">
            <!-- Left Side (Branding and Info) -->
            <div class="p-4 py-6 text-white bg-red-500 md:w-80 md:flex-shrink-0 md:flex md:flex-col md:items-center md:justify-evenly">
                <div class="my-2 text-4xl font-bold tracking-wider text-center">
                    <a href="{% url 'home' %}"
                       class="hover:no-underline text-white hover:text-white">{% env 'PROJECT_NAME' %}</a>
                </div>
                <p class="mt-4 font-normal text-center text-white text-xl md:mt-0">
                    {% env 'PROJECT_NAME' %} {% trans "is a bug logging tool to report issues and get points, Organizations are held accountable" %}.
                </p>
                <p class="mt-6 font-normal text-center text-white text-lg md:mt-0">
                    {% trans "Thank you for joining our community!" %}
                </p>
            </div>
            <!-- Right Side (Verification Content) -->
            <div class="p-5 bg-white md:flex-1">
                <h3 class="text-2xl text-center font-semibold text-gray-700 mb-6">{% trans "Check Your Email" %}</h3>
                <div class="flex justify-center mb-8">
                    <div class="relative">
                        <div class="absolute -inset-2">
                            <div class="w-full h-full mx-auto opacity-30 blur-lg filter bg-gradient-to-r from-red-400 to-red-600"></div>
                        </div>
                        <svg class="relative h-16 w-16 text-red-500"
                             fill="none"
                             stroke="currentColor"
                             viewBox="0 0 24 24">
                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 19v-8.93a2 2 0 01.89-1.664l7-4.666a2 2 0 012.22 0l7 4.666A2 2 0 0121 10.07V19M3 19a2 2 0 002 2h14a2 2 0 002-2M3 19l6.75-4.5M21 19l-6.75-4.5M3 10l6.75 4.5M21 10l-6.75 4.5m0 0l-1.14.76a2 2 0 01-2.22 0l-1.14-.76">
                            </path>
                        </svg>
                    </div>
                </div>
                <div class="space-y-6">
                    <div class="text-center">
                        <p class="text-gray-600 mb-2">{% trans "We've sent a verification email to your inbox." %}</p>
                        <p class="text-sm text-gray-500">{% trans "Please click the link in the email to confirm your email address." %}</p>
                    </div>
                    <div class="space-y-4">
                        <div class="text-center mb-4">
                            <p class="text-sm text-gray-500 mb-2">{% trans "Didn't receive the email?" %}</p>
                            <a href="{% url 'account_email' %}"
                               class="text-red-500 hover:text-red-600 underline text-sm font-medium">
                                {% trans "Resend verification email" %}
                            </a>
                        </div>
                        <div class="grid grid-cols-2 gap-4">
                            <a href="{% url 'account_login' %}"
                               class="flex items-center justify-center px-4 py-2 text-lg font-semibold text-white transition-colors duration-300 bg-red-500 rounded-md shadow hover:bg-red-600 focus:outline-none focus:ring-red-200 focus:ring-4">
                                {% trans "Login" %}
                            </a>
                            <a href="{% url 'account_signup' %}"
                               class="flex items-center justify-center px-4 py-2 text-lg font-semibold text-white transition-colors duration-300 bg-red-500 rounded-md shadow hover:bg-red-600 focus:outline-none focus:ring-red-200 focus:ring-4">
                                {% trans "Sign Up" %}
                            </a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
{% endblock %}

2. login.html line 50 — Add dark mode support

Update line 50 in website/templates/account/login.html:

<h3 class="text-2xl font-semibold text-gray-700 dark:text-gray-300">{% trans "Account Login" %}</h3>

3. login.html line 51 — Use form.non_field_errors

Replace the error block (lines 51-56) in website/templates/account/login.html:

{% if form.non_field_errors %}
    <div class="mt-4 p-4 mb-4 text-sm text-red-700 bg-red-100 rounded-lg"
         role="alert">
        {% for error in form.non_field_errors %}
            <p>{{ error }}</p>
        {% endfor %}
    </div>
{% endif %}

4. Test duplication — Refactor with helper method

Add this helper method to the MySeleniumTests class in website/tests/test_main.py:

def _ensure_bugbug_user_verified(self):
    """Helper method to create and verify the bugbug test user."""
    from django.db import transaction
    from allauth.account.models import EmailAddress

    with transaction.atomic():
        # Get or create the bugbug user
        bugbug_user, created = User.objects.get_or_create(
            username="bugbug", defaults={"email": "[email protected]"}
        )
        if created:
            bugbug_user.set_password("secret")
            bugbug_user.save()

        # Verify the email
        email_address, created = EmailAddress.objects.get_or_create(
            user=bugbug_user,
            email="[email protected]",
            defaults={"verified": True, "primary": True}
        )
        if not created:
            email_address.verified = True
            email_address.primary = True
            email_address.save()

    # Force transaction commit by accessing the database
    User.objects.get(username="bugbug")

Then replace the duplicate code in both test_post_bug_full_url and test_post_bug_domain_url:

@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
    # Create and verify the bugbug user
    self._ensure_bugbug_user_verified()
    
    self.selenium.set_page_load_timeout(70)
    # ... rest of the test
@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
    # Create and verify the bugbug user
    self._ensure_bugbug_user_verified()
    
    self.selenium.set_page_load_timeout(70)
    # ... rest of the test

These changes will:

  • Add proper SEO metadata to verification_sent.html
  • Add resend verification email link
  • Fix dark mode support in login.html
  • Improve error handling with non_field_errors
  • Eliminate code duplication in tests with DRY principle

coderabbitai[bot] avatar Nov 30 '25 12:11 coderabbitai[bot]

@swaparup36 Please look into these.

Pritz395 avatar Nov 30 '25 12:11 Pritz395

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:45197 "POST /session/4629fa4046a8b429c59cefe6bef05a5a/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:45197 "POST /session/4629fa4046a8b429c59cefe6bef05a5a/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:45197 "POST /session/4629fa4046a8b429c59cefe6bef05a5a/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a/element/f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480/text {}
DEBUG http://localhost:45197 "GET /session/4629fa4046a8b429c59cefe6bef05a5a/element/f.06AE8DAEB0E698785470BD87B9E6F3BF.d.C0635779AEC53F33CB58A730EB842A08.e.480/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:48313/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Sun, 30 Nov 2025 12:34:59 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get(\"detected_tz\")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.717061280.1764506083'\n_gid\n'GA1.1.1532922984.1764506083'\n_gat\n'1'\ncsrftoken\n'********************'\nsessionid\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764506083$o1$g1$t1764506098$j45$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'DO1pPC4WRaYvbCOQsp7sTjqnre0ddU41'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'false'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19798893782'\nGITHUB_RUN_NUMBER\n'14392'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_17be47e0-513e-4dd5-a0f2-eb7216a1460a'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'ef6d0511f35f2db72a0cf233738909e2c3ae9452'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:48313'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'9ce39418059e4faf9b7d4269a2b5d476'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:13011'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000579699'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_02229f9f-70be-4e54-8e01-be8ef284576a'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'48313'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1905'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.dWqxim/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7fc492db4520>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7fc4a8edd620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'username_email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n             'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n             'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n             'AUTOCOMMIT': True,\n             'CONN_HEALTH_CHECKS': False,\n             'CONN_MAX_AGE': 0,\n             'ENGINE': 'django.db.backends.sqlite3',\n             'HOST': '',\n             'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n             'OPTIONS': {},\n             'PASSWORD': '********************',\n             'PORT': '',\n             'TEST': {'CHARSET': None,\n                      'COLLATION': None,\n                      'MIGRATE': True,\n                      'MIRROR': None,\n                      'NAME': None},\n             'TIME_ZONE': None,\n             'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n                'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n                                      '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n                          'formatter': 'simple',\n                          'level': 'DEBUG',\n                          'stream': 'ext://sys.stdout'},\n              'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n                              'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n                        'level': 'INFO',\n                        'propagate': True},\n             'django.server': {'handlers': ['console'],\n                               'level': 'INFO',\n                               'propagate': True},\n             'website': {'handlers': ['console'],\n                         'level': 'DEBUG',\n                         'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n             'toolbar': ['undo',\n                         'redo',\n                         '|',\n                         'bold',\n                         'del',\n                         'italic',\n                         'quote',\n                         'ucwords',\n                         'uppercase',\n                         'lowercase',\n                         '|',\n                         'h1',\n                         'h2',\n                         'h3',\n                         'h5',\n                         'h6',\n                         '|',\n                         'list-ul',\n                         'list-ol',\n                         'hr',\n                         '|',\n                         'link',\n                         'reference-link',\n                         'code',\n                         'code-block',\n                         'table',\n                         'datetime',\n                         '||',\n                         'preview',\n                         'fullscreen'],\n             'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n              'FIELDS': ['id',\n                         'email',\n                         'name',\n                         'first_name',\n                         'last_name',\n                         'verified',\n                         'locale',\n                         'timezone',\n                         'link'],\n              'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7fc4a72f3380>,\n              'METHOD': 'oauth2',\n              'SCOPE': ['email'],\n              'VERIFIED_EMAIL': False,\n              'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n  'BACKEND': 'django.template.backends.django.DjangoTemplates',\n  'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n                                     'django.template.context_processors.request',\n                                     'django.template.context_processors.media',\n                                     'django.contrib.auth.context_processors.auth',\n                                     'django.contrib.messages.context_processors.messages',\n                                     'django.template.context_processors.i18n'],\n              'debug': False,\n              'loaders': [('django.template.loaders.cached.Loader',\n                           ['django.template.loaders.filesystem.Loader',\n                            'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '29056', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url) ... ERROR
DEBUG DELETE http://localhost:45197/session/4629fa4046a8b429c59cefe6bef05a5a {}
DEBUG http://localhost:45197 "DELETE /session/4629fa4046a8b429c59cefe6bef05a5a HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request

======================================================================
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 219, in test_post_bug_full_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:48313/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Sun, 30 Nov 2025 12:34:59 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get("detected_tz")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.717061280.1764506083\'\n_gid\n\'GA1.1.1532922984.1764506083\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764506083$o1$g1$t1764506098$j45$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'DO1pPC4WRaYvbCOQsp7sTjqnre0ddU41\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19798893782\'\nGITHUB_RUN_NUMBER\n\'14392\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_17be47e0-513e-4dd5-a0f2-eb7216a1460a\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'ef6d0511f35f2db72a0cf233738909e2c3ae9452\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:48313\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'9ce39418059e4faf9b7d4269a2b5d476\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:13011\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000579699\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_02229f9f-70be-4e54-8e01-be8ef284576a\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'48313\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1905\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.dWqxim/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7fc492db4520>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7fc4a8edd620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7fc4a72f3380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 217 tests in 140.070s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Nov 30 '25 12:11 github-actions[bot]

@coderabbitai give me the fix for the test

swaparup36 avatar Nov 30 '25 12:11 swaparup36

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get the latest PR status and CI runs
gh pr view 4065 --json statusCheckRollup,commits --repo OWASP-BLT/BLT

# Get the latest commit SHA
LATEST_COMMIT=$(gh pr view 4065 --json commits --jq '.commits[-1].oid' --repo OWASP-BLT/BLT)

echo "=== Latest commit: $LATEST_COMMIT ==="

# Get check runs for the latest commit
gh api "/repos/OWASP-BLT/BLT/commits/$LATEST_COMMIT/check-runs" --jq '.check_runs[] | {name: .name, status: .status, conclusion: .conclusion, html_url: .html_url}' | head -30

Length of output: 22411


🏁 Script executed:

#!/bin/bash
# Get the most recent test run logs
LATEST_RUN_ID=$(gh run list --repo OWASP-BLT/BLT --branch error-msg-login-email-verification-ui --limit 1 --json databaseId --jq '.[0].databaseId')
echo "=== Latest run ID: $LATEST_RUN_ID ==="

if [ -n "$LATEST_RUN_ID" ]; then
    gh run view $LATEST_RUN_ID --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR\|AssertionError" | tail -200
fi

Length of output: 34


🏁 Script executed:

#!/bin/bash
# Check the current state of test_main.py to see what's implemented
cat website/tests/test_main.py | grep -A 30 "def test_post_bug_full_url\|def test_post_bug_domain_url\|def _ensure_bugbug_user_verified"

Length of output: 4788


🏁 Script executed:

#!/bin/bash
# Get the detailed logs from the failed test run
gh run view 19798893782 --repo OWASP-BLT/BLT --log | grep -B 10 -A 30 "FAILED\|ERROR\|AssertionError" | tail -200

Length of output: 83661


🏁 Script executed:

#!/bin/bash
# Get the full test output to see which specific tests are failing
gh run view 19798893782 --repo OWASP-BLT/BLT --log | grep -E "test_.*\(|FAIL:|ERROR:|Traceback" | tail -100

Length of output: 79315


@swaparup36 I found the issue! The tests test_post_bug_full_url and test_post_bug_domain_url have duplicate lines that are causing the TransactionManagementError.

Looking at the current code structure, after calling self._ensure_bugbug_user_verified(), both tests have these duplicate lines:

  1. self.selenium.set_page_load_timeout(70) (appears twice)
  2. User.objects.get(username="bugbug") (unnecessary since the helper already does this)

These duplicate database queries are leaving the transaction in a broken state, causing the error when Django's session middleware tries to access the database.

Here's the fix for website/tests/test_main.py:

Replace test_post_bug_full_url with:

@override_settings(DEBUG=True)
def test_post_bug_full_url(self):
    # Create and verify the bugbug user
    self._ensure_bugbug_user_verified()
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    # Add explicit wait for the URL input field
    url_input = WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.NAME, "url")))
    url_input.send_keys("https://blt.owasp.org/report/")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

Replace test_post_bug_domain_url with:

@override_settings(DEBUG=True)
def test_post_bug_domain_url(self):
    # Create and verify the bugbug user
    self._ensure_bugbug_user_verified()
    
    self.selenium.set_page_load_timeout(70)
    self.selenium.get("%s%s" % (self.live_server_url, "/accounts/login/"))
    self.selenium.find_element("name", "login").send_keys("bugbug")
    self.selenium.find_element("name", "password").send_keys("secret")
    self.selenium.find_element("name", "login_button").click()
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    self.selenium.get("%s%s" % (self.live_server_url, "/report/"))
    self.selenium.find_element("name", "url").send_keys("https://google.com")
    self.selenium.find_element("id", "description").send_keys("XSS Attack on Google")  # title of bug
    self.selenium.find_element("id", "markdownInput").send_keys("Description of bug")
    Imagepath = os.path.abspath(os.path.join(os.getcwd(), "website/static/img/background.jpg"))
    self.selenium.find_element("name", "screenshots").send_keys(Imagepath)
    # pass captacha if in test mode
    self.selenium.find_element("name", "captcha_1").send_keys("PASSED")
    self.selenium.find_element("name", "reportbug_button").click()
    self.selenium.get("%s%s" % (self.live_server_url, "/all_activity/"))
    WebDriverWait(self.selenium, 30).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    body = self.selenium.find_element("tag name", "body")
    self.assertIn("XSS Attack on Google", body.text)

Key changes:

  1. Removed the duplicate self.selenium.set_page_load_timeout(70) line
  2. Removed the duplicate User.objects.get(username="bugbug") line that was causing the transaction error
  3. The _ensure_bugbug_user_verified() helper already handles all the user setup and transaction management

This should fix the TransactionManagementError by ensuring clean transaction boundaries!

coderabbitai[bot] avatar Nov 30 '25 12:11 coderabbitai[bot]

@Pritz395 thanks for pointing out! fixed now

swaparup36 avatar Nov 30 '25 12:11 swaparup36

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
ERROR: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py", line 161, in _record_ip
    ip_record.save(update_fields=["agent", "count"])
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 892, in save
    self.save_base(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 998, in save_base
    updated = self._save_table(
              ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1130, in _save_table
    updated = self._do_update(
              ^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py", line 1195, in _do_update
    return filtered._update(values) > 0
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py", line 1278, in _update
    return query.get_compiler(self.db).execute_sql(CURSOR)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 2003, in execute_sql
    cursor = super().execute_sql(result_type)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_full_url (website.tests.test_main.MySeleniumTests.test_post_bug_full_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 214, in test_post_bug_full_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:38131/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Tue, 02 Dec 2025 14:55:09 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 161, in _record_ip\n                    ip_record.save(update_fields=["agent", "count"])\n                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 892, in save\n        self.save_base(\n             ^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 998, in save_base\n            updated = self._save_table(\n                            \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1130, in _save_table\n            updated = self._do_update(\n                             \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/base.py, line 1195, in _do_update\n        return filtered._update(values) > 0\n                     ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1278, in _update\n        return query.get_compiler(self.db).execute_sql(CURSOR)\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 2003, in execute_sql\n        cursor = super().execute_sql(result_type)\n                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\nThe above exception (An error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.) was the direct cause of the following exception:\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/utils/deprecation.py, line 128, in __call__\n            response = self.process_request(request)\n                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/tz_detect/middleware.py, line 15, in process_request\n        tz = request.session.get("detected_tz")\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 74, in get\n        return self._session.get(key, default)\n                   ^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/base.py, line 249, in _get_session\n                self._session_cache = self.load()\n                                           ^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 55, in load\n        s = self._get_session_from_db()\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/contrib/sessions/backends/db.py, line 34, in _get_session_from_db\n            return self.model.objects.get(\n                        \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/manager.py, line 87, in manager_method\n                return getattr(self.get_queryset(), name)(*args, **kwargs)\n                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 645, in get\n        num = len(clone)\n                   ^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 382, in __len__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 91, in __iter__\n        results = compiler.execute_sql(\n                       \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\n[unable to retrieve the current user]\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.887834079.1764687294\'\n_gid\n\'GA1.1.1408911291.1764687294\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\nsessionid\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764687294$o1$g1$t1764687308$j46$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'wk62eRUrqehiNhy3AB5Y2A2eH2k3I9Hx\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'false\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19862744582\'\nGITHUB_RUN_NUMBER\n\'14472\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_f6303b57-638f-4417-ad59-19f89b7d5621\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:38131\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'7c7ab108c9c741c0a6b371b932006df3\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:11547\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000588648\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_b86bcff4-5000-41a0-b069-d10316a9353e\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'38131\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1903\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.hKHyRs/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7f3473ac24d0>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7f348bde5620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'username_email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nACCOUNT_USERNAME_REQUIRED\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7f348a1ff380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 227 tests in 136.351s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Dec 02 '25 14:12 github-actions[bot]

❌ Tests failed

The Django tests found issues that need to be fixed. Please review the test output below and fix the failing tests.

How to run tests locally

# Install dependencies
poetry install --with dev

# Run all tests
poetry run python manage.py test

# Run tests with verbose output
poetry run python manage.py test -v 3

# Run a specific test
poetry run python manage.py test app.tests.TestClass.test_method
Test output (last 100 lines)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1574, in execute_sql
    cursor.execute(sql, params)
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.
DEBUG http://localhost:56473 "POST /session/7bf3f93db991d91aa975a1a1e677f303/url HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56473 "POST /session/7bf3f93db991d91aa975a1a1e677f303/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG POST http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303/element {'using': 'tag name', 'value': 'body'}
DEBUG http://localhost:56473 "POST /session/7bf3f93db991d91aa975a1a1e677f303/element HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":{"element-6066-11e4-a52e-4f735466cecf":"f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278"}} | headers=HTTPHeaderDict({'Content-Length': '127', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
DEBUG GET http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303/element/f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278/text {}
DEBUG http://localhost:56473 "GET /session/7bf3f93db991d91aa975a1a1e677f303/element/f.904853593DEC9CD28016093529B83A43.d.38833DA86A85B1EA518E8234E448A2B0.e.278/text HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":"TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nRequest Method: GET\nRequest URL: http://localhost:39287/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n['/home/runner/work/BLT/BLT',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11',\n '/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload',\n '/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages',\n '/home/runner/work/BLT/BLT']\nServer time: Tue, 02 Dec 2025 16:16:16 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 171, in __call__\n        return self.process_request_sync(request)\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 223, in process_request_sync\n        blocked_agents = self.blocked_agents()\n                              ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 64, in blocked_agents\n        blocked_user_agents = [agent for agent in blocked_user_agents if agent is not None]\n                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 400, in __iter__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 287, in __iter__\n        for row in compiler.results_iter(\n                         \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1525, in results_iter\n            results = self.execute_sql(\n                             \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\nAnonymousUser\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n'GA1.1.831322588.1764692170'\n_gid\n'GA1.1.1371189930.1764692170'\n_gat\n'1'\ncsrftoken\n'********************'\n_ga_TJDHVT49Y0\n'GS2.1.s1764692170$o1$g1$t1764692175$j55$l0$h0'\nMETA\nVariable Value\nACCEPT_EULA\n'Y'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n'/opt/actionarchivecache'\nAGENT_TOOLSDIRECTORY\n'/opt/hostedtoolcache'\nANDROID_HOME\n'/usr/local/lib/android/sdk'\nANDROID_NDK\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_HOME\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_NDK_LATEST_HOME\n'/usr/local/lib/android/sdk/ndk/29.0.14206865'\nANDROID_NDK_ROOT\n'/usr/local/lib/android/sdk/ndk/27.3.13750724'\nANDROID_SDK_ROOT\n'/usr/local/lib/android/sdk'\nANT_HOME\n'/usr/share/ant'\nAZURE_EXTENSION_DIR\n'/opt/az/azcliextensions'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n'1'\nCHROMEWEBDRIVER\n'/usr/local/share/chromedriver-linux64'\nCHROME_BIN\n'/usr/bin/google-chrome'\nCI\n'true'\nCONDA\n'/usr/share/miniconda'\nCONTENT_LENGTH\n''\nCONTENT_TYPE\n'text/plain'\nCSRF_COOKIE\n'YEfa3ahT76UdYfyo9F35ixqTWfyJ90K6'\nDEBIAN_FRONTEND\n'noninteractive'\nDISPLAY\n':99'\nDJANGO_SETTINGS_MODULE\n'blt.settings'\nDOTNET_MULTILEVEL_LOOKUP\n'0'\nDOTNET_NOLOGO\n'1'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n'1'\nEDGEWEBDRIVER\n'/usr/local/share/edge_driver'\nENABLE_RUNNER_TRACING\n'true'\nFORCE_COLOR\n'1'\nGATEWAY_INTERFACE\n'CGI/1.1'\nGECKOWEBDRIVER\n'/usr/local/share/gecko_driver'\nGHCUP_INSTALL_BASE_PREFIX\n'/usr/local'\nGITHUB_ACTION\n'run-tests'\nGITHUB_ACTIONS\n'true'\nGITHUB_ACTION_REF\n''\nGITHUB_ACTION_REPOSITORY\n''\nGITHUB_ACTOR\n'swaparup36'\nGITHUB_ACTOR_ID\n'82692857'\nGITHUB_API_URL\n'********************'\nGITHUB_BASE_REF\n'main'\nGITHUB_ENV\n'/home/runner/work/_temp/_runner_file_commands/set_env_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_EVENT_NAME\n'pull_request_target'\nGITHUB_EVENT_PATH\n'/home/runner/work/_temp/_github_workflow/event.json'\nGITHUB_GRAPHQL_URL\n'https://api.github.com/graphql'\nGITHUB_HEAD_REF\n'error-msg-login-email-verification-ui'\nGITHUB_JOB\n'test'\nGITHUB_OUTPUT\n'/home/runner/work/_temp/_runner_file_commands/set_output_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_PATH\n'/home/runner/work/_temp/_runner_file_commands/add_path_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_REF\n'refs/heads/main'\nGITHUB_REF_NAME\n'main'\nGITHUB_REF_PROTECTED\n'true'\nGITHUB_REF_TYPE\n'branch'\nGITHUB_REPOSITORY\n'OWASP-BLT/BLT'\nGITHUB_REPOSITORY_ID\n'62963654'\nGITHUB_REPOSITORY_OWNER\n'OWASP-BLT'\nGITHUB_REPOSITORY_OWNER_ID\n'160347863'\nGITHUB_RETENTION_DAYS\n'90'\nGITHUB_RUN_ATTEMPT\n'1'\nGITHUB_RUN_ID\n'19865333825'\nGITHUB_RUN_NUMBER\n'14504'\nGITHUB_SERVER_URL\n'https://github.com'\nGITHUB_SHA\n'a613bf46630a482e29bc72b282a54840d512b992'\nGITHUB_STATE\n'/home/runner/work/_temp/_runner_file_commands/save_state_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_STEP_SUMMARY\n'/home/runner/work/_temp/_runner_file_commands/step_summary_29d4442c-f218-4601-9453-ba41771775bb'\nGITHUB_TRIGGERING_ACTOR\n'swaparup36'\nGITHUB_WORKFLOW\n'CI/CD Optimized'\nGITHUB_WORKFLOW_REF\n'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main'\nGITHUB_WORKFLOW_SHA\n'a613bf46630a482e29bc72b282a54840d512b992'\nGITHUB_WORKSPACE\n'/home/runner/work/BLT/BLT'\nGOROOT_1_22_X64\n'/opt/hostedtoolcache/go/1.22.12/x64'\nGOROOT_1_23_X64\n'/opt/hostedtoolcache/go/1.23.12/x64'\nGOROOT_1_24_X64\n'/opt/hostedtoolcache/go/1.24.10/x64'\nGOROOT_1_25_X64\n'/opt/hostedtoolcache/go/1.25.4/x64'\nGRADLE_HOME\n'/usr/share/gradle-9.2.0'\nHOME\n'/home/runner'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n'3650'\nHOMEBREW_NO_AUTO_UPDATE\n'1'\nHTTP_ACCEPT\n'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'\nHTTP_ACCEPT_ENCODING\n'gzip, deflate, br, zstd'\nHTTP_ACCEPT_LANGUAGE\n'en-US,en;q=0.9'\nHTTP_CONNECTION\n'keep-alive'\nHTTP_COOKIE\n'********************'\nHTTP_HOST\n'localhost:39287'\nHTTP_SEC_CH_UA\n'\"Chromium\";v=\"142\", \"Google Chrome\";v=\"142\", \"Not_A Brand\";v=\"99\"'\nHTTP_SEC_CH_UA_MOBILE\n'?0'\nHTTP_SEC_CH_UA_PLATFORM\n'\"Linux\"'\nHTTP_SEC_FETCH_DEST\n'document'\nHTTP_SEC_FETCH_MODE\n'navigate'\nHTTP_SEC_FETCH_SITE\n'none'\nHTTP_SEC_FETCH_USER\n'?1'\nHTTP_UPGRADE_INSECURE_REQUESTS\n'1'\nHTTP_USER_AGENT\n('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) '\n 'HeadlessChrome/142.0.0.0 Safari/537.36')\nINVOCATION_ID\n'dbe2edc611bd4241bf1a646ffc6a27ea'\nImageOS\n'ubuntu24'\nImageVersion\n'20251112.124.1'\nJAVA_HOME\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_11_X64\n'/usr/lib/jvm/temurin-11-jdk-amd64'\nJAVA_HOME_17_X64\n'/usr/lib/jvm/temurin-17-jdk-amd64'\nJAVA_HOME_21_X64\n'/usr/lib/jvm/temurin-21-jdk-amd64'\nJAVA_HOME_25_X64\n'/usr/lib/jvm/temurin-25-jdk-amd64'\nJAVA_HOME_8_X64\n'/usr/lib/jvm/temurin-8-jdk-amd64'\nJOURNAL_STREAM\n'9:11042'\nLANG\n'C.UTF-8'\nLD_LIBRARY_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib'\nLOGNAME\n'runner'\nMEMORY_PRESSURE_WATCH\n'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure'\nMEMORY_PRESSURE_WRITE\n'c29tZSAyMDAwMDAgMjAwMDAwMAA='\nNVM_DIR\n'/home/runner/.nvm'\nPATH\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin'\nPATH_INFO\n'/all_activity/'\nPIPX_BIN_DIR\n'/opt/pipx_bin'\nPIPX_HOME\n'/opt/pipx'\nPKG_CONFIG_PATH\n'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig'\nPOETRY_CACHE_DIR\n'~/.cache/pypoetry'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n'GitHub-Actions-ubuntu24'\nPWD\n'/home/runner/work/BLT/BLT'\nPython2_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython3_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nPython_ROOT_DIR\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nQUERY_STRING\n''\nREMOTE_ADDR\n'127.0.0.1'\nREMOTE_HOST\n''\nREQUEST_METHOD\n'GET'\nRUNNER_ARCH\n'X64'\nRUNNER_DEBUG\n'1'\nRUNNER_ENVIRONMENT\n'github-hosted'\nRUNNER_NAME\n'GitHub Actions 1000589129'\nRUNNER_OS\n'Linux'\nRUNNER_TEMP\n'/home/runner/work/_temp'\nRUNNER_TOOL_CACHE\n'/opt/hostedtoolcache'\nRUNNER_TRACKING_ID\n'github_94d400a1-be76-4e4d-953a-d6a9298123d9'\nRUNNER_WORKSPACE\n'/home/runner/work/BLT'\nSCRIPT_NAME\n''\nSELENIUM_JAR_PATH\n'/usr/share/java/selenium-server.jar'\nSERVER_NAME\n'localhost'\nSERVER_PORT\n'39287'\nSERVER_PROTOCOL\n'HTTP/1.1'\nSERVER_SOFTWARE\n'WSGIServer/0.2'\nSGX_AESM_ADDR\n'1'\nSHELL\n'/bin/bash'\nSHLVL\n'1'\nSWIFT_PATH\n'/usr/share/swift/usr/bin'\nSYSTEMD_EXEC_PID\n'1916'\nTZ\n'UTC'\nUSER\n'runner'\nVCPKG_INSTALLATION_ROOT\n'/usr/local/share/vcpkg'\nVIRTUAL_ENV\n'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11'\nXAUTHORITY\n'/tmp/xvfb-run.asEfFs/Xauthority'\nXDG_CONFIG_HOME\n'/home/runner/.config'\nXDG_RUNTIME_DIR\n'/run/user/1001'\n_\n'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry'\npythonLocation\n'/opt/hostedtoolcache/Python/3.11.2/x64'\nwsgi.errors\n\u003C_io.TextIOWrapper name='\u003Cstderr>' mode='w' encoding='utf-8'>\nwsgi.file_wrapper\n\u003Cclass 'wsgiref.util.FileWrapper'>\nwsgi.input\n\u003Cdjango.core.handlers.wsgi.LimitedStream object at 0x7fde6ea96a10>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n'http'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{'auth.user': \u003Cfunction \u003Clambda> at 0x7fde87ce1620>}\nACCESS_TOKEN\n'********************'\nACCESS_TOKEN_SECRET\n'********************'\nACCOUNT_ADAPTER\n'allauth.account.adapter.DefaultAccountAdapter'\nACCOUNT_AUTHENTICATION_METHOD\n'email'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n'mandatory'\nACCOUNT_FORMS\n{'signup': 'website.forms.SignupFormWithCaptcha'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nADMINS\n(('Admin', '[email protected]'),)\nADMIN_URL\n'admin'\nALLOWED_HOSTS\n['127.0.0.1', 'localhost', '0.0.0.0', '', 'testserver']\nAPPEND_SLASH\nTrue\nAPP_KEY\n'********************'\nAPP_KEY_SECRET\n'********************'\nASGI_APPLICATION\n'blt.asgi.application'\nAUTHENTICATION_BACKENDS\n('django.contrib.auth.backends.ModelBackend',\n 'allauth.account.auth_backends.AuthenticationBackend')\nAUTH_PASSWORD_VALIDATORS\n'********************'\nAUTH_USER_MODEL\n'auth.User'\nAVATAR_PATH\n'media/avatars'\nBASE_DIR\n'/home/runner/work/BLT/BLT'\nBEARER_TOKEN\n'********************'\nBITCOIN_RPC_HOST\n'localhost'\nBITCOIN_RPC_PASSWORD\n'********************'\nBITCOIN_RPC_PORT\n'8332'\nBITCOIN_RPC_USER\n'yourusername'\nBLOG_URL\n'blt.owasp.org/blog/'\nBLUESKY_PASSWORD\n'********************'\nBLUESKY_USERNAME\n'default_username'\nCACHES\n{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',\n             'LOCATION': 'unique-snowflake'}}\nCACHE_MIDDLEWARE_ALIAS\n'default'\nCACHE_MIDDLEWARE_KEY_PREFIX\n'********************'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer',\n             'CONFIG': {'hosts': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n'csrftoken'\nCSRF_COOKIE_PATH\n'/'\nCSRF_COOKIE_SAMESITE\n'Lax'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n'django.views.csrf.csrf_failure'\nCSRF_HEADER_NAME\n'HTTP_X_CSRFTOKEN'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{'default': {'ATOMIC_REQUESTS': False,\n             'AUTOCOMMIT': True,\n             'CONN_HEALTH_CHECKS': False,\n             'CONN_MAX_AGE': 0,\n             'ENGINE': 'django.db.backends.sqlite3',\n             'HOST': '',\n             'NAME': 'file:memorydb_default?mode=memory&cache=shared',\n             'OPTIONS': {},\n             'PASSWORD': '********************',\n             'PORT': '',\n             'TEST': {'CHARSET': None,\n                      'COLLATION': None,\n                      'MIGRATE': True,\n                      'MIRROR': None,\n                      'NAME': None},\n             'TIME_ZONE': None,\n             'USER': ''}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n'N j, Y, P'\nDATETIME_INPUT_FORMATS\n['%Y-%m-%d %H:%M:%S',\n '%Y-%m-%d %H:%M:%S.%f',\n '%Y-%m-%d %H:%M',\n '%m/%d/%Y %H:%M:%S',\n '%m/%d/%Y %H:%M:%S.%f',\n '%m/%d/%Y %H:%M',\n '%m/%d/%y %H:%M:%S',\n '%m/%d/%y %H:%M:%S.%f',\n '%m/%d/%y %H:%M']\nDATE_FORMAT\n'N j, Y'\nDATE_INPUT_FORMATS\n['%Y-%m-%d',\n '%m/%d/%Y',\n '%m/%d/%y',\n '%b %d %Y',\n '%b %d, %Y',\n '%d %b %Y',\n '%d %b, %Y',\n '%B %d %Y',\n '%B %d, %Y',\n '%d %B %Y',\n '%d %B, %Y']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n'.'\nDEFAULT_AUTO_FIELD\n'django.db.models.AutoField'\nDEFAULT_CHARSET\n'utf-8'\nDEFAULT_EXCEPTION_REPORTER\n'django.views.debug.ExceptionReporter'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n'django.views.debug.SafeExceptionReporterFilter'\nDEFAULT_FROM_EMAIL\n'[email protected]'\nDEFAULT_INDEX_TABLESPACE\n''\nDEFAULT_TABLESPACE\n''\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n'********************'\nDOMAIN_NAME\n'blt.owasp.org'\nDOMAIN_NAME_PREVIOUS\n'BLT'\nEMAIL_BACKEND\n'django.core.mail.backends.locmem.EmailBackend'\nEMAIL_HOST\n'localhost'\nEMAIL_HOST_PASSWORD\n'********************'\nEMAIL_HOST_USER\n''\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n'********************'\nEMAIL_SUBJECT_PREFIX\n'[Django] '\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n'BLT \[email protected]>'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n'https://github.com/OWASP/BLT-Extension'\nFACEBOOK_URL\n'https://www.facebook.com/groups/owaspfoundation/'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n['django.core.files.uploadhandler.MemoryFileUploadHandler',\n 'django.core.files.uploadhandler.TemporaryFileUploadHandler']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n'django.forms.renderers.DjangoTemplates'\nFQDN\n'blt.owasp.org'\nGITHUB_TOKEN\n'********************'\nGITHUB_URL\n'https://github.com/OWASP/BLT'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n('django.contrib.admin',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.sites',\n 'django.contrib.humanize',\n 'website',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'allauth.socialaccount.providers.github',\n 'allauth.socialaccount.providers.facebook',\n 'allauth.socialaccount.providers.google',\n 'django_gravatar',\n 'email_obfuscator',\n 'import_export',\n 'comments',\n 'annoying',\n 'rest_framework',\n 'django_filters',\n 'rest_framework.authtoken',\n 'mdeditor',\n 'tz_detect',\n 'star_ratings',\n 'drf_yasg',\n 'captcha',\n 'dj_rest_auth',\n 'dj_rest_auth.registration',\n 'storages',\n 'channels')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n(('en', 'English'),\n ('fr', 'French'),\n ('zh-cn', 'Chinese'),\n ('de', 'German'),\n ('ja', 'Japanese'),\n ('ru', 'Russian'),\n ('hi', 'Hindi'))\nLANGUAGES_BIDI\n['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']\nLANGUAGE_CODE\n'en-us'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n'django_language'\nLANGUAGE_COOKIE_PATH\n'/'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n('/home/runner/work/BLT/BLT/locale',)\nLOGGING\n{'disable_existing_loggers': False,\n 'formatters': {'simple': {'format': '%(levelname)s %(message)s'},\n                'verbose': {'format': '%(levelname)s %(asctime)s %(module)s '\n                                      '%(process)d %(thread)d %(message)s'}},\n 'handlers': {'console': {'class': 'logging.StreamHandler',\n                          'formatter': 'simple',\n                          'level': 'DEBUG',\n                          'stream': 'ext://sys.stdout'},\n              'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',\n                              'level': 'ERROR'}},\n 'loggers': {'django': {'handlers': ['console', 'mail_admins'],\n                        'level': 'INFO',\n                        'propagate': True},\n             'django.server': {'handlers': ['console'],\n                               'level': 'INFO',\n                               'propagate': True},\n             'website': {'handlers': ['console'],\n                         'level': 'DEBUG',\n                         'propagate': True}},\n 'root': {'handlers': ['console'], 'level': 'DEBUG'},\n 'version': 1}\nLOGGING_CONFIG\n'logging.config.dictConfig'\nLOGIN_REDIRECT_URL\n'/'\nLOGIN_URL\n'/accounts/login/'\nLOGOUT_REDIRECT_URL\n'/'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{'default': {'language': 'en',\n             'toolbar': ['undo',\n                         'redo',\n                         '|',\n                         'bold',\n                         'del',\n                         'italic',\n                         'quote',\n                         'ucwords',\n                         'uppercase',\n                         'lowercase',\n                         '|',\n                         'h1',\n                         'h2',\n                         'h3',\n                         'h5',\n                         'h6',\n                         '|',\n                         'list-ul',\n                         'list-ol',\n                         'hr',\n                         '|',\n                         'link',\n                         'reference-link',\n                         'code',\n                         'code-block',\n                         'table',\n                         'datetime',\n                         '||',\n                         'preview',\n                         'fullscreen'],\n             'watch': False}}\nMEDIA_ROOT\n'media'\nMEDIA_URL\n'/media/'\nMESSAGE_STORAGE\n'django.contrib.messages.storage.fallback.FallbackStorage'\nMIDDLEWARE\n['django.contrib.sessions.middleware.SessionMiddleware',\n 'blt.middleware.domain.DomainMiddleware',\n 'django.middleware.locale.LocaleMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.csrf.CsrfViewMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'allauth.account.middleware.AccountMiddleware',\n 'django.middleware.clickjacking.XFrameOptionsMiddleware',\n 'django.middleware.security.SecurityMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware',\n 'blt.middleware.throttling.ThrottlingMiddleware',\n 'tz_detect.middleware.TimezoneMiddleware',\n 'blt.middleware.ip_restrict.IPRestrictMiddleware',\n 'blt.middleware.user_visit_tracking.VisitTrackingMiddleware']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n'F j'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n'********************'\nORD_SERVER_URL\n'http://localhost:9001'\nPASSWORD_HASHERS\n'********************'\nPASSWORD_RESET_TIMEOUT\n'********************'\nPORT\n'8000'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n'blt.owasp.org'\nPROJECT_NAME\n'BLT'\nPROJECT_NAME_LOWER\n'blt'\nPROJECT_NAME_UPPER\n'BLT'\nPROJECT_ROOT\n'/home/runner/work/BLT/BLT/blt'\nREPORT_EMAIL\n'blank'\nREPORT_EMAIL_PASSWORD\n'********************'\nREST_AUTH\n{'SESSION_LOGIN': False}\nREST_FRAMEWORK\n{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',),\n 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),\n 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',\n 'DEFAULT_THROTTLE_RATES': {'anon': '100000/day', 'user': '100000/day'},\n 'PAGE_SIZE': 10}\nROOT_URLCONF\n'blt.urls'\nSCOUT_KEY\n'********************'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n'BLT'\nSECRET_KEY\n'********************'\nSECRET_KEY_FALLBACKS\n'********************'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n'same-origin'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n('HTTP_X_FORWARDED_PROTO', 'https')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n'same-origin'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n'[email protected]'\nSESSION_CACHE_ALIAS\n'default'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n'sessionid'\nSESSION_COOKIE_PATH\n'/'\nSESSION_COOKIE_SAMESITE\n'Lax'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n'django.contrib.sessions.backends.db'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n'django.contrib.sessions.serializers.JSONSerializer'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n'm/d/Y P'\nSHORT_DATE_FORMAT\n'm/d/Y'\nSIGNING_BACKEND\n'django.core.signing.TimestampSigner'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n'allauth.socialaccount.adapter.DefaultSocialAccountAdapter'\nSOCIALACCOUNT_PROVIDERS\n{'facebook': {'EXCHANGE_TOKEN': '********************',\n              'FIELDS': ['id',\n                         'email',\n                         'name',\n                         'first_name',\n                         'last_name',\n                         'verified',\n                         'locale',\n                         'timezone',\n                         'link'],\n              'LOCALE_FUNC': \u003Cfunction \u003Clambda> at 0x7fde860f3380>,\n              'METHOD': 'oauth2',\n              'SCOPE': ['email'],\n              'VERIFIED_EMAIL': False,\n              'VERSION': 'v7.0'},\n 'github': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['user', 'repo']},\n 'google': {'AUTH_PARAMS': {'access_type': 'online'},\n            'SCOPE': ['profile', 'email']}}\nSOCIALACCOUNT_STORE_TOKENS\n'********************'\nSOCIAL_AUTH_GITHUB_KEY\n'********************'\nSOCIAL_AUTH_GITHUB_SECRET\n'********************'\nSTAGING_DOMAIN\n'blt-staging.herokuapp.com'\nSTAR_RATINGS_RATING_MODEL\n'star_ratings.Rating'\nSTATICFILES_DIRS\n('/home/runner/work/BLT/BLT/website/static',)\nSTATICFILES_FINDERS\n['django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder']\nSTATIC_ROOT\n'/home/runner/work/BLT/BLT/blt/staticfiles'\nSTATIC_URL\n'/static/'\nSTORAGES\n{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},\n 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'}}\nSUPERUSERS\n(('admin123', '[email protected]', 'admin@123'),)\nSUPERUSER_EMAIL\n'[email protected]'\nSUPERUSER_PASSWORD\n'********************'\nSUPERUSER_USERNAME\n'admin123'\nTEMPLATES\n[{'APP_DIRS': False,\n  'BACKEND': 'django.template.backends.django.DjangoTemplates',\n  'DIRS': ['/home/runner/work/BLT/BLT/website/templates'],\n  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',\n                                     'django.template.context_processors.request',\n                                     'django.template.context_processors.media',\n                                     'django.contrib.auth.context_processors.auth',\n                                     'django.contrib.messages.context_processors.messages',\n                                     'django.template.context_processors.i18n'],\n              'debug': False,\n              'loaders': [('django.template.loaders.cached.Loader',\n                           ['django.template.loaders.filesystem.Loader',\n                            'django.template.loaders.app_directories.Loader'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n'django.test.runner.DiscoverRunner'\nTHOUSAND_SEPARATOR\n','\nTHROTTLE_EXEMPT_PATHS\n['/admin/', '/static/', '/media/']\nTHROTTLE_LIMITS\n{'GET': 100, 'OTHER': 30, 'POST': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n'P'\nTIME_INPUT_FORMATS\n['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']\nTIME_ZONE\n'UTC'\nTWITTER_URL\n'https://twitter.com/owasp_blt'\nUSERS_AVATAR_PATH\n'avatars'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n'********************'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n'SAMEORIGIN'\nYEAR_MONTH_FORMAT\n'F Y'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code."} | headers=HTTPHeaderDict({'Content-Length': '27804', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request
FAIL
test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url) ... ERROR
DEBUG DELETE http://localhost:56473/session/7bf3f93db991d91aa975a1a1e677f303 {}
DEBUG http://localhost:56473 "DELETE /session/7bf3f93db991d91aa975a1a1e677f303 HTTP/1.1" 200 0
DEBUG Remote response: status=200 | data={"value":null} | headers=HTTPHeaderDict({'Content-Length': '14', 'Content-Type': 'application/json; charset=utf-8', 'cache-control': 'no-cache'})
DEBUG Finished Request

======================================================================
ERROR: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 372, in _setup_and_call
    self._post_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1202, in _post_teardown
    self._fixture_teardown()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/testcases.py", line 1236, in _fixture_teardown
    call_command(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/__init__.py", line 194, in call_command
    return command.execute(*args, **defaults)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/base.py", line 459, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/commands/flush.py", line 52, in handle
    sql_list = sql_flush(
               ^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/management/sql.py", line 11, in sql_flush
    tables = connection.introspection.django_table_names(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 110, in django_table_names
    existing_tables = set(self.table_names(include_views=include_views))
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 57, in table_names
    return get_names(cursor)
           ^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/introspection.py", line 51, in get_names
    for ti in self.get_table_list(cursor)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/sqlite3/introspection.py", line 80, in get_table_list
    cursor.execute(
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py", line 99, in _execute
    self.db.validate_no_broken_transaction()
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py", line 521, in validate_no_broken_transaction
    raise TransactionManagementError(
django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block.

======================================================================
FAIL: test_post_bug_domain_url (website.tests.test_main.MySeleniumTests.test_post_bug_domain_url)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/test/utils.py", line 446, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/BLT/BLT/website/tests/test_main.py", line 226, in test_post_bug_domain_url
    self.assertIn("XSS Attack on Google", body.text)
AssertionError: 'XSS Attack on Google' not found in 'TransactionManagementError at /all_activity/\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nRequest Method: GET\nRequest URL: http://localhost:39287/all_activity/\nDjango Version: 5.1.8\nException Type: TransactionManagementError\nException Value:\nAn error occurred in the current transaction. You can\'t execute queries until the end of the \'atomic\' block.\nException Location: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\nRaised during: website.views.issue.AllIssuesView\nPython Executable: /home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin/python\nPython Version: 3.11.2\nPython Path:\n[\'/home/runner/work/BLT/BLT\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python311.zip\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11\',\n \'/opt/hostedtoolcache/Python/3.11.2/x64/lib/python3.11/lib-dynload\',\n \'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages\',\n \'/home/runner/work/BLT/BLT\']\nServer time: Tue, 02 Dec 2025 16:16:16 +0000\nTraceback Switch to copy-and-paste view\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/core/handlers/exception.py, line 55, in inner\n                response = get_response(request)\n                               ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 171, in __call__\n        return self.process_request_sync(request)\n                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 223, in process_request_sync\n        blocked_agents = self.blocked_agents()\n                              ^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/work/BLT/BLT/blt/middleware/ip_restrict.py, line 64, in blocked_agents\n        blocked_user_agents = [agent for agent in blocked_user_agents if agent is not None]\n                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 400, in __iter__\n        self._fetch_all()\n             ^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 1928, in _fetch_all\n            self._result_cache = list(self._iterable_class(self))\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/query.py, line 287, in __iter__\n        for row in compiler.results_iter(\n                         \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1525, in results_iter\n            results = self.execute_sql(\n                             \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/models/sql/compiler.py, line 1574, in execute_sql\n            cursor.execute(sql, params)\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 122, in execute\n            return super().execute(sql, params)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 79, in execute\n        return self._execute_with_wrappers(\n                    \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 92, in _execute_with_wrappers\n        return executor(sql, params, many, context)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/utils.py, line 99, in _execute\n        self.db.validate_no_broken_transaction()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/lib/python3.11/site-packages/django/db/backends/base/base.py, line 521, in validate_no_broken_transaction\n            raise TransactionManagementError(\n                 ^^^^^^^^^^^^^^^^^^^^^^^^ \n…\nLocal vars\n\n\nRequest information\nUSER\nAnonymousUser\nGET\nNo GET data\nPOST\nNo POST data\nFILES\nNo FILES data\nCOOKIES\nVariable Value\n_ga\n\'GA1.1.831322588.1764692170\'\n_gid\n\'GA1.1.1371189930.1764692170\'\n_gat\n\'1\'\ncsrftoken\n\'********************\'\n_ga_TJDHVT49Y0\n\'GS2.1.s1764692170$o1$g1$t1764692175$j55$l0$h0\'\nMETA\nVariable Value\nACCEPT_EULA\n\'Y\'\nACTIONS_RUNNER_ACTION_ARCHIVE_CACHE\n\'/opt/actionarchivecache\'\nAGENT_TOOLSDIRECTORY\n\'/opt/hostedtoolcache\'\nANDROID_HOME\n\'/usr/local/lib/android/sdk\'\nANDROID_NDK\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_HOME\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_NDK_LATEST_HOME\n\'/usr/local/lib/android/sdk/ndk/29.0.14206865\'\nANDROID_NDK_ROOT\n\'/usr/local/lib/android/sdk/ndk/27.3.13750724\'\nANDROID_SDK_ROOT\n\'/usr/local/lib/android/sdk\'\nANT_HOME\n\'/usr/share/ant\'\nAZURE_EXTENSION_DIR\n\'/opt/az/azcliextensions\'\nBOOTSTRAP_HASKELL_NONINTERACTIVE\n\'1\'\nCHROMEWEBDRIVER\n\'/usr/local/share/chromedriver-linux64\'\nCHROME_BIN\n\'/usr/bin/google-chrome\'\nCI\n\'true\'\nCONDA\n\'/usr/share/miniconda\'\nCONTENT_LENGTH\n\'\'\nCONTENT_TYPE\n\'text/plain\'\nCSRF_COOKIE\n\'YEfa3ahT76UdYfyo9F35ixqTWfyJ90K6\'\nDEBIAN_FRONTEND\n\'noninteractive\'\nDISPLAY\n\':99\'\nDJANGO_SETTINGS_MODULE\n\'blt.settings\'\nDOTNET_MULTILEVEL_LOOKUP\n\'0\'\nDOTNET_NOLOGO\n\'1\'\nDOTNET_SKIP_FIRST_TIME_EXPERIENCE\n\'1\'\nEDGEWEBDRIVER\n\'/usr/local/share/edge_driver\'\nENABLE_RUNNER_TRACING\n\'true\'\nFORCE_COLOR\n\'1\'\nGATEWAY_INTERFACE\n\'CGI/1.1\'\nGECKOWEBDRIVER\n\'/usr/local/share/gecko_driver\'\nGHCUP_INSTALL_BASE_PREFIX\n\'/usr/local\'\nGITHUB_ACTION\n\'run-tests\'\nGITHUB_ACTIONS\n\'true\'\nGITHUB_ACTION_REF\n\'\'\nGITHUB_ACTION_REPOSITORY\n\'\'\nGITHUB_ACTOR\n\'swaparup36\'\nGITHUB_ACTOR_ID\n\'82692857\'\nGITHUB_API_URL\n\'********************\'\nGITHUB_BASE_REF\n\'main\'\nGITHUB_ENV\n\'/home/runner/work/_temp/_runner_file_commands/set_env_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_EVENT_NAME\n\'pull_request_target\'\nGITHUB_EVENT_PATH\n\'/home/runner/work/_temp/_github_workflow/event.json\'\nGITHUB_GRAPHQL_URL\n\'https://api.github.com/graphql\'\nGITHUB_HEAD_REF\n\'error-msg-login-email-verification-ui\'\nGITHUB_JOB\n\'test\'\nGITHUB_OUTPUT\n\'/home/runner/work/_temp/_runner_file_commands/set_output_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_PATH\n\'/home/runner/work/_temp/_runner_file_commands/add_path_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_REF\n\'refs/heads/main\'\nGITHUB_REF_NAME\n\'main\'\nGITHUB_REF_PROTECTED\n\'true\'\nGITHUB_REF_TYPE\n\'branch\'\nGITHUB_REPOSITORY\n\'OWASP-BLT/BLT\'\nGITHUB_REPOSITORY_ID\n\'62963654\'\nGITHUB_REPOSITORY_OWNER\n\'OWASP-BLT\'\nGITHUB_REPOSITORY_OWNER_ID\n\'160347863\'\nGITHUB_RETENTION_DAYS\n\'90\'\nGITHUB_RUN_ATTEMPT\n\'1\'\nGITHUB_RUN_ID\n\'19865333825\'\nGITHUB_RUN_NUMBER\n\'14504\'\nGITHUB_SERVER_URL\n\'https://github.com\'\nGITHUB_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_STATE\n\'/home/runner/work/_temp/_runner_file_commands/save_state_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_STEP_SUMMARY\n\'/home/runner/work/_temp/_runner_file_commands/step_summary_29d4442c-f218-4601-9453-ba41771775bb\'\nGITHUB_TRIGGERING_ACTOR\n\'swaparup36\'\nGITHUB_WORKFLOW\n\'CI/CD Optimized\'\nGITHUB_WORKFLOW_REF\n\'OWASP-BLT/BLT/.github/workflows/ci-cd.yml@refs/heads/main\'\nGITHUB_WORKFLOW_SHA\n\'a613bf46630a482e29bc72b282a54840d512b992\'\nGITHUB_WORKSPACE\n\'/home/runner/work/BLT/BLT\'\nGOROOT_1_22_X64\n\'/opt/hostedtoolcache/go/1.22.12/x64\'\nGOROOT_1_23_X64\n\'/opt/hostedtoolcache/go/1.23.12/x64\'\nGOROOT_1_24_X64\n\'/opt/hostedtoolcache/go/1.24.10/x64\'\nGOROOT_1_25_X64\n\'/opt/hostedtoolcache/go/1.25.4/x64\'\nGRADLE_HOME\n\'/usr/share/gradle-9.2.0\'\nHOME\n\'/home/runner\'\nHOMEBREW_CLEANUP_PERIODIC_FULL_DAYS\n\'3650\'\nHOMEBREW_NO_AUTO_UPDATE\n\'1\'\nHTTP_ACCEPT\n\'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\'\nHTTP_ACCEPT_ENCODING\n\'gzip, deflate, br, zstd\'\nHTTP_ACCEPT_LANGUAGE\n\'en-US,en;q=0.9\'\nHTTP_CONNECTION\n\'keep-alive\'\nHTTP_COOKIE\n\'********************\'\nHTTP_HOST\n\'localhost:39287\'\nHTTP_SEC_CH_UA\n\'"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"\'\nHTTP_SEC_CH_UA_MOBILE\n\'?0\'\nHTTP_SEC_CH_UA_PLATFORM\n\'"Linux"\'\nHTTP_SEC_FETCH_DEST\n\'document\'\nHTTP_SEC_FETCH_MODE\n\'navigate\'\nHTTP_SEC_FETCH_SITE\n\'none\'\nHTTP_SEC_FETCH_USER\n\'?1\'\nHTTP_UPGRADE_INSECURE_REQUESTS\n\'1\'\nHTTP_USER_AGENT\n(\'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) \'\n \'HeadlessChrome/142.0.0.0 Safari/537.36\')\nINVOCATION_ID\n\'dbe2edc611bd4241bf1a646ffc6a27ea\'\nImageOS\n\'ubuntu24\'\nImageVersion\n\'20251112.124.1\'\nJAVA_HOME\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_11_X64\n\'/usr/lib/jvm/temurin-11-jdk-amd64\'\nJAVA_HOME_17_X64\n\'/usr/lib/jvm/temurin-17-jdk-amd64\'\nJAVA_HOME_21_X64\n\'/usr/lib/jvm/temurin-21-jdk-amd64\'\nJAVA_HOME_25_X64\n\'/usr/lib/jvm/temurin-25-jdk-amd64\'\nJAVA_HOME_8_X64\n\'/usr/lib/jvm/temurin-8-jdk-amd64\'\nJOURNAL_STREAM\n\'9:11042\'\nLANG\n\'C.UTF-8\'\nLD_LIBRARY_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib\'\nLOGNAME\n\'runner\'\nMEMORY_PRESSURE_WATCH\n\'/sys/fs/cgroup/system.slice/hosted-compute-agent.service/memory.pressure\'\nMEMORY_PRESSURE_WRITE\n\'c29tZSAyMDAwMDAgMjAwMDAwMAA=\'\nNVM_DIR\n\'/home/runner/.nvm\'\nPATH\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11/bin:/opt/hostedtoolcache/Python/3.11.2/x64/bin:/opt/hostedtoolcache/Python/3.11.2/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin\'\nPATH_INFO\n\'/all_activity/\'\nPIPX_BIN_DIR\n\'/opt/pipx_bin\'\nPIPX_HOME\n\'/opt/pipx\'\nPKG_CONFIG_PATH\n\'/opt/hostedtoolcache/Python/3.11.2/x64/lib/pkgconfig\'\nPOETRY_CACHE_DIR\n\'~/.cache/pypoetry\'\nPOWERSHELL_DISTRIBUTION_CHANNEL\n\'GitHub-Actions-ubuntu24\'\nPWD\n\'/home/runner/work/BLT/BLT\'\nPython2_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython3_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nPython_ROOT_DIR\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nQUERY_STRING\n\'\'\nREMOTE_ADDR\n\'127.0.0.1\'\nREMOTE_HOST\n\'\'\nREQUEST_METHOD\n\'GET\'\nRUNNER_ARCH\n\'X64\'\nRUNNER_DEBUG\n\'1\'\nRUNNER_ENVIRONMENT\n\'github-hosted\'\nRUNNER_NAME\n\'GitHub Actions 1000589129\'\nRUNNER_OS\n\'Linux\'\nRUNNER_TEMP\n\'/home/runner/work/_temp\'\nRUNNER_TOOL_CACHE\n\'/opt/hostedtoolcache\'\nRUNNER_TRACKING_ID\n\'github_94d400a1-be76-4e4d-953a-d6a9298123d9\'\nRUNNER_WORKSPACE\n\'/home/runner/work/BLT\'\nSCRIPT_NAME\n\'\'\nSELENIUM_JAR_PATH\n\'/usr/share/java/selenium-server.jar\'\nSERVER_NAME\n\'localhost\'\nSERVER_PORT\n\'39287\'\nSERVER_PROTOCOL\n\'HTTP/1.1\'\nSERVER_SOFTWARE\n\'WSGIServer/0.2\'\nSGX_AESM_ADDR\n\'1\'\nSHELL\n\'/bin/bash\'\nSHLVL\n\'1\'\nSWIFT_PATH\n\'/usr/share/swift/usr/bin\'\nSYSTEMD_EXEC_PID\n\'1916\'\nTZ\n\'UTC\'\nUSER\n\'runner\'\nVCPKG_INSTALLATION_ROOT\n\'/usr/local/share/vcpkg\'\nVIRTUAL_ENV\n\'/home/runner/.cache/pypoetry/virtualenvs/blt-yuw0N2NF-py3.11\'\nXAUTHORITY\n\'/tmp/xvfb-run.asEfFs/Xauthority\'\nXDG_CONFIG_HOME\n\'/home/runner/.config\'\nXDG_RUNTIME_DIR\n\'/run/user/1001\'\n_\n\'/opt/hostedtoolcache/Python/3.11.2/x64/bin/poetry\'\npythonLocation\n\'/opt/hostedtoolcache/Python/3.11.2/x64\'\nwsgi.errors\n<_io.TextIOWrapper name=\'<stderr>\' mode=\'w\' encoding=\'utf-8\'>\nwsgi.file_wrapper\n<class \'wsgiref.util.FileWrapper\'>\nwsgi.input\n<django.core.handlers.wsgi.LimitedStream object at 0x7fde6ea96a10>\nwsgi.multiprocess\nFalse\nwsgi.multithread\nTrue\nwsgi.run_once\nFalse\nwsgi.url_scheme\n\'http\'\nwsgi.version\n(1, 0)\nSettings\nUsing settings module None\nSetting Value\nABSOLUTE_URL_OVERRIDES\n{\'auth.user\': <function <lambda> at 0x7fde87ce1620>}\nACCESS_TOKEN\n\'********************\'\nACCESS_TOKEN_SECRET\n\'********************\'\nACCOUNT_ADAPTER\n\'allauth.account.adapter.DefaultAccountAdapter\'\nACCOUNT_AUTHENTICATION_METHOD\n\'email\'\nACCOUNT_EMAIL_REQUIRED\nTrue\nACCOUNT_EMAIL_VERIFICATION\n\'mandatory\'\nACCOUNT_FORMS\n{\'signup\': \'website.forms.SignupFormWithCaptcha\'}\nACCOUNT_LOGOUT_ON_GET\nTrue\nADMINS\n((\'Admin\', \'[email protected]\'),)\nADMIN_URL\n\'admin\'\nALLOWED_HOSTS\n[\'127.0.0.1\', \'localhost\', \'0.0.0.0\', \'\', \'testserver\']\nAPPEND_SLASH\nTrue\nAPP_KEY\n\'********************\'\nAPP_KEY_SECRET\n\'********************\'\nASGI_APPLICATION\n\'blt.asgi.application\'\nAUTHENTICATION_BACKENDS\n(\'django.contrib.auth.backends.ModelBackend\',\n \'allauth.account.auth_backends.AuthenticationBackend\')\nAUTH_PASSWORD_VALIDATORS\n\'********************\'\nAUTH_USER_MODEL\n\'auth.User\'\nAVATAR_PATH\n\'media/avatars\'\nBASE_DIR\n\'/home/runner/work/BLT/BLT\'\nBEARER_TOKEN\n\'********************\'\nBITCOIN_RPC_HOST\n\'localhost\'\nBITCOIN_RPC_PASSWORD\n\'********************\'\nBITCOIN_RPC_PORT\n\'8332\'\nBITCOIN_RPC_USER\n\'yourusername\'\nBLOG_URL\n\'blt.owasp.org/blog/\'\nBLUESKY_PASSWORD\n\'********************\'\nBLUESKY_USERNAME\n\'default_username\'\nCACHES\n{\'default\': {\'BACKEND\': \'django.core.cache.backends.locmem.LocMemCache\',\n             \'LOCATION\': \'unique-snowflake\'}}\nCACHE_MIDDLEWARE_ALIAS\n\'default\'\nCACHE_MIDDLEWARE_KEY_PREFIX\n\'********************\'\nCACHE_MIDDLEWARE_SECONDS\n600\nCAPTCHA_TEST_MODE\nTrue\nCHANNEL_LAYERS\n{\'default\': {\'BACKEND\': \'channels_redis.core.RedisChannelLayer\',\n             \'CONFIG\': {\'hosts\': [None]}}}\nCONN_MAX_AGE\n0\nCSRF_COOKIE_AGE\n31449600\nCSRF_COOKIE_DOMAIN\nNone\nCSRF_COOKIE_HTTPONLY\nFalse\nCSRF_COOKIE_NAME\n\'csrftoken\'\nCSRF_COOKIE_PATH\n\'/\'\nCSRF_COOKIE_SAMESITE\n\'Lax\'\nCSRF_COOKIE_SECURE\nFalse\nCSRF_FAILURE_VIEW\n\'django.views.csrf.csrf_failure\'\nCSRF_HEADER_NAME\n\'HTTP_X_CSRFTOKEN\'\nCSRF_TRUSTED_ORIGINS\n[]\nCSRF_USE_SESSIONS\nFalse\nDATABASES\n{\'default\': {\'ATOMIC_REQUESTS\': False,\n             \'AUTOCOMMIT\': True,\n             \'CONN_HEALTH_CHECKS\': False,\n             \'CONN_MAX_AGE\': 0,\n             \'ENGINE\': \'django.db.backends.sqlite3\',\n             \'HOST\': \'\',\n             \'NAME\': \'file:memorydb_default?mode=memory&cache=shared\',\n             \'OPTIONS\': {},\n             \'PASSWORD\': \'********************\',\n             \'PORT\': \'\',\n             \'TEST\': {\'CHARSET\': None,\n                      \'COLLATION\': None,\n                      \'MIGRATE\': True,\n                      \'MIRROR\': None,\n                      \'NAME\': None},\n             \'TIME_ZONE\': None,\n             \'USER\': \'\'}}\nDATABASE_ROUTERS\n[]\nDATA_UPLOAD_MAX_MEMORY_SIZE\n2621440\nDATA_UPLOAD_MAX_NUMBER_FIELDS\n1000\nDATA_UPLOAD_MAX_NUMBER_FILES\n100\nDATETIME_FORMAT\n\'N j, Y, P\'\nDATETIME_INPUT_FORMATS\n[\'%Y-%m-%d %H:%M:%S\',\n \'%Y-%m-%d %H:%M:%S.%f\',\n \'%Y-%m-%d %H:%M\',\n \'%m/%d/%Y %H:%M:%S\',\n \'%m/%d/%Y %H:%M:%S.%f\',\n \'%m/%d/%Y %H:%M\',\n \'%m/%d/%y %H:%M:%S\',\n \'%m/%d/%y %H:%M:%S.%f\',\n \'%m/%d/%y %H:%M\']\nDATE_FORMAT\n\'N j, Y\'\nDATE_INPUT_FORMATS\n[\'%Y-%m-%d\',\n \'%m/%d/%Y\',\n \'%m/%d/%y\',\n \'%b %d %Y\',\n \'%b %d, %Y\',\n \'%d %b %Y\',\n \'%d %b, %Y\',\n \'%B %d %Y\',\n \'%B %d, %Y\',\n \'%d %B %Y\',\n \'%d %B, %Y\']\nDEBUG\nTrue\nDEBUG_PROPAGATE_EXCEPTIONS\nFalse\nDECIMAL_SEPARATOR\n\'.\'\nDEFAULT_AUTO_FIELD\n\'django.db.models.AutoField\'\nDEFAULT_CHARSET\n\'utf-8\'\nDEFAULT_EXCEPTION_REPORTER\n\'django.views.debug.ExceptionReporter\'\nDEFAULT_EXCEPTION_REPORTER_FILTER\n\'django.views.debug.SafeExceptionReporterFilter\'\nDEFAULT_FROM_EMAIL\n\'[email protected]\'\nDEFAULT_INDEX_TABLESPACE\n\'\'\nDEFAULT_TABLESPACE\n\'\'\nDISALLOWED_USER_AGENTS\n[]\nDISCORD_BOT_TOKEN\n\'********************\'\nDOMAIN_NAME\n\'blt.owasp.org\'\nDOMAIN_NAME_PREVIOUS\n\'BLT\'\nEMAIL_BACKEND\n\'django.core.mail.backends.locmem.EmailBackend\'\nEMAIL_HOST\n\'localhost\'\nEMAIL_HOST_PASSWORD\n\'********************\'\nEMAIL_HOST_USER\n\'\'\nEMAIL_PORT\n1025\nEMAIL_SSL_CERTFILE\nNone\nEMAIL_SSL_KEYFILE\n\'********************\'\nEMAIL_SUBJECT_PREFIX\n\'[Django] \'\nEMAIL_TIMEOUT\nNone\nEMAIL_TO_STRING\n\'BLT <[email protected]>\'\nEMAIL_USE_LOCALTIME\nFalse\nEMAIL_USE_SSL\nFalse\nEMAIL_USE_TLS\nFalse\nENABLE_STAGING_REDIRECT\nFalse\nEXTENSION_URL\n\'https://github.com/OWASP/BLT-Extension\'\nFACEBOOK_URL\n\'https://www.facebook.com/groups/owaspfoundation/\'\nFILE_UPLOAD_DIRECTORY_PERMISSIONS\nNone\nFILE_UPLOAD_HANDLERS\n[\'django.core.files.uploadhandler.MemoryFileUploadHandler\',\n \'django.core.files.uploadhandler.TemporaryFileUploadHandler\']\nFILE_UPLOAD_MAX_MEMORY_SIZE\n2621440\nFILE_UPLOAD_PERMISSIONS\n420\nFILE_UPLOAD_TEMP_DIR\nNone\nFIRST_DAY_OF_WEEK\n0\nFIXTURE_DIRS\n[]\nFORCE_SCRIPT_NAME\nNone\nFORMAT_MODULE_PATH\nNone\nFORMS_URLFIELD_ASSUME_HTTPS\nFalse\nFORM_RENDERER\n\'django.forms.renderers.DjangoTemplates\'\nFQDN\n\'blt.owasp.org\'\nGITHUB_TOKEN\n\'********************\'\nGITHUB_URL\n\'https://github.com/OWASP/BLT\'\nIGNORABLE_404_URLS\n[]\nINSTALLED_APPS\n(\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n \'django.contrib.sites\',\n \'django.contrib.humanize\',\n \'website\',\n \'allauth\',\n \'allauth.account\',\n \'allauth.socialaccount\',\n \'allauth.socialaccount.providers.github\',\n \'allauth.socialaccount.providers.facebook\',\n \'allauth.socialaccount.providers.google\',\n \'django_gravatar\',\n \'email_obfuscator\',\n \'import_export\',\n \'comments\',\n \'annoying\',\n \'rest_framework\',\n \'django_filters\',\n \'rest_framework.authtoken\',\n \'mdeditor\',\n \'tz_detect\',\n \'star_ratings\',\n \'drf_yasg\',\n \'captcha\',\n \'dj_rest_auth\',\n \'dj_rest_auth.registration\',\n \'storages\',\n \'channels\')\nINTERNAL_IPS\n[]\nIS_TEST\nTrue\nLANGUAGES\n((\'en\', \'English\'),\n (\'fr\', \'French\'),\n (\'zh-cn\', \'Chinese\'),\n (\'de\', \'German\'),\n (\'ja\', \'Japanese\'),\n (\'ru\', \'Russian\'),\n (\'hi\', \'Hindi\'))\nLANGUAGES_BIDI\n[\'he\', \'ar\', \'ar-dz\', \'ckb\', \'fa\', \'ug\', \'ur\']\nLANGUAGE_CODE\n\'en-us\'\nLANGUAGE_COOKIE_AGE\nNone\nLANGUAGE_COOKIE_DOMAIN\nNone\nLANGUAGE_COOKIE_HTTPONLY\nFalse\nLANGUAGE_COOKIE_NAME\n\'django_language\'\nLANGUAGE_COOKIE_PATH\n\'/\'\nLANGUAGE_COOKIE_SAMESITE\nNone\nLANGUAGE_COOKIE_SECURE\nFalse\nLOCALE_PATHS\n(\'/home/runner/work/BLT/BLT/locale\',)\nLOGGING\n{\'disable_existing_loggers\': False,\n \'formatters\': {\'simple\': {\'format\': \'%(levelname)s %(message)s\'},\n                \'verbose\': {\'format\': \'%(levelname)s %(asctime)s %(module)s \'\n                                      \'%(process)d %(thread)d %(message)s\'}},\n \'handlers\': {\'console\': {\'class\': \'logging.StreamHandler\',\n                          \'formatter\': \'simple\',\n                          \'level\': \'DEBUG\',\n                          \'stream\': \'ext://sys.stdout\'},\n              \'mail_admins\': {\'class\': \'django.utils.log.AdminEmailHandler\',\n                              \'level\': \'ERROR\'}},\n \'loggers\': {\'django\': {\'handlers\': [\'console\', \'mail_admins\'],\n                        \'level\': \'INFO\',\n                        \'propagate\': True},\n             \'django.server\': {\'handlers\': [\'console\'],\n                               \'level\': \'INFO\',\n                               \'propagate\': True},\n             \'website\': {\'handlers\': [\'console\'],\n                         \'level\': \'DEBUG\',\n                         \'propagate\': True}},\n \'root\': {\'handlers\': [\'console\'], \'level\': \'DEBUG\'},\n \'version\': 1}\nLOGGING_CONFIG\n\'logging.config.dictConfig\'\nLOGIN_REDIRECT_URL\n\'/\'\nLOGIN_URL\n\'/accounts/login/\'\nLOGOUT_REDIRECT_URL\n\'/\'\nMANAGERS\n[]\nMDEDITOR_CONFIGS\n{\'default\': {\'language\': \'en\',\n             \'toolbar\': [\'undo\',\n                         \'redo\',\n                         \'|\',\n                         \'bold\',\n                         \'del\',\n                         \'italic\',\n                         \'quote\',\n                         \'ucwords\',\n                         \'uppercase\',\n                         \'lowercase\',\n                         \'|\',\n                         \'h1\',\n                         \'h2\',\n                         \'h3\',\n                         \'h5\',\n                         \'h6\',\n                         \'|\',\n                         \'list-ul\',\n                         \'list-ol\',\n                         \'hr\',\n                         \'|\',\n                         \'link\',\n                         \'reference-link\',\n                         \'code\',\n                         \'code-block\',\n                         \'table\',\n                         \'datetime\',\n                         \'||\',\n                         \'preview\',\n                         \'fullscreen\'],\n             \'watch\': False}}\nMEDIA_ROOT\n\'media\'\nMEDIA_URL\n\'/media/\'\nMESSAGE_STORAGE\n\'django.contrib.messages.storage.fallback.FallbackStorage\'\nMIDDLEWARE\n[\'django.contrib.sessions.middleware.SessionMiddleware\',\n \'blt.middleware.domain.DomainMiddleware\',\n \'django.middleware.locale.LocaleMiddleware\',\n \'django.middleware.common.CommonMiddleware\',\n \'django.middleware.csrf.CsrfViewMiddleware\',\n \'django.contrib.auth.middleware.AuthenticationMiddleware\',\n \'django.contrib.messages.middleware.MessageMiddleware\',\n \'allauth.account.middleware.AccountMiddleware\',\n \'django.middleware.clickjacking.XFrameOptionsMiddleware\',\n \'django.middleware.security.SecurityMiddleware\',\n \'whitenoise.middleware.WhiteNoiseMiddleware\',\n \'blt.middleware.throttling.ThrottlingMiddleware\',\n \'tz_detect.middleware.TimezoneMiddleware\',\n \'blt.middleware.ip_restrict.IPRestrictMiddleware\',\n \'blt.middleware.user_visit_tracking.VisitTrackingMiddleware\']\nMIGRATION_MODULES\n{}\nMONTH_DAY_FORMAT\n\'F j\'\nNUMBER_GROUPING\n0\nOPENAI_API_KEY\n\'********************\'\nORD_SERVER_URL\n\'http://localhost:9001\'\nPASSWORD_HASHERS\n\'********************\'\nPASSWORD_RESET_TIMEOUT\n\'********************\'\nPORT\n\'8000\'\nPREPEND_WWW\nFalse\nPRODUCTION_DOMAIN\n\'blt.owasp.org\'\nPROJECT_NAME\n\'BLT\'\nPROJECT_NAME_LOWER\n\'blt\'\nPROJECT_NAME_UPPER\n\'BLT\'\nPROJECT_ROOT\n\'/home/runner/work/BLT/BLT/blt\'\nREPORT_EMAIL\n\'blank\'\nREPORT_EMAIL_PASSWORD\n\'********************\'\nREST_AUTH\n{\'SESSION_LOGIN\': False}\nREST_FRAMEWORK\n{\'DEFAULT_AUTHENTICATION_CLASSES\': (\'rest_framework.authentication.TokenAuthentication\',),\n \'DEFAULT_FILTER_BACKENDS\': (\'django_filters.rest_framework.DjangoFilterBackend\',),\n \'DEFAULT_PAGINATION_CLASS\': \'rest_framework.pagination.PageNumberPagination\',\n \'DEFAULT_THROTTLE_RATES\': {\'anon\': \'100000/day\', \'user\': \'100000/day\'},\n \'PAGE_SIZE\': 10}\nROOT_URLCONF\n\'blt.urls\'\nSCOUT_KEY\n\'********************\'\nSCOUT_MONITOR\nTrue\nSCOUT_NAME\n\'BLT\'\nSECRET_KEY\n\'********************\'\nSECRET_KEY_FALLBACKS\n\'********************\'\nSECURE_CONTENT_TYPE_NOSNIFF\nTrue\nSECURE_CROSS_ORIGIN_OPENER_POLICY\n\'same-origin\'\nSECURE_HSTS_INCLUDE_SUBDOMAINS\nFalse\nSECURE_HSTS_PRELOAD\nFalse\nSECURE_HSTS_SECONDS\n0\nSECURE_PROXY_SSL_HEADER\n(\'HTTP_X_FORWARDED_PROTO\', \'https\')\nSECURE_REDIRECT_EXEMPT\n[]\nSECURE_REFERRER_POLICY\n\'same-origin\'\nSECURE_SSL_HOST\nNone\nSECURE_SSL_REDIRECT\nFalse\nSENTRY_DSN\nNone\nSERVER_EMAIL\n\'[email protected]\'\nSESSION_CACHE_ALIAS\n\'default\'\nSESSION_COOKIE_AGE\n1209600\nSESSION_COOKIE_DOMAIN\nNone\nSESSION_COOKIE_HTTPONLY\nTrue\nSESSION_COOKIE_NAME\n\'sessionid\'\nSESSION_COOKIE_PATH\n\'/\'\nSESSION_COOKIE_SAMESITE\n\'Lax\'\nSESSION_COOKIE_SECURE\nFalse\nSESSION_ENGINE\n\'django.contrib.sessions.backends.db\'\nSESSION_EXPIRE_AT_BROWSER_CLOSE\nFalse\nSESSION_FILE_PATH\nNone\nSESSION_SAVE_EVERY_REQUEST\nFalse\nSESSION_SERIALIZER\n\'django.contrib.sessions.serializers.JSONSerializer\'\nSETTINGS_MODULE\nNone\nSHORT_DATETIME_FORMAT\n\'m/d/Y P\'\nSHORT_DATE_FORMAT\n\'m/d/Y\'\nSIGNING_BACKEND\n\'django.core.signing.TimestampSigner\'\nSILENCED_SYSTEM_CHECKS\n[]\nSITE_ID\n1\nSOCIALACCOUNT_ADAPTER\n\'allauth.socialaccount.adapter.DefaultSocialAccountAdapter\'\nSOCIALACCOUNT_PROVIDERS\n{\'facebook\': {\'EXCHANGE_TOKEN\': \'********************\',\n              \'FIELDS\': [\'id\',\n                         \'email\',\n                         \'name\',\n                         \'first_name\',\n                         \'last_name\',\n                         \'verified\',\n                         \'locale\',\n                         \'timezone\',\n                         \'link\'],\n              \'LOCALE_FUNC\': <function <lambda> at 0x7fde860f3380>,\n              \'METHOD\': \'oauth2\',\n              \'SCOPE\': [\'email\'],\n              \'VERIFIED_EMAIL\': False,\n              \'VERSION\': \'v7.0\'},\n \'github\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'user\', \'repo\']},\n \'google\': {\'AUTH_PARAMS\': {\'access_type\': \'online\'},\n            \'SCOPE\': [\'profile\', \'email\']}}\nSOCIALACCOUNT_STORE_TOKENS\n\'********************\'\nSOCIAL_AUTH_GITHUB_KEY\n\'********************\'\nSOCIAL_AUTH_GITHUB_SECRET\n\'********************\'\nSTAGING_DOMAIN\n\'blt-staging.herokuapp.com\'\nSTAR_RATINGS_RATING_MODEL\n\'star_ratings.Rating\'\nSTATICFILES_DIRS\n(\'/home/runner/work/BLT/BLT/website/static\',)\nSTATICFILES_FINDERS\n[\'django.contrib.staticfiles.finders.FileSystemFinder\',\n \'django.contrib.staticfiles.finders.AppDirectoriesFinder\']\nSTATIC_ROOT\n\'/home/runner/work/BLT/BLT/blt/staticfiles\'\nSTATIC_URL\n\'/static/\'\nSTORAGES\n{\'default\': {\'BACKEND\': \'django.core.files.storage.FileSystemStorage\'},\n \'staticfiles\': {\'BACKEND\': \'django.contrib.staticfiles.storage.ManifestStaticFilesStorage\'}}\nSUPERUSERS\n((\'admin123\', \'[email protected]\', \'admin@123\'),)\nSUPERUSER_EMAIL\n\'[email protected]\'\nSUPERUSER_PASSWORD\n\'********************\'\nSUPERUSER_USERNAME\n\'admin123\'\nTEMPLATES\n[{\'APP_DIRS\': False,\n  \'BACKEND\': \'django.template.backends.django.DjangoTemplates\',\n  \'DIRS\': [\'/home/runner/work/BLT/BLT/website/templates\'],\n  \'OPTIONS\': {\'context_processors\': [\'django.template.context_processors.debug\',\n                                     \'django.template.context_processors.request\',\n                                     \'django.template.context_processors.media\',\n                                     \'django.contrib.auth.context_processors.auth\',\n                                     \'django.contrib.messages.context_processors.messages\',\n                                     \'django.template.context_processors.i18n\'],\n              \'debug\': False,\n              \'loaders\': [(\'django.template.loaders.cached.Loader\',\n                           [\'django.template.loaders.filesystem.Loader\',\n                            \'django.template.loaders.app_directories.Loader\'])]}}]\nTESTING\nTrue\nTEST_NON_SERIALIZED_APPS\n[]\nTEST_RUNNER\n\'django.test.runner.DiscoverRunner\'\nTHOUSAND_SEPARATOR\n\',\'\nTHROTTLE_EXEMPT_PATHS\n[\'/admin/\', \'/static/\', \'/media/\']\nTHROTTLE_LIMITS\n{\'GET\': 100, \'OTHER\': 30, \'POST\': 50}\nTHROTTLE_WINDOW\n60\nTIME_FORMAT\n\'P\'\nTIME_INPUT_FORMATS\n[\'%H:%M:%S\', \'%H:%M:%S.%f\', \'%H:%M\']\nTIME_ZONE\n\'UTC\'\nTWITTER_URL\n\'https://twitter.com/owasp_blt\'\nUSERS_AVATAR_PATH\n\'avatars\'\nUSE_I18N\nTrue\nUSE_L10N\nTrue\nUSE_THOUSAND_SEPARATOR\nFalse\nUSE_TZ\nTrue\nUSE_X_FORWARDED_HOST\nFalse\nUSE_X_FORWARDED_PORT\nFalse\nUSPTO_API\n\'********************\'\nWSGI_APPLICATION\nNone\nX_FRAME_OPTIONS\n\'SAMEORIGIN\'\nYEAR_MONTH_FORMAT\n\'F Y\'\nYou’re seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.'

----------------------------------------------------------------------
Ran 225 tests in 134.170s

FAILED (failures=1, errors=1)
Destroying test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...

For more information, see the Django testing documentation.

github-actions[bot] avatar Dec 02 '25 16:12 github-actions[bot]