Teste da API Smarthands
Este guia fornece abordagens e exemplos de testes específicos para a API Equinix Smarthands, com base nos princípios gerais de Teste de API.
Visão geral da API Smarthands
A API Smarthands permite que você solicite e gerencie programaticamente vários serviços de mãos remotas em data centers Equinix IBX. Aqui está o mapeamento da API ECP para os tipos de mãos inteligentes suportados:
Fluxo de trabalho de teste Smarthands
Antes de testar a API Smarthands, certifique-se de ter:
- Credenciais de API válidas com as permissões apropriadas
- Acesso às instalações Equinix IBX onde você possui equipamentos.
- Familiaridade com o fluxo de trabalho de chamados de serviço.
Criando uma solicitação de serviço 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}")
Verificando o status da solicitação
# 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}")
Testando cenários de erro
Sempre teste o tratamento de erros na implementação da sua 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"
Melhores práticas para testes de API do Smarthands
Nota importante: A API da Equinix é um sistema de produção que gera solicitações de envio reais. Siga sempre estas boas práticas de teste para garantir que você não crie trabalho operacional não planejado.
- Crie uma conta dedicada para testes: Solicite uma conta separada para testes, se possível.
- Comece com operações somente leitura: Teste os endpoints GET antes de criar/modificar recursos.
- Use solicitações de teste claramente identificadas: Sempre prefixe as descrições com "TESTE:" para ajudar os operadores a identificar as solicitações de teste.
- Limpar recursos de teste: Cancele imediatamente quaisquer envios de teste após a criação bem-sucedida.
- Inclua detalhes completos: Forneça informações abrangentes em suas solicitações.
- Números de Rastreamento: Sempre forneça números de rastreamento precisos para remessas recebidas a fim de garantir o manuseio adequado.
- Informações de contato: Certifique-se de que as informações de contato estejam atualizadas e que a pessoa esteja disponível durante o horário de atendimento agendado.
- Detalhes da descrição: Seja detalhado, porém conciso, ao descrever os requisitos para ajudar a equipe da unidade a concluir sua solicitação com eficiência.
Considerações sobre automação
Ao criar automações em torno da API Smarthands:
- Implemente um tratamento de erros e tentativas adequadas.
- Considere implementar receptores de webhook para atualizações de status.
- Inclua validação para janelas de tempo e disponibilidade do serviço.
- Incluir registro de auditoria de todas as interações com a API.
- Garanta que as informações de rastreamento sejam incluídas automaticamente em todas as solicitações relacionadas a envios.
- Confirme a disponibilidade de contato durante os horários de atendimento agendados.