Validar FALHA quando o consentimento é REVOGADO pelo cliente na Instituição Detentora

[JSR-CONS-008] - Fluxo e Condições para Erro após Cancelamento


Introdução

Este documento descreve as condições necessárias e o fluxo de status para reproduzir o cenário de erro após cancelamento de enrollment no teste [JSR-CONS-008].

Condições Necessárias

Ação Crítica

EtapaAçãoStatus Resultante
9Cancelar Enrollment (PATCH)REVOKED

Status Necessários por Etapa

EtapaRequisiçãoStatus EsperadoObservação
1Get Application Token-Autenticação bem-sucedida
2Enrollment Payment initiationAWAITING_ACCOUNT_HOLDER_VALIDATIONEnrollment criado
3URL Autorização-URL gerada
4LoginAWAITING_ACCOUNT_HOLDER_VALIDATIONLogin bem-sucedido
5ApproveAWAITING_ENROLLMENTConsentimento aprovado
6Callback Payment InitiationAWAITING_ENROLLMENTCallback processado
7fido-registration-options-Opções geradas
8fido-registrationAUTHORISEDEnrollment autorizado
9Enrollment (PATCH)REVOKED⚠️ CANCELAMENTO
10payment-initiationAWAITING_AUTHORISATIONPayment criado (ainda funciona)
11fido-sign-options422 ERRORErro: Enrollment REVOKED

Fluxo de Status

┌─────────────────────────────────────────────────────────────┐
│ 1-5. Fluxo Inicial de Enrollment                            │
│    Status: AWAITING_ENROLLMENT                              │
└────────────────────┬──────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────────┐
│ 6-7. FIDO Registration                                      │
│    Status: AUTHORISED                                       │
│    ✅ Enrollment completo e autorizado                      │
└────────────────────┬──────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────────┐
│ 8. Enrollment (PATCH) - CANCELAMENTO                        │
│    Status: REVOKED                                          │
│    ⚠️ Enrollment cancelado pelo usuário                     │
└────────────────────┬──────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────────┐
│ 9. Payment Initiation                                       │
│    Status: AWAITING_AUTHORISATION                           │
│    ⚠️ Ainda é possível criar payment                        │
└────────────────────┬──────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────────┐
│ 10. fido-sign-options                                       │
│     ❌ ERRO 422: Enrollment REVOKED                         │
│     "cannot generate fido sign options to enrollment.       │
│      current status: REVOKED"                               │
└─────────────────────────────────────────────────────────────┘

Detalhamento do Cancelamento (Etapa 9)

Requisição de Cancelamento

PATCH {{BASE_URL}}/open-keys/itp/api/v2/enrollments/v2/payment-initiation/{{itp_enrollment_id}}
Content-Type: application/json
Authorization: Bearer {{application_token}}

{
    "data": {
        "cancellation": {
            "cancelledBy": {
                "document": {
                    "identification": "98765432100",
                    "rel": "CPF"
                }
            },
            "reason": {
                "revocationReason": "REJEITADO_MANUALMENTE"
            }
        },
        "cancelledFrom": "INICIADORA"
    }
}

Status Antes e Depois

MomentoStatus do EnrollmentObservação
Antes do PATCHAUTHORISEDEnrollment válido e autorizado
Após o PATCHREVOKEDEnrollment cancelado

Pontos Críticos

1. Momento do Cancelamento

O cancelamento deve ocorrer após:

  • ✅ Enrollment estar autorizado (AUTHORISED)
  • ✅ FIDO registration completo
  • ✅ Antes de tentar gerar fido-sign-options

2. Comportamento após Cancelamento

AçãoStatusResultado
Criar payment-initiationAWAITING_AUTHORISATION✅ Ainda funciona
Gerar fido-sign-options-ERRO 422

3. Validação do Erro

O sistema valida o status do enrollment ao tentar gerar fido-sign-options:

if (enrollment.status === 'REVOKED') {
    throw Error('cannot generate fido sign options to enrollment. current status: REVOKED')
}

Validação do Erro

Resposta Esperada

{
    "name": "UnprocessableEntityError",
    "message": "Unprocessable Entity",
    "code": 422,
    "type": {
        "data": {
            "description": "cannot generate fido sign options to enrollment. current status: REVOKED"
        }
    }
}

Condições para Reproduzir

  1. ✅ Enrollment deve estar no status AUTHORISED antes do cancelamento
  2. ✅ Cancelamento deve ser executado via PATCH com revocationReason: "REJEITADO_MANUALMENTE"
  3. ✅ Enrollment deve estar no status REVOKED após o cancelamento
  4. ✅ Tentativa de gerar fido-sign-options deve ocorrer após o cancelamento
  5. ✅ Payment-initiation pode ser criado mesmo com enrollment REVOKED

Sequência de Status do Enrollment

PENDING
  ↓
AWAITING_ACCOUNT_HOLDER_VALIDATION
  ↓
AWAITING_ENROLLMENT
  ↓
AUTHORISED  ← Enrollment completo
  ↓
REVOKED     ← Cancelamento (Etapa 9)
  ↓
❌ ERRO ao tentar fido-sign-options (Etapa 11)

Observações Importantes

  • O cancelamento pode ser feito a qualquer momento após a autorização
  • A criação de payment-initiation ainda funciona após o cancelamento
  • O erro ocorre apenas ao tentar gerar fido-sign-options
  • O sistema valida o status do enrollment antes de gerar opções de assinatura
  • O erro retorna código HTTP 422 (Unprocessable Entity)
  • A mensagem de erro indica claramente o status atual: REVOKED

Diferenças entre os Fluxos

AspectoFluxo NormalFluxo com Cancelamento
Status final do EnrollmentAUTHORISEDREVOKED
Criação de Payment✅ Permitida✅ Permitida
Geração de fido-sign-options✅ Permitida❌ Bloqueada
Processamento de PIX✅ Permitido❌ Não alcançado