mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-04-03 08:41:35 -07:00
78 lines
2.9 KiB
Markdown
78 lines
2.9 KiB
Markdown
---
|
|
name: testing-workflow
|
|
description: Read before running tests. Detailed instructions for single, standard unit tests (fast), full suites (slow), handling authentication, and obtaining the API Token. Tests must be run when a job is complete.
|
|
---
|
|
|
|
# Testing Workflow
|
|
After code is developed, tests must be run to ensure the integrity of the final result.
|
|
|
|
**Crucial:** Tests MUST be run inside the container to access the correct runtime environment (DB, Config, Dependencies).
|
|
|
|
## 0. Pre-requisites: Environment Check
|
|
|
|
Before running any tests, verify you are inside the development container:
|
|
|
|
```bash
|
|
ls -d /workspaces/NetAlertX
|
|
```
|
|
|
|
**IF** this directory does not exist, you are likely on the host machine. You **MUST** immediately activate the `devcontainer-management` skill to enter the container or run commands inside it.
|
|
|
|
```text
|
|
activate_skill("devcontainer-management")
|
|
```
|
|
|
|
## 1. Full Test Suite (MANDATORY DEFAULT)
|
|
|
|
Unless the user **explicitly** requests "fast" or "quick" tests, you **MUST** run the full test suite. **Do not** optimize for time. Comprehensive coverage is the priority over speed.
|
|
|
|
```bash
|
|
cd /workspaces/NetAlertX; pytest test/
|
|
```
|
|
|
|
## 2. Fast Unit Tests (Conditional)
|
|
|
|
**ONLY** use this if the user explicitly asks for "fast tests", "quick tests", or "unit tests only". This **excludes** slow tests marked with `docker` or `feature_complete`.
|
|
|
|
```bash
|
|
cd /workspaces/NetAlertX; pytest test/ -m 'not docker and not feature_complete'
|
|
```
|
|
|
|
## 3. Running Specific Tests
|
|
|
|
To run a specific file or folder:
|
|
|
|
```bash
|
|
cd /workspaces/NetAlertX; pytest test/<path_to_test>
|
|
```
|
|
|
|
*Example:*
|
|
```bash
|
|
cd /workspaces/NetAlertX; pytest test/api_endpoints/test_mcp_extended_endpoints.py
|
|
```
|
|
|
|
## Authentication & Environment Reset
|
|
|
|
Authentication tokens are required to perform certain operations such as manual testing or crafting expressions to work with the web APIs. After making code changes, you MUST reset the environment to ensure the new code is running and verify you have the latest `API_TOKEN`.
|
|
|
|
1. **Reset Environment:** Run the setup script inside the container.
|
|
```bash
|
|
bash /workspaces/NetAlertX/.devcontainer/scripts/setup.sh
|
|
```
|
|
2. **Wait for Stabilization:** Wait at least 5 seconds for services (nginx, python server, etc.) to start.
|
|
```bash
|
|
sleep 5
|
|
```
|
|
3. **Obtain Token:** Retrieve the current token from the container.
|
|
```bash
|
|
python3 -c "from helper import get_setting_value; print(get_setting_value('API_TOKEN'))"
|
|
```
|
|
|
|
The retrieved token MUST be used in all subsequent API or test calls requiring authentication.
|
|
|
|
### Troubleshooting
|
|
|
|
If tests fail with 403 Forbidden or empty tokens:
|
|
1. Verify server is running and use the setup script (`/workspaces/NetAlertX/.devcontainer/scripts/setup.sh`) if required.
|
|
2. Verify `app.conf` inside the container: `cat /data/config/app.conf`
|
|
3. Verify Python can read it: `python3 -c "from helper import get_setting_value; print(get_setting_value('API_TOKEN'))"` |