summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis R <mail@jannisr.de>2020-05-03 16:56:02 +0200
committerJannis R <mail@jannisr.de>2020-05-03 17:27:50 +0200
commit7dfb61c9d75797af7f52d40f83db4e6038fe99dd (patch)
tree2390aa4eff9dc0d43258ed2162516c0c05791c8b
parentbe032e4a620576dc42b6814a6114e3fcbc18feb2 (diff)
basic test :white_check_mark:, CI :green_heart:
-rw-r--r--.travis.yml12
-rw-r--r--package.json5
-rw-r--r--test.js62
3 files changed, 78 insertions, 1 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..e5e1ec6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,12 @@
+language: node_js
+os: linux
+node_js:
+ - node
+ - 'lts/*'
+ - '12'
+script:
+ - 'npm test'
+cache: npm
+notifications:
+ email:
+ on_success: never
diff --git a/package.json b/package.json
index e518cac..c3337ea 100644
--- a/package.json
+++ b/package.json
@@ -28,8 +28,11 @@
"pem": "^1.14.4"
},
"devDependencies": {
- "create-cert": "^1.0.6"
+ "create-cert": "^1.0.6",
+ "get-stream": "^5.1.0"
},
"scripts": {
+ "test": "node test.js",
+ "prepublishOnly": "npm run test"
}
}
diff --git a/test.js b/test.js
new file mode 100644
index 0000000..c02e5f7
--- /dev/null
+++ b/test.js
@@ -0,0 +1,62 @@
+'use strict'
+
+const createCert = require('create-cert')
+const {promisify: pify} = require('util')
+const {strictEqual} = require('assert')
+const collect = require('get-stream')
+const {
+ createServer,
+ DEFAULT_PORT,
+ request,
+} = require('.')
+
+const r = pify(request)
+
+const onRequest = (req, res) => {
+ console.log('request', req.url)
+ if (req.clientFingerprint) console.log('client fingerprint:', req.clientFingerprint)
+
+ if (req.path === '/foo') {
+ if (!req.clientFingerprint) {
+ return res.requestTransientClientCert('/foo is secret!')
+ }
+ res.write('foo')
+ res.end('!')
+ } else if (req.path === '/bar') {
+ res.redirect('/foo')
+ } else {
+ res.gone()
+ }
+}
+
+const onError = (err) => {
+ console.error(err)
+ process.exit(1)
+}
+
+;(async () => {
+ const server = createServer({
+ tlsOpt: await createCert('example.org'),
+ }, onRequest)
+
+ server.on('error', onError)
+ await pify(server.listen.bind(server))(DEFAULT_PORT)
+
+ const res1 = await r('/bar', {
+ tlsOpt: {rejectUnauthorized: false},
+ })
+ strictEqual(res1.statusCode, 30)
+ strictEqual(res1.meta, '/foo')
+
+ const res2 = await r('/bar', {
+ tlsOpt: {rejectUnauthorized: false},
+ followRedirects: true,
+ useClientCerts: true,
+ letUserConfirmClientCertUsage: (_, cb) => cb(true),
+ })
+ strictEqual(res2.statusCode, 20)
+ strictEqual(await collect(res2), 'foo!')
+
+ server.close()
+})()
+.catch(onError)