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::Event
em sua biblioteca Ruby oferece um construct_from
construtor que aceita um Hash. Passe um hash e você recebe de volta Stripe::Event
exatamente 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_from
para transformar dados POST em dados Stripe::Event
em produção.
Siga as melhores práticas do Stripe ; os dados vindos do webhook devem ser considerados fraudulentos. Ao trabalhar com dados id
ativos , pegue o do webhook, descarte todo o resto e solicite o evento por meio da API Stripe.