VCR e dados sensíveis como email e senha
Criado em: 30/08/2012
Quando estamos utilizando o VCR em nossas specs podemos nos deparar com o seguinte problema: como passar dados sensíveis ao VCR, como senhas e emails, mais não salvar isto em nosso cassete?
Vamos usar um exemplo real. Ao utilizarmos a api do moip de pagamento transparente temos que fazer um POST em uma uri
https://MOIP_TOKEN:MOIP_KEY@desenvolvedor.moip.com.br/sandbox/ws/alpha/EnviarInstrucao/Unica
utilizando Basic Authentication. Em um projeto interno, sem problemas deixar o seu dado de user e password nas specs, afinal o projeto é seu. Já em um projeto open source não seria legal todos terem acesso ao mesmo ambiente de desenvolvimento que você.
Para resolver isto devemos criar uma configuração no VCR, para isto em spec/support
crie um arquivo com o nome de vcr.rb
e nele devemos definir além do padrão do vcr que já usamos o:
Agora em todos os cassetes que o VCR gerá teremos algo assim:
https://<MOIP_TOKEN>:<MOIP_KEY>@desenvolvedor.moip.com.br/sandbox/ws/alpha/EnviarInstrucao/Unica.
No entanto ainda não está bom, afinal apenas movemos os dados sensíveis de um lugar para o outro. Para resolvermos de verdade isto podemos usar variaveis de ambiente, assim a única coisa que tem que fazer é definir as variáveis de ambiente em seu sistema e na configuração do VCR mudar para
Pronto! Agora temos um modo de distribuir uma gem, com as specs funcionando, e sem a necessidade de deixarmos hard coded nossas informações.
Para quem utilza o rvm e seu arquivo .rvmrc, pode definir no .rvmrc as váriaveis de ambiente, assim elas serão carregadas apenas quando estiver dentro do diretório do projeto.
Não se esqueça de sair e entrar no diretório novamente caso tenha acabado de definir as variáveis de ambiente e de documentar a sua gem para quem for testar definir as váriaveis de ambiente.
Comentários
Comentários powered by Disqus