Seja preguiçoso ao testar webhooks Stripe

Trabalhe com mais inteligência, não com mais esforço! Repetidamente, tenho visto desenvolvedores arrancando seus cabelos enquanto tentam testar suas integrações de webhook Stripe. Não envolva seus controladores. Não crie JSON. Não lute com o WebMock. Não precisa ser tão difícil. Stripe ama você.

(E se você estiver lidando com webhooks em um controlador, mova-o para um objeto de serviço.)

Você verificou os documentos ?

Stripe::Eventem sua biblioteca Ruby oferece um construct_fromconstrutor que aceita um Hash. Passe um hash e você recebe de volta Stripe::Eventexatamente como os que você solicitou por meio da API. Para máxima preguiça, use símbolos para chaves em vez de strings.

Agora você pode testar a unidade sem os servidores Stripe, uma rede, um controlador ou JSON:

describe SomeClass do
h
= {
id
: 'evt_1234567',
type
: 'charge.succeeded',
other
: 'useful',
data_goes
: 'here'
}
event = Stripe::Event.construct_from(h)

it
'has an event id' do
expect
(event.id).to eq('evt_1234567')
end
end

Não está trabalhando com Ruby? Construtores semelhantes estão disponíveis em suas outras bibliotecas. Aproveite!

Nota importante: por favor, não use esse conhecimento para atirar no próprio rosto. Isso me deixaria triste. Ainda mais triste do que executar testes de integração desnecessariamente. NÃO use construct_frompara transformar dados POST em dados Stripe::Eventem produção.

Siga as melhores práticas do Stripe ; os dados vindos do webhook devem ser considerados fraudulentos. Ao trabalhar com dados idativos , pegue o do webhook, descarte todo o resto e solicite o evento por meio da API Stripe.