Pruebas de API de Smarthands
Esta guía proporciona enfoques y ejemplos de pruebas específicas para la API Smarthands de Equinix, basándose en los principios generales de Pruebas de API.
Visión general de la API de Smarthands
La API Smarthands le permite solicitar y gestionar de forma programática diversos servicios de manos remotas en los centros de datos Equinix IBX.\NAquí tiene la correspondencia de la API ECP con los tipos de smarthands admitidos:
Flujo de trabajo de pruebas de Smarthands
Antes de probar la API de Smarthands, asegúrese de que dispone de:
- Credenciales API válidas con los permisos adecuados
- Acceso a las ubicaciones IBX de Equinix donde tiene equipos
- Familiaridad con el flujo de trabajo de los tickets de servicio
Creación de una solicitud de servicio 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}")
Comprobar el estado de la solicitud
# 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}")
Pruebas de escenarios de error
Pruebe siempre la gestión de errores de su implementación de 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"
Mejores prácticas para las pruebas de API de Smarthands
Nota importante: La API de Equinix es un sistema de producción que crea solicitudes de envío reales. Siga siempre estas prácticas recomendadas de prueba para asegurarse de no crear trabajo operativo no intencionado.
- Establezca una cuenta dedicada a las pruebas: Si es posible, solicite una cuenta independiente para pruebas
- Comience con operaciones de sólo lectura: Pruebe primero los puntos finales GET antes de crear/modificar recursos
- Utilice solicitudes de prueba claramente marcadas: Anteponga siempre a las descripciones el prefijo "TEST:" para ayudar a los operadores a identificar las solicitudes de prueba
- Limpie los recursos de prueba: Cancele cualquier envío de prueba inmediatamente después de crearlo con éxito
- Incluya detalles completos: Proporcione información completa en sus solicitudes
- Números de seguimiento: Proporcione siempre números de seguimiento precisos para los envíos entrantes con el fin de garantizar una manipulación adecuada
- Información de contacto: Asegúrese de que la información de contacto está actualizada y de que la persona está disponible durante la ventana de servicio programada
- Detalles de la descripción: Sea detallado pero conciso al describir los requisitos para ayudar al personal de las instalaciones a completar su solicitud de forma eficiente
Consideraciones sobre automatización
Al construir la automatización en torno a la API de Smarthands:
- Implemente una gestión de errores y reintentos adecuada
- Considere la posibilidad de implementar receptores webhook para las actualizaciones de estado
- Incorpore la validación de ventanas de tiempo y disponibilidad del servicio
- Incluya un registro de auditoría de todas las interacciones de la API
- Asegúrese de que la información de seguimiento se incluye automáticamente para todas las solicitudes relacionadas con envíos
- Validar la disponibilidad de los contactos durante las ventanas de servicio programadas