# 🚀 Exotec Error Server

Serveur de simulation d'erreurs HTTP pour tests automatisés Exotec.

## 📦 Installation

### Installation globale
```bash
npm install -g exotec-error-server
```

### Installation locale
```bash
npm install exotec-error-server
```

## 🚀 Utilisation

### CLI (ligne de commande)

```bash
# Mode normal (pas d'erreur)
exotec-server

# Spécifier le code d'erreur et le port
exotec-server --error 502 --port 8080

# Toutes les options
exotec-server --error 503 --port 3000 --host localhost --verbose
```

### API Programmatique

```typescript
import { startServer } from 'exotec-error-server';

// Démarrer le serveur
const server = await startServer({
  errorMode: 502,
  port: 3000,
  host: '0.0.0.0'
});

// Arrêter le serveur
await server.stop();
```

## 🔧 Codes d'erreur supportés

| Code | Description |
|------|-------------|
| 0    | Mode normal (pas d'erreur) |
| 502  | Bad Gateway |
| 503  | Service Unavailable |
| 504  | Gateway Timeout |

## 🛠️ API

### `startServer(config: ServerConfig): Promise<ServerInstance>`

Démarre le serveur avec la configuration spécifiée.

#### Paramètres
- `errorMode`: Code d'erreur HTTP (0, 502, 503, 504)
- `port`: Port d'écoute
- `host`: Adresse d'écoute (optionnel, défaut: '0.0.0.0')

#### Retourne
Promise qui résout avec une instance de serveur contenant:
- `server`: Instance du serveur HTTP
- `stop()`: Fonction pour arrêter le serveur
- `getConfig()`: Fonction pour obtenir la configuration

## 📝 Exemples

### Test avec curl
```bash
# Démarrer le serveur
exotec-server --error 502 --port 3000

# Tester dans un autre terminal
curl -X POST http://localhost:3000/test \
  -H "Content-Type: application/json" \
  -d '{"test": "data"}'
# Retourne: HTTP 502 Bad Gateway
```

### Utilisation dans les tests Playwright
```typescript
import { test, expect } from '@playwright/test';
import { startServer } from 'exotec-error-server';

test('test avec simulation d\'erreur 502', async () => {
  const server = await startServer({ 
    errorMode: 502, 
    port: 3000 
  });
  
  // Vos tests ici...
  // Le serveur retournera toujours 502 pour les requêtes POST
  
  await server.stop();
});
```

### Capture de requêtes
```typescript
import { startServer, getCapturedRequests, clearCapturedRequests } from 'exotec-error-server';

// Mode normal pour capturer les requêtes
const server = await startServer({ errorMode: 0, port: 3000 });

// Faire vos tests...

// Récupérer les requêtes capturées
const requests = getCapturedRequests();
console.log('Requêtes reçues:', requests);

// Nettoyer
clearCapturedRequests();
await server.stop();
```

## 🧪 Tests

```bash
npm test
```

## 🏗️ Développement

```bash
# Cloner le projet
git clone <repository-url>
cd exotec-error-server

# Installer les dépendances
npm install

# Développement avec rechargement automatique
npm run dev -- 502 3000

# Compiler
npm run build

# Tester localement
npm link
exotec-server --help
```

## 📄 Licence

MIT © Exotec