Ir para o conteúdo principal

Teste de API de tickets de suporte

Este guia fornece abordagens e exemplos de testes específicos para a API de Tickets de Problemas da Equinix, com base nos princípios gerais de Teste de API.

Visão geral da API de tickets de suporte

A API de Tickets de Suporte permite que os clientes interajam programaticamente com o suporte da Equinix, criando tickets de suporte para problemas que afetam o serviço em diversas categorias:

  • Problemas de interconexão
  • Problemas de conectividade de rede
  • Incidentes relacionados à energia
  • preocupações ambientais
  • Falhas de hardware
  • incidentes de segurança
  • Suporte de Serviços Gerenciados

Tipos de problemas em chamados de suporte

A API de Tickets de Suporte oferece suporte a várias categorias de problemas, cada uma com códigos de problema específicos:

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

Fluxo de trabalho de teste de chamados de suporte

Antes de testar a API de Tickets de Suporte, certifique-se de ter:

  • Uma conta de desenvolvedor Equinix com permissões para abertura de chamados.
  • Credenciais de API válidas (ID do cliente e segredo do cliente)
  • Acesso a locais e gaiolas IBX adequados
  • Compreendendo a Autenticação de API

Criando um Pedido de Suporte Técnico

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}")

Validação do local de teste e do tipo de problema

# 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)}")

Testando cenários de erro

Sempre teste o tratamento de erros na implementação da sua 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))

Melhores práticas para testes de API de tickets de suporte

Nota importante: A API de Tickets de Suporte da Equinix é um sistema de produção que cria tickets de suporte reais. Siga sempre estas boas práticas de teste para garantir que você não crie trabalho operacional não planejado.

  1. Crie uma conta dedicada para testes: Solicite uma conta separada para testes, se possível.
  2. Utilize solicitações de teste claramente identificadas: Sempre prefixe as descrições com "TESTE:" para ajudar a equipe de suporte a identificar as solicitações de teste.
  3. Utilize horários de incidentes válidos: Certifique-se de que a data e a hora do incidente estejam formatadas corretamente e não sejam futuras.
  4. Validar acesso à localização: Use o endpoint de localizações para verificar os locais IBX acessíveis antes de criar chamados.
  5. Teste com códigos de problema válidos: Sempre valide os códigos de problema usando o endpoint de tipos.
  6. Inclua informações de contato completas: Certifique-se de que todos os contatos necessários (PEDIDOS, NOTIFICAÇÕES) sejam fornecidos.
  7. Limpar recursos de teste: Trabalhe com o suporte para fechar todos os chamados de teste imediatamente após a criação.
  8. Testar o tratamento de erros: Verificar o tratamento adequado de erros e os códigos de resposta.

Considerações sobre automação

Ao criar automações em torno da API de Tickets de Suporte:

  • Implemente um tratamento de erros adequado e tentativas de repetição para falhas na API.
  • Crie validação para campos obrigatórios e formatos de dados.
  • Incluir registro de auditoria de todas as atividades de criação de tickets.
  • Garantir que os horários dos incidentes sejam registrados e formatados com precisão.
  • Valide as informações de localização e código do problema antes de enviar.
  • Considere implementar fluxos de trabalho de aprovação para a criação de tickets de produção.
  • Inclua informações de contato completas para uma resolução mais rápida.

Recursos adicionais

Esta página foi útil?