Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

aula 04- erro 401 de acesso não autorizado

Durante a Aula 4, de como lidar com dados sensíveis, aprendemos a inserir as credenciais de login em um arquivo .env separado, e chamar as credencias dentro do corpo da função post com uma variável de ambiente, utilizando a URL https://apialurapic.herokuapp.com/user/login para executar o método POST. Entretanto, na hora de testar o código, o cypress retorna erro de cy.request() failed on: https://apialurapic.herokuapp.com/user/login, dizendo que The response we received from your web server was: > 401: Unauthorized.

Achei que pudesse ser erro da minha URL (que verifiquei manualmente pelo navegador), das credenciais que talvez tivessem erro de digitação no arquivo env.json, ou mesmo do meu código, já que manualmente consigo fazer o login normalmente, então eu baixei o modelo fornecido ao final da aula e executei o teste no código dele, sem alterações, entretanto, o mesmo erro persiste até com o uso do gabarito baixado.

Alguém sabe indicar o motivo da falha, só pra eu conseguir entender o por que do acesso não ser autorizado no teste mas ser autorizado manualmente?

O código usado para executar o teste é o do gabarito, inalterado:

describe('Buscar fotos e dados', () => {

    it('buscar fotos do flavio', () => {
        cy.request({
            method: 'GET',
            url: 'https://apialurapic.herokuapp.com/flavio/photos'
        }).then((res) => {
            expect(res.status).to.be.equal(200)
            expect(res.body).is.not.empty
            expect(res.body[0]).to.have.property('description')
            expect(res.body[0].description).to.be.equal('Farol iluminado')
        }

        )
    })


    it('fazer login do flavio', () => {
        cy.request({
            method: 'POST',
            url: 'https://apialurapic.herokuapp.com/user/login',
            body: Cypress.env()
        }).then((res) => {
            expect(res.status).to.be.equal(200)
            expect(res.body).is.not.empty
            expect(res.body).to.have.property('id')
            expect(res.body.id).to.be.equal(1)
            expect(res.body).to.have.property('email')
            expect(res.body.email).to.be.equal("flavio@alurapic.com.br")
        }

        )
    })

})

Segue a foto da mensagem completa de falha:

código de errro 401

3 respostas
solução!

Oi Jean, tudo bem?

cola por favor como ta o conteúdo do seu arquivo cypress.env.json pois a mensagem tá indicando como se o usuário tivesse indefinido, ou seja, ele não conseguiu ler.

Acredito que seja porque username ta todo em minúsculo. Tem que estar userName, com o N maiúsculo.

Se a dúvida ainda permanecer, não deixe de nos informar por aqui.

Bons estudos! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Bom dia, Jacq.

De fato fiz alteração para usar o termo userName, com maiúsculo, e o teste rodou com sucesso.

Entretanto, o arquivo-gabarito cypress.env.json baixado no zip 2372-automacao-e2e-cypress-aula_04, que é fornecido no início da aula 05, contém o equivoco de vir com o termo todo em letras minúsculas.

foto do arquivo cypress.env.json contendo o código do gabarito fornecido em aula

Já que há necessidade do termo ser userName, talvez seja interessante dar uma olhada para evitar futuras confusões.

Obrigado pela resposta rápida.

Olá Jean, tudo bem?

Acabamos de fazer o ajuste lá no gabarito. Muito obrigada por sinalizar!

Qualquer consideração ou feedback, continue nos informar por aqui.

Bons estudos! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!