Testando Firebase Cloud Functions com emulador local e Postman
Você gosta de testar as coisas que faz antes de liberar para o público? Nós também! E tivemos a necessidade de emular localmente nossas functions e descobrimos que era mais que só rodar o emulador para termos nossas respostas, entao saimos varrendo a “internet” para achar a forma de fazer isso, e vimos que temos muitos tópicos com partes do problema, então decidimos unir tudo para ajudar as próximas pessoas que irão fazer isso! Aproveitem !
Este documento é dedicado a parte de testes de Firebase Cloud Function com emulador local via Postman.
Pre-requisito:
Se seu projeto não possui configurado ainda o firebase-tools, siga o passo-a-passo da documentação oficial do firebase.
https://firebase.google.com/docs/functions/local-emulator#unix
Agora partiremos para a parte de execução do emulador local e a configuração pelo postman.
Abra o prompt de comando na pasta das functions
Verifique se a variável de ambiente (GOOGLE_APPLICATION_CREDENTIALS) está configurada com o caminho do seu json.
Comando para validar em windows: echo %GOOGLE_APPLICATION_CREDENTIALS%
Caso não esteja, execute a inserção do valor do seu caminho json.
Comando para inserir em windows: set GOOGLE_APPLICATION_CREDENTIALS=”CAMINHO DO ARQUIVO.JSON”
Obs: não deixar as aspas no caminho!.
Apos estar com a variável configurada, execute o comando de inicialização do firabase-emulator.
Comando start firebase emulator: firebase emulators:start — only functions
Obs: Esse comando só ira iniciar as functions.
Após rodar, irá apresentar em seu terminal a seguinte informação:
Abra o navegador e coloque a url Gerada e irá apresentar um dashboard do emulador.
O dashboard apresenta os itens que estão ativos naquele momento e as portas liberadas.
Agora iremos para o Postman.
Abra o postman, e crie um novo item no modelo POST.
Neste momento iremos resgatar um item fundamental para nossa execução que e o idToken do usuário.
Para isso você precisa do IdWeb do projeto.
Vá no seu projeto Firebase. Clique no item Configurações ( a famosa engrenagem) em seguida > configurações do projeto.
Pegue o item : Web API Key.
Apos capturar isso, volte ao postman
E na guia da URL adicione o seguinte comando composto pela Key do projeto.
Comando: https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=[idToken]
Agora vá na opção body, selecione a formatação [x-www-form-urlencoded] e adicione as seguintes Keys:
Email: [Email do projeto firebase]
password: [Senha do projeto firebase]
returnSecureToken : true
Mande enviar
O Retorno dele será um JSON com os seguintes dados.
{
“kind”:
“localId”:
“email”:
“displayName”:
“idToken”:
“registered”:
“refreshToken”:
“expiresIn”:
}
A Informação que buscamos para nossa consulta será o [idToken].
Agora iremos abrir uma nova aba no Modelo que sua Function trabalha, no meu caso irei usar POST.
Coloque a URL liberada pelo emulador + o nome da function
Comando: http://localhost:5001/[projeto]/[localizacao]/[MeuMetodo]
Você ira colocar no body o JSON da sua informação que irá usar para o teste
E agora o mais importante. Vá ate a aba Authorization
Selecione o método Bearer Token e no campo Token insira o Token do idToken capturado na outra consulta.
Apos isso enviar a consulta e verificar se o status sera o qual você aguarda!
Com isso, você poderá capturar no console do emulador os comandos de console.log por exemplo, ajudando assim no desenvolvimento e/ou análise de algum erro que sua function possui sem estar em produção, emular testes e afins!