用mocha / superagenttesting本地https服务器
所以我看到几个月前有一个pull请求,superagent允许你在请求中指定CA. 似乎没有更新文档来反映这种变化,所以我似乎无法弄清楚如何去做。
我正在尝试在本地机器上testing公开http和https端点的REST服务。 所有的http工作正常,SSL的….好…..没有那么多。
昨天花了整整一天跑完证书错误,我90%肯定我有服务器正常工作。 curl似乎是这样想的,香草节点请求对象也如此。
我认为superagent可能是在引擎盖下创build一个请求 – 我只需要知道如何通过在CA为它。
提前致谢。
在他们的testing中有一个使用例子 。
基本上:
var https = require('https'), fs = require('fs'), key = fs.readFileSync(__dirname + 'key.pem'), cert = fs.readFileSync(__dirname + 'cert.pem'), assert = require('better-assert'), express = require('express'), app = express(); app.get('/', function(req, res) { res.send('Safe and secure!'); }); var server = https.createServer({ key: key, cert: cert }, app); server.listen(8443); describe('request', function() { it('should give a good response', function(done) { request .get('https://localhost:8443/') .ca(cert) .end(function(res) { assert(res.ok); assert('Safe and secure!' === res.text); done(); }); }); });
这对我工作:
... var user = request.agent({ca: cert}); ...
完整的例子:
var expect = require('chai').expect; var should = require('should'); var request= require('superagent'); var fs = require('fs'); var cert = fs.readFileSync('sslcert/server.crt', 'utf8'); var validUser = { username: 'test@test.com', password: 'secret111' }; describe('User', function() { // provide certificate as agent parameter var user = request.agent({ca: cert}); it("/login", function(done) { user .get('https://localhost:3000/login') .end(function(err, res) { if(err) throw err; // HTTP status should be 200 res.status.should.equal(200); user .post('https://localhost:3000/login') .send(validUser) .end(function(err, res) { if(err) throw err; // HTTP status should be 200 res.status.should.equal(200); done(); // user will manage its own cookies // res.redirects contains an Array of redirects }); }); }); it("/", function(done) { user .get('https://localhost:3000/') .end(function(err, res) { if(err) throw err; // HTTP status should be 200 res.status.should.equal(200); done(); }); }); it("/logout", function(done) { user .get('https://localhost:3000/logout') .end(function(err, res) { if(err) throw err; // HTTP status should be 200 res.status.should.equal(200); done(); }); }); });
- 更改nodemon或mocha的debugging端口
- 在目录中运行所有'test.html'文件 – mocha-phantomjs
- 使用我的Node.js REST API设置Mocha / ChaiHttp单元时遇到问题
- 摩卡与nodejs断言悬挂/超时断言(错误),而不是错误
- selenium – 点击一个button,直到出现一些元素
- validation使用Mocha / Chai和asynchronous/等待引发exception
- 使用摩卡与resharper
- 使用selenium webdriverjs运行摩卡testing时不太有用的callstack
- 摩卡+ Nodejs + Heroku .env文件