Skip to main content

Test de l'API de Smarthands

Ce guide fournit des approches et des exemples de tests spécifiques pour l'API Smarthands d'Equinix, en s'appuyant sur les principes généraux de API Testing.

Aperçu de l'API Smarthands

L'API Smarthands vous permet de demander et de gérer de manière programmatique divers services de mains distantes dans les centres de données IBX d'Equinix.\NVoici le mappage de l'API ECP avec les types de smarthands pris en charge :

Smarthands TypeDescriptionECP API Mapping
Request photos/documentationRequest cage-related photos or documentationhttps://api.equinix.com/v1/orders/smarthands/pictures
SmartHand OtherRequest a Smart Hands order not listed abovehttps://api.equinix.com/v1/orders/smarthands/other
SmartHand Cage Clean upRequest a cage clean uphttps://api.equinix.com/v1/orders/smarthands/cageCleanup
SmartHand Shipment UnpackUnpack inbound shipment and dispose packaginghttps://api.equinix.com/v1/orders/smarthands/shipmentUnpack
SmartHand Cage EscortRequest IBX security escorthttps://api.equinix.com/v1/orders/smarthands/cageEscort
Equipment InstallRequest equipment installationhttps://api.equinix.com/v1/orders/smarthands/equipmentInstall
Request CablesRequest cableshttps://api.equinix.com/v1/orders/smarthands/cableRequest
Locate PackagesRequest package locationhttps://api.equinix.com/v1/orders/smarthands/locatePackage
Run Patch CablesRequest cables run between deviceshttps://api.equinix.com/v1/orders/smarthands/runJumperCable
Patch Cable InstallRequest patch cable installationhttps://api.equinix.com/v1/orders/smarthands/patchCableInstall
Move Patch CableMove patch cables between deviceshttps://api.equinix.com/v1/orders/smarthands/moveJumperCable
Patch Cable RemovalRemove patch cableshttps://api.equinix.com/v1/orders/smarthands/patchCableRemoval
Large SmartHands OrderLarge cable/equipment requestshttps://api.equinix.com/v1/orders/smarthands/largeOrder

Processus de test Smarthands

Avant de tester l'API Smarthands, assurez-vous que vous avez :

  • Identifiants API valides avec les permissions appropriées
  • Accès aux sites IBX d'Equinix où vous avez du matériel
  • Familiarité avec le flux de travail des tickets de service

Créer une demande de service Smarthands

import requests
import json

# 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 Smarthands request
base_url = "https://api.equinix.com/v1"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

# Example: Create a cage escort request
request_payload = {
"customerReferenceNumber": "RSS41244",
"purchaseOrder": {
"number": "123455",
"purchaseOrderType": "EXISTING"
},
"ibxLocation": {
"ibx": "AM1",
"cages": [
{
"cage": "AM1:01:001MC3",
"accountNumber": "12345",
"cabinets": [
"AM1:01:001MC3:0102"
]
}
]
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "jondoe@test.com"
},
{
"contactType": "NOTIFICATION",
"userName": "jondoe@test.com"
},
{
"contactType": "TECHNICAL",
"name": "John Doe",
"workPhone": "1111111",
"workPhonePrefToCall": "ANYTIME",
"mobilePhone": "1111111",
"mobilePhonePrefToCall": "ANYTIME"
}
],
"schedule": {
"scheduleType": "STANDARD",
"requestedStartDate": "2017-04-05T12:00:00Z",
"requestedCompletionDate": "2017-04-05T12:00:00Z"
},
"attachments": [
{
"id": "eb9ab7e9-3785-41e4-af24-112dff",
"name": "eb9ab7e9-3785-41e4-af24-asfsa5424"
}
],
"serviceDetails": {
"durationVisit": "30 Minutes",
"openCabinetForVisitor": false,
"scopeOfWork": "Scope of work",
"supervisionReqForVisitor": false,
"workVisitOrderNumber": "1-108050984499"
}
}

create_response = requests.post(
f"{base_url}/orders/smarthands/cageEscort",
headers=headers,
data=json.dumps(request_payload)
)

# Verify response
assert create_response.status_code == 201, f"Failed to create request: {create_response.text}"
order_number = create_response.json()["OrderNumber"]

print(f"Successfully created Smarthands request with order number: {order_number}")

Vérification du statut de la demande

# Test retrieving request status
status_response = requests.get(
f"https://api.equinix.com/colocations/v2/orders/{order_number}",
headers=headers
)

assert status_response.status_code == 200, f"Failed to retrieve status: {status_response.text}"
status = status_response.json()["status"]

print(f"Current request status: {status}")

Test des scénarios d'erreur

Testez toujours la gestion des erreurs pour votre mise en œuvre de l'API :

# Test with invalid location
invalid_payload = {
"customerReferenceNumber": "RSS41244",
"purchaseOrder": {
"number": "123455",
"purchaseOrderType": "EXISTING"
},
"ibxLocation": {
"ibx": "INVALID", # Invalid IBX code
"cages": [
{
"cage": "INVALID:01:001MC3",
"accountNumber": "12345",
"cabinets": [
"INVALID:01:001MC3:0102"
]
}
]
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "jondoe@test.com"
}
],
"schedule": {
"scheduleType": "STANDARD",
"requestedStartDate": "2025-08-01T10:00:00Z",
"requestedCompletionDate": "2025-08-01T12:00:00Z"
},
"serviceDetails": {
"durationVisit": "30 Minutes",
"openCabinetForVisitor": false,
"scopeOfWork": "Test invalid IBX location",
"supervisionReqForVisitor": false
}
}

error_response = requests.post(
f"{base_url}/orders/smarthands/cageEscort",
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}"
assert "Invalid IBX location" in error_response.text, "Error message not as expected"

Meilleures pratiques pour les tests d'API Smarthands

Remarque importante: L'API d'Equinix est un système de production qui crée des demandes d'expédition réelles. 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. Commencez par les opérations en lecture seule: Testez d'abord les points d'extrémité GET avant de créer/modifier des ressources.
  3. Utilisez des demandes de test clairement identifiées: Faites toujours précéder les descriptions de "TEST :" pour aider les opérateurs à identifier les demandes de test.
  4. Nettoyez les ressources de test: Annulez tous les envois de test immédiatement après leur création réussie
  5. Fournissez des détails complets: Fournissez des informations complètes dans vos demandes
  6. Numéros de suivi: Fournissez toujours des numéros de suivi précis pour les envois entrants afin de garantir un traitement adéquat.
  7. Informations de contact: Assurez-vous que les informations de contact sont à jour et que la personne est disponible pendant la fenêtre de service prévue.
  8. Détails de la description: Décrivez vos besoins de manière détaillée mais concise afin d'aider le personnel de l'établissement à répondre efficacement à votre demande.

Considérations sur l'automatisation

Lorsque vous construisez l'automatisation autour de l'API Smarthands :

  • Mettez en œuvre une gestion des erreurs et des tentatives appropriées
  • Envisagez de mettre en place des récepteurs webhook pour les mises à jour d'état.
  • Intégrez la validation des fenêtres temporelles et de la disponibilité des services.
  • Incluez l'enregistrement d'audit de toutes les interactions API
  • Veillez à ce que les informations de suivi soient automatiquement incluses dans toutes les demandes relatives à l'expédition.
  • Validez la disponibilité des contacts pendant les fenêtres de service programmées.

Ressources supplémentaires

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