Files
Pennyzo-Frontend/scripts/README.md
ectasy663 ebb7fcaac8 Fix API endpoint configuration with environment-aware URLs
- Add environment-based API URL configuration (dev: localhost:8000, prod: api.pennyzo.com)
- Update PennyzoApiService to use centralized config with timeout settings
- Fix API status checker scripts to load .env variables using dotenv
- Add environment management scripts (set-env.ps1) with npm shortcuts
- Create comprehensive configuration testing and validation tools
- Add TypeScript definitions for Vite environment variables
- Update all documentation with new environment configuration instructions
- Install dotenv package for Node.js environment variable loading
- All APIs now correctly use environment-appropriate URLs automatically
2025-09-25 14:40:20 +05:30

288 lines
6.9 KiB
Markdown

# Pennyzo API Status Checker
Node.js scripts for checking the status of all primary endpoints of the Pennyzo General API.
This package includes two versions of the script:
- `api-status-checker.js` - Basic version with console output
- `api-status-checker-extended.js` - Extended version with report generation and additional features
## Overview
These scripts test both public and authenticated endpoints of the Pennyzo General API and log the results to the console. The scripts perform the following checks:
### Public Endpoints:
- GET `/system/health`
- GET `/registration/company/identity-rules`
### Authentication Flow:
- POST `/auth/login` (using placeholder credentials)
### Authenticated Endpoints (only if login is successful):
- GET `/auth/me`
- GET `/users/profile`
- GET `/users/stats`
- GET `/users/membership-info`
## Requirements
- Node.js (version 14 or higher recommended)
- npm packages:
- axios (for HTTP requests)
- chalk (for colorful console output)
## Installation
Both required packages are already installed in the project.
## Environment Configuration
The API endpoints are now environment-aware. By default:
- **Development**: `http://localhost:8000`
- **Production**: `https://api.pennyzo.com/api/v1/general`
### Setting Environment
Use the following npm scripts to configure your environment:
```bash
# Set development environment (localhost:8000)
npm run env:dev
# Set production environment (api.pennyzo.com)
npm run env:prod
# Show current environment configuration
npm run env:show
```
Alternatively, manually create a `.env` file:
```bash
# For development
VITE_API_BASE_URL=http://localhost:8000
NODE_ENV=development
# For production
VITE_API_BASE_URL=https://api.pennyzo.com/api/v1/general
NODE_ENV=production
```
## Usage
### Using npm Scripts (Recommended)
The following npm scripts are available for checking API status:
```bash
# Run basic API check
npm run api:check
# Run extended API check with report generation
npm run api:check:extended
# Run extended API check with verbose output
npm run api:check:verbose
# Run extended API check with real credentials
npm run api:check:real
```
### Direct Node Execution
To run the scripts directly with Node:
#### Basic Script
```powershell
node scripts/api-status-checker.js
```
#### Extended Script
```powershell
node scripts/api-status-checker-extended.js [options]
```
Available options:
- `--verbose`: Show detailed response data
- `--no-report`: Don't save a report file
- `--use-real-credentials`: Use credentials from environment variables
### Helper PowerShell Script
For additional flexibility, a PowerShell helper script is provided:
```powershell
.\scripts\run-api-check.ps1 [-Verbose] [-NoReport] [-UseRealCredentials] [-Extended]
```
Examples:
```powershell
# Run basic script
.\scripts\run-api-check.ps1
# Run extended script with verbose output
.\scripts\run-api-check.ps1 -Extended -Verbose
# Run extended script with real credentials
.\scripts\run-api-check.ps1 -Extended -UseRealCredentials
```
## Configuration
### Basic Configuration
You can modify the test credentials in the script to use valid credentials for testing authenticated endpoints:
```javascript
// Test credentials (replace with actual test credentials if available)
const TEST_CREDENTIALS = {
email: "your-test-email@example.com",
password: "your-test-password",
};
```
### Environment Variables
For the extended script, you can set environment variables for secure credential management:
```powershell
$env:PENNYZO_TEST_EMAIL = "your-test-email@example.com"
$env:PENNYZO_TEST_PASSWORD = "your-test-password"
```
Then run with the `--use-real-credentials` flag:
```powershell
node scripts/api-status-checker-extended.js --use-real-credentials
```
## Output
The script provides detailed output for each API call:
- Endpoint being tested
- HTTP method
- Status (SUCCESS or FAILED)
- HTTP status code
- Error details (if applicable)
For the system health endpoint, additional information is displayed:
- API Status
- Environment
- Version
- Message
## Features
### Basic Script
- Tests both public and authenticated endpoints
- Colorful console output with chalk
- Clear status indicators
### Extended Script (Additional Features)
- Saves detailed reports to JSON files (in a `reports` folder)
- Provides response time measurements
- Supports command line arguments
- Environment variable support for credentials
- Verbose mode for detailed output
- Summary statistics
## Example Output
### Basic Script Output
```
=== Pennyzo General API Status Checker ===
--- Testing Public Endpoints ---
GET /system/health: SUCCESS (200)
API Status: operational
Environment: production
Version: 1.0.0
Message: Service is healthy
GET /registration/company/identity-rules: SUCCESS (200)
--- Testing Authentication Flow ---
POST /auth/login: FAILED (401)
Error: Request failed with status code 401
Details: {
"error": {
"type": "unauthorized",
"code": 401,
"message": "Invalid credentials"
}
}
Authentication failed. Cannot test authenticated endpoints.
Note: This is expected if using placeholder credentials.
To test authenticated endpoints, update the TEST_CREDENTIALS with valid credentials.
=== API Status Check Complete ===
```
### Extended Script Output
```
=== Pennyzo General API Status Checker ===
Timestamp: 2025-09-25T10:15:30.123Z
Base URL: https://api.pennyzo.com/api/v1/general
Save Report: Yes
Verbose Mode: Yes
Using Real Credentials: No
--- Testing Public Endpoints ---
GET /system/health: SUCCESS (200) [342ms]
API Status: operational
Environment: production
Version: 1.0.0
Message: Service is healthy
GET /registration/company/identity-rules: SUCCESS (200) [285ms]
--- Testing Authentication Flow ---
POST /auth/login: FAILED (401) [520ms]
Error: Request failed with status code 401
Authentication failed. Cannot test authenticated endpoints.
Note: This is expected if using placeholder credentials.
To test authenticated endpoints, use the --use-real-credentials flag
and set PENNYZO_TEST_EMAIL and PENNYZO_TEST_PASSWORD environment variables.
=== API Status Check Summary ===
Total endpoints checked: 3
Successful: 2
Failed: 1
Success rate: 66.7%
Total time: 1.15 seconds
Report saved to: c:\Users\naman\OneDrive\Desktop\Pennyzo Web\reports\api-status-2025-09-25T10-15-30.123Z.json
=== API Status Check Complete ===
```
## Notes
- The scripts use placeholder credentials by default, which will likely fail authentication. This is expected behavior.
- To properly test authenticated endpoints, use real credentials via environment variables or direct script modification.
- The extended script saves reports to a `reports` directory for historical tracking of API status.
- All API calls and their results are logged to the console and (optionally) to report files.
- Response times are logged to help identify slow endpoints.
- A HTML report viewer is included at `reports/report-viewer.html` for visualizing the JSON reports.