因此npm audit
刚刚发现jsonwebtoken存在安全漏洞。The solution将更新到版本9.0.0
-我已经这样做了。
但是,我的摩卡测试现在没有通过。在beforeEach
期间,我尝试使用sinon.stub
来存根decode
函数,现在抛出以下TypeError:TypeError: Cannot redefine property: decode
每次之前:
const jwt = require('jsonwebtoken');
beforeEach(function () {
this.sinon.stub(jwt, 'verify').returns({ email: 'email@email.com' });
this.sinon.stub(jwt, 'decode').returns({ header: { alg: 'RS256', typ: 'JWT', kid: 'MOCKKID' } });
this.sinon.stub(jwks, 'getKey').returns('some mock certificate');
this.sinon.stub(T, 'expired');
});
我假设stub verify
仍然有效,因为只有当我尝试stub decode
时,才会在下一行抛出错误
是的,有一个post with similar question,但它已经有两年的历史了,公认的答案是“这个问题很快就会在未来的版本中得到解决”,所以已经没有什么意义了。
1条答案
按热度按时间icnyk63a1#
由于
jsonwebtoken
v9.0.0使decode
函数不可枚举且不可配置,请参见v9.0.0/index.js#L9index.js
:来自文档由Object. defineProperty创建的不可配置属性
Object.defineProperty()
会创建不可配置的属性,如果您没有将它们指定为可配置的。这意味着
configurable: false
是默认的,这就是sinon.stub(jwt, 'decode')
不再工作的原因。并且有PR试图修复它以允许
decode
函数被存根化。这个PR使得decode
可配置:有一个临时的解决方案,你可以创建你自己的jwt utils模块和stub你自己的jwt utils。
例如
jwt-repack.js
:index.test.js
:软件包版本: