Skip to main content

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 CategoryDescriptionExample Codes
Cross ConnectPhysical cable connection issuescc01, cc02, cc03
NetworkNetwork connectivity problemsnet01, net02
EnvironmentHVAC, cooling, environmental issuesenv01, env02, env03, env04
HardwareEquipment and hardware failureshdw01
PowerPower-related incidentspwr01, pwr02
SecuritySecurity access and badge issuessec01, sec02
Managed ServicesManaged service support requestsms01-ms13
SmartViewSmartView monitoring issuessv01-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.

  1. Créez un compte de test dédié: Demandez un compte séparé pour les tests si possible
  2. 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.
  3. 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.
  4. 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.
  5. Testez avec des codes de problème valides: Validez toujours les codes de problème en utilisant le point de terminaison des types
  6. Indiquez les coordonnées complètes des personnes à contacter: Assurez-vous que tous les contacts nécessaires (COMMANDE, NOTIFICATION) sont fournis.
  7. Nettoyer les ressources de test: Travaillez avec le support pour fermer tous les tickets de test immédiatement après leur création.
  8. 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

Ressources supplémentaires

Cette page vous a-t-elle été utile ?