Je cours des tests pour le contrôleur de connexion, il continue à donner le mauvais code d'état (401) au lieu de 200 comme je l'ai programmé pour être. Je m'attends à ce qu'il utilise les données stockées lorsqu'un utilisateur s'inscrit et le renvoie si l'entrée donnée est correcte. Cela fonctionne parfaitement dans le facteur mais comme j'écris des tests, il jette l'erreur 401. Il est comme il ne trouve pas l'utilisateurJavascript - Donner le mauvais statut Code au cours des tests
C'est bloc d'essai pour le signe:
it('it should signin a new user', (done) => {
request(app)
.post('/api/users/signin')
.send({
username: "Charles",
password: "challenger",
})
.expect(200)
.end((err, res) => {
if (err) {
return done(err);
}
done()
});
});
Ceci est mon contrôleur pour la connexion:
signin(req, res) {
const username = req.body.username.toLowerCase().trim();
// const email = req.body.email.trim();
if(!username) {
return res.status(401)
.send(
{status: false,
message: "Username cannot be empty"
});
}
else if (!req.body.password) {
return res.status(401)
.send({
status: false,
message: "Password field cannot be empty"
});
}
return User.findOne({
where: {
username,
}
})
.then((user) =>{
if(!user) {
return res.status(401).send({message: "User is not registered"})
}
else if(!user.validPassword(req.body.password)){
return res.status(401)
.send({
message: "The password is incorrect"
})
}
const token = user.generateAuthToken();
res.header('x-auth', token).status(200).send({
statusCode: 200,
message: `Welcome back, ${user.username}`,
user
});
})
.catch(error => {return res.status(400).send(error)})
},
Ceci est l'erreur i obtenez:
1) Testing API routes POST /api/users/ it should signin a new user:
Error: expected 200 "OK", got 401 "Unauthorized"
at Test._assertStatus (node_modules\supertest\lib\test.js:266:12)
at Test._assertFunction (node_modules\supertest\lib\test.js:281:11)
at Test.assert (node_modules\supertest\lib\test.js:171:18)
at Server.assert (node_modules\supertest\lib\test.js:131:12)
at emitCloseNT (net.js:1552:8)
at _combinedTickCallback (internal/process/next_tick.js:77:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
Le 400 est causé par une erreur javascript quelque part dans la dernière clause then().Essayez de sortir la valeur de "erreur" dans votre bloc catch à la fin, cela vous dira ce qui a échoué. –
@DuncanThacker désolé, il donne une erreur 401 pas une erreur de 400. L'utilisateur peut se connecter correctement sur le facteur, mais mon test échoue toujours. L'erreur se produit s'il n'y a pas d'utilisateur – letmebe
Quel message envoie-t-il avec le 401? Cela devrait aider à déterminer quel morceau du code ne va pas. –