Test de l'API sur les tickets de dérangement
Ce guide fournit des approches et des exemples de tests spécifiques pour l'API Equinix Trouble Ticket, en s'appuyant sur les principes généraux de API Testing.
Vue d'ensemble de l'API "Trouble Ticket
L'API Trouble Ticket permet aux clients d'interagir de manière programmatique avec l'assistance d'Equinix, en créant des tickets d'assistance pour des problèmes ayant un impact sur le service dans différentes catégories :
- Problèmes de connexion croisée
- Problèmes de connectivité réseau
- Incidents liés à l'électricité
- Préoccupations environnementales
- Défaillances matérielles
- Incidents de sécurité
- Managed Solutions support
Types de problèmes
L'API "Trouble Ticket" prend en charge différentes catégories de problèmes, chacune avec des codes de problèmes spécifiques :
| Problem Category | Description | Example Codes |
|---|---|---|
| Cross Connect | Physical cable connection issues | cc01, cc02, cc03 |
| Network | Network connectivity problems | net01, net02 |
| Environment | HVAC, cooling, environmental issues | env01, env02, env03, env04 |
| Hardware | Equipment and hardware failures | hdw01 |
| Power | Power-related incidents | pwr01, pwr02 |
| Security | Security access and badge issues | sec01, sec02 |
| Managed Services | Managed service support requests | ms01-ms13 |
| SmartView | SmartView monitoring issues | sv01-sv05 |
Workflow de test des tickets d'incident
Avant de tester l'API "Trouble Ticket", assurez-vous que vous avez :
- Un compte Equinix Developer avec des autorisations pour les tickets d'incident.
- Identifiants API valides (ID client et secret client)
- Accès aux emplacements et aux cages IBX appropriés
- Compréhension de API Authentication
Création d'une commande de ticket de dérangement
import requests
import json
from datetime import datetime, timedelta
# Setup authentication
auth_url = "https://api.equinix.com/oauth2/v1/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
auth_response = requests.post(auth_url, data=auth_payload)
token = auth_response.json()["access_token"]
# Test creating a trouble ticket order
base_url = "https://api.equinix.com"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# Example: Create a network connectivity trouble ticket
request_payload = {
"customerReferenceNumber": "TT-TEST-001",
"ibxLocation": {
"ibx": "CH1",
"cages": [
{
"cage": "CH1:05:000750",
"accountNumber": "12345",
"cabinets": [
"CH1:05:000750:01"
]
}
]
},
"serviceDetails": {
"incidentDateTime": (datetime.utcnow() - timedelta(hours=1)).isoformat() + "Z",
"problemCode": "net01", # Network connectivity issue
"additionalDetails": "TEST: Network connectivity issue - API testing"
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "test_ordering_user"
},
{
"contactType": "NOTIFICATION",
"userName": "test_notification_user"
},
{
"contactType": "TECHNICAL",
"userName": "test_technical_user",
"workPhone": "555-0123",
"workPhonePrefToCall": "ANYTIME"
}
]
}
create_response = requests.post(
f"{base_url}/v1/orders/troubleticket",
headers=headers,
data=json.dumps(request_payload)
)
# Verify response
assert create_response.status_code == 201, f"Failed to create trouble ticket: {create_response.text}"
order_number = create_response.json()["OrderNumber"]
print(f"Successfully created trouble ticket order: {order_number}")
Validation du lieu de test et du type de problème
# Test retrieving available locations
locations_response = requests.get(
f"{base_url}/v1/orders/troubleticket/locations",
headers=headers
)
assert locations_response.status_code == 200, f"Failed to retrieve locations: {locations_response.text}"
locations = locations_response.json()["locations"]
print(f"Available locations: {len(locations)}")
# Test retrieving problem types
types_response = requests.get(
f"{base_url}/v1/orders/troubleticket/types",
headers=headers
)
assert types_response.status_code == 200, f"Failed to retrieve problem types: {types_response.text}"
problem_types = types_response.json()["troubleTicketTypes"]
print(f"Available problem types: {len(problem_types)}")
Test des scénarios d'erreur
Testez toujours la gestion des erreurs pour votre mise en œuvre de l'API :
import requests
import json
from datetime import datetime, timedelta
# Setup authentication
auth_url = "https://api.equinix.com/oauth2/v1/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
auth_response = requests.post(auth_url, data=auth_payload)
token = auth_response.json()["access_token"]
# Prepare request
base_url = "https://api.equinix.com"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# Test with invalid problem code
invalid_payload = {
"customerReferenceNumber": "TT-ERROR-TEST-001",
"ibxLocation": {
"ibx": "CH1",
"cages": [{"cage": "CH1:05:000750", "accountNumber": "12345"}]
},
"serviceDetails": {
"incidentDateTime": (datetime.utcnow() - timedelta(hours=1)).isoformat() + "Z",
"problemCode": "INVALID_CODE", # Invalid problem code
"additionalDetails": "TEST: Invalid problem code test"
},
"contacts": [
{"contactType": "ORDERING", "userName": "test_user"},
{"contactType": "NOTIFICATION", "userName": "test_user"}
]
}
error_response = requests.post(
f"{base_url}/v1/orders/troubleticket",
headers=headers,
data=json.dumps(invalid_payload)
)
# Verify error response
assert error_response.status_code == 400, f"Expected error but got: {error_response.status_code}"
error_data = error_response.json()
assert "errors" in error_data, "Error response format not as expected"
print("Successfully validated error handling for invalid problem code")
print(json.dumps(error_data, indent=2))
Meilleures pratiques pour les tests d'API
**Remarque importante :**L'API Equinix Trouble Ticket est un système de production qui crée de véritables tickets d'assistance. Suivez toujours ces meilleures pratiques de test pour vous assurer que vous ne créez pas de travail opérationnel involontaire.
- Créez un compte de test dédié: Demandez un compte séparé pour les tests si possible
- Utilisez des demandes de test clairement identifiées: Faites toujours précéder les descriptions de "TEST :" pour aider le personnel d'assistance à identifier les demandes de test.
- Utilisez des heures d'incident valides: Assurez-vous que la date et l'heure de l'incident sont correctement formatées et qu'elles ne sont pas dans le futur.
- Valider l'accès aux emplacements: Utilisez le point de terminaison des emplacements pour vérifier les emplacements IBX accessibles avant de créer des tickets.
- Testez avec des codes de problème valides: Validez toujours les codes de problème en utilisant le point de terminaison des types
- Indiquez les coordonnées complètes des personnes à contacter: Assurez-vous que tous les contacts nécessaires (COMMANDE, NOTIFICATION) sont fournis.
- Nettoyer les ressources de test: Travaillez avec le support pour fermer tous les tickets de test immédiatement après leur création.
- Testez la gestion des erreurs: Vérifiez la bonne gestion des erreurs et les codes de réponse
Considérations sur l'automatisation
Lorsque vous construisez une automatisation autour de l'API Trouble Ticket :
- Mettez en œuvre une gestion des erreurs et des tentatives appropriées en cas d'échec de l'API.
- Construisez une validation pour les champs obligatoires et les formats de données
- Inclure l'enregistrement d'audit de toutes les activités de création de tickets
- Veillez à ce que les heures d'incident soient saisies et formatées avec précision
- Validez les informations relatives à la localisation et au code de problème avant de les soumettre
- Envisagez de mettre en place des flux d'approbation pour la création de tickets de production.
- Incluez des informations de contact complètes pour une résolution plus rapide