2

証明書のステータスをチェックする 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();

問題は、expect が jasmine-node テストランナーによって検証されないことです。このコードを実行すると

jasmine-node ./https_spec.js

結果は次のようになります。

Finished in 0.358 seconds
1 test, 0 assertions, 0 failures, 0 skipped

だから主張

expect(todayDate < certificateDate).toBe(true);

実行されていません。これは、nodejs がコードを非同期で実行するため、アサーションが実行される前にテストが終了するためだと思います。

このアサーションを強制的に実行してテスト結果を得る方法を知っている人はいますか?

ありがとう、ジョー

4

1 に答える 1