Open ghost opened 3 years ago
Opa Thiago,
Quando eu fiz aquele post com apollo client, teve um pessoal que me recomendou a seguinte lib que deixa as coisas um pouco mais simples --> https://github.com/prisma-labs/graphql-request#authentication-via-http-header
Voltando ao seu problema... Não tem problema nenhum vc iniciar uma nova instancia do apollo client com o header certo. você pode colocar um valor em branco como padrão para seu 'Authorization' que pode ficar +- assim:
const apolloGraphQLClient = (acesso, authorization="") => {
(....)
header = {
Authorization = authorization
}
}
Dai no seu teste vc pode ter algo tipo
describe(....) => {
var _client
before(...) => {
tmp_client = apolloGraphQLClient(acesso)
(....)
_client = apolloGraphQLClient(acesso, __loginToken)
}
it(..) =>{
(...seu teste...)
}
Meu js ta meio enferrujado, mas vc pode pedir um code review e até dicas para os devs JS do seu time
@leoGalani obrigado pelo retorno,
tentei fazer isso mais não está rolando, ele da erro: ApolloError: GraphQL error: Error processing request, please see extensions field for more details e o token que é passado fica como undefined.
Servidor apollo
testes
Seu before all é async mas ta faltando uns await
(https://jestjs.io/docs/en/asynchronous) para esperar o retorno do primeiro request de token.
E tipo.. a constant apolloGraphQLClient
que recebe como parametro o object authorization
vc pode definir o valor dele padrão como "" (em branco, igual vc colocou no exemplo anterior, caso contrario vai dar undefined tb).
Da proxima vez cria um gist com o codigo de fato... printscreen é meio ruim pra entender o contexto e sempre fica faltando coisa :)
a sua variável __client1
não é acessível fora do beforeAll
. Para resolver isso coloque um this.
antes dela. Exemplo:
(...)
this.__client1 = apolloGraphQLClient(__loginToken)
});
// ---- O CT abaixo...
it (.......)
const _logout = await this.__client1.mutate({
(...)
@leoGalani obrigado consegui resolver aqui, é a questão do async/await, obrigado pela ajuda.
Boa tarde pessoal,
gostaria muito de ajuda de vocês, iniciando com automação Jest + Apollo Client para automatizar alguns microsserviços, porém estou com um problema que não estou conseguindo resolver!
Para as chamadas preciso passar um token de acesso, e esse token é só consigo quando executo a mutation de login, dessa forma é retornado.
O problema é que o servidor client do apollo foi iniciado sem o headers > Authorization justamente para executar a mutation do login e retornar o token, e ai preciso do token para passar no Authorization para os demais testes, ai a questão é que não estou conseguindo uma forma de passar o headers > Authorization nas demais testes devido o servidor já ter cido inicializado.
Esse é servidor Apollo Client
Aqui é como estou pegando o token de acesso
Agora como eu passo esse token em outra mutation ou query sendo que o servidor apollo já está inicializado ?
Obrigado Abs