使用frisby.js或jasmine节点测试证书过期
Testing certificate expiration with frisby.js or jasmine-node
我正在尝试用frisby.js编写一个测试用例,用于检查证书的状态。测试应在证书到期前n天失败,其中n在中定义
config.numberOfDaysBeforeTestFails
我用这个代码试过了:
var frisby = require('frisby');
var config = require('../config'); //load own config-file
var request = require('request');
frisby.create('https2.0 - Perperation')
.get(config.server + '/testData')
.auth(config.username, config.passwort)
.after(function(err, res, body){
var auth = "Basic " + new Buffer(config.username + ":" + config.passwort).toString("base64");
var r = request({
url: '<serverURL>',
requestCert: true,
rejectUnauthorized: false,
headers : {
"Authorization" : auth
}
});
r.on('response', function(res) {
var certificateInformation = res.req.connection.getPeerCertificate();
var certificateDate = new Date(Date.parse(certificateInformation.valid_to));
var todayDate = new Date();
todayDate.setDate(todayDate.getDate() + config.numberOfDaysBeforeTestFails);
//Below does not get executed
expect(todayDate < certificateDate).toBe(true);
});
})
.toss();
问题是,期望没有得到jasmine节点testrunner的验证。使用执行此代码
jasmine-node ./https_spec.js
将导致:
Finished in 0.358 seconds
1 test, 0 assertions, 0 failures, 0 skipped
所以断言
expect(todayDate < certificateDate).toBe(true);
没有被执行。我认为,这是因为nodejs执行代码async,因此测试在执行断言之前结束。
有人知道,我如何才能强制执行这个断言并进入测试结果?
谢谢和问候,Jo
我没有找到一个基于frisby.js的解决方案,但使用异步支持的标准jasmine语法,它似乎可以工作。由于frisby测试是由jasmine节点运行器执行的,所以我可以将其与其他frisby检测一起执行。
var request = require('request');
var config = require('../config'); //load own config-file for global settings
describe("https 2.0", function() {
it("Certificate Test", function(done) {
var auth = "Basic " + new Buffer(config.username + ":" + config.passwort).toString("base64");
var r = request({
url: config.server,
requestCert: true,
rejectUnauthorized: false,
headers : {
"Authorization" : auth
}
});
r.on('response', function(res) {
var certificateInformation = res.req.connection.getPeerCertificate();
var certificateDate = new Date(Date.parse(certificateInformation.valid_to));
var todayDate = new Date();
todayDate.setDate(todayDate.getDate() + config.numberOfDaysBeforeTestFails);
expect(todayDate).toBeLessThan(certificateDate);
done();
});
});
});
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 使用Jest测试React Native应用程序
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- AngularJS指令单元测试中未定义的函数
- 一个密码测试程序,如果存在空格,它会提醒用户
- 测试角度解析方法
- Protractor:在Iframe中测试非角度应用程序
- 简单类测试未通过
- 如何在Ionic2测试版中包含Ionic.io服务
- 使用frisby.js或jasmine节点测试证书过期