首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用frisby.js或jasmine-node测试证书过期

使用frisby.js或jasmine-node测试证书过期
EN

Stack Overflow用户
提问于 2015-12-29 05:30:52
回答 1查看 227关注 0票数 2

我正在尝试用frisby.js编写一个测试用例来检查证书的状态。测试应在证书到期前n天失败,其中n的定义如下:

代码语言:javascript
复制
config.numberOfDaysBeforeTestFails

我用下面的代码尝试了一下:

代码语言:javascript
复制
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();

问题是,expect没有得到jasmine-node测试运行程序的验证。使用执行此代码

代码语言:javascript
复制
jasmine-node ./https_spec.js

将导致:

代码语言:javascript
复制
Finished in 0.358 seconds
1 test, 0 assertions, 0 failures, 0 skipped

所以断言

代码语言:javascript
复制
expect(todayDate < certificateDate).toBe(true);

不会被执行。我假设这是因为nodejs异步执行代码,因此在执行断言之前测试就结束了。

有人知道,我如何强制执行此断言并进入test-result?

谢谢和问候,Jo

EN

回答 1

Stack Overflow用户

发布于 2015-12-29 23:35:54

我没有找到一个基于frisby.js的解决方案,但是使用标准的jasmine语法来支持异步,它似乎可以工作。由于frisby测试是由jasmine-node运行器执行的,因此我可以将其与其他frisby测试一起执行。

代码语言:javascript
复制
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();
    });
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34501048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档