我在使用Cognito sdk生成令牌时遇到问题。
从Mocha
和Jest
调用时,同一代码的行为有所不同。
require('cross-fetch/polyfill');
var AmazonCognitoIdentity = require('amazon-cognito-identity-js');
process.env["NODE_CONFIG_DIR"] = __dirname + "/config";
const config = require("config");
function getToken(user, secret) {
const authenticationData = {
Username : user,
Password : secret,
};
const authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
const poolData = {
UserPoolId: config.get('Org.userPoolId'),
ClientId: config.get('Org.clientId')
};
const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
const userData = {
Username : user,
Pool : userPool
};
const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
let result = new Promise((resolve, reject) => {
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: resolve,
onFailure: reject }); }).then((result) => {
const token = result.getIdToken().getJwtToken();
return {
token: token, message : null, isSuccessful: true
};
}).catch(({ message }) => {
console.log(message);
return {
token: '', message: `error: ${message} auth data: ${authenticationData} user pool: ${userPool}`, isSuccessful: false
};
});
return result;
}
exports.getToken = getToken;
传递给authenticateUser
调用的对象看起来相同。 Jest
情况下唯一的区别是空白的storage
字段。
对于Mocha
,我得到令牌,对于Jest
,我得到错误消息Invalid username of password
。
任何提示将不胜感激。