From 3e3d35777d3e3081b33ce7d50c8a5c855b450534 Mon Sep 17 00:00:00 2001
From: Douglas Christopher Wilson <doug@somethingdoug.com>
Date: Mon, 20 Feb 2017 17:09:21 -0500
Subject: [PATCH] tests: update req.range tests to run through express

---
 test/req.range.js | 110 ++++++++++++++++++++++++++++++++++------------
 1 file changed, 83 insertions(+), 27 deletions(-)

diff --git a/test/req.range.js b/test/req.range.js
index d530d85a64..09459d1e12 100644
--- a/test/req.range.js
+++ b/test/req.range.js
@@ -1,47 +1,103 @@
 
 var assert = require('assert');
 var express = require('..');
-
-function req(ret) {
-  return {
-      get: function(){ return ret }
-    , __proto__: express.request
-  };
-}
+var request = require('supertest')
 
 describe('req', function(){
   describe('.range(size)', function(){
-    it('should return parsed ranges', function(){
-      var ranges = [{ start: 0, end: 50 }, { start: 51, end: 100 }]
-      ranges.type = 'bytes'
-      assert.deepEqual(req('bytes=0-50,51-100').range(120), ranges)
+    it('should return parsed ranges', function (done) {
+      var app = express()
+
+      app.use(function (req, res) {
+        res.json(req.range(120))
+      })
+
+      request(app)
+      .get('/')
+      .set('Range', 'bytes=0-50,51-100')
+      .expect(200, '[{"start":0,"end":50},{"start":51,"end":100}]', done)
     })
 
-    it('should cap to the given size', function(){
-      var ret = [{ start: 0, end: 74 }];
-      ret.type = 'bytes';
-      req('bytes=0-100').range(75).should.eql(ret);
+    it('should cap to the given size', function (done) {
+      var app = express()
+
+      app.use(function (req, res) {
+        res.json(req.range(75))
+      })
+
+      request(app)
+      .get('/')
+      .set('Range', 'bytes=0-100')
+      .expect(200, '[{"start":0,"end":74}]', done)
     })
 
-    it('should have a .type', function(){
-      var ret = [{ start: 0, end: Infinity }];
-      ret.type = 'users';
-      req('users=0-').range(Infinity).should.eql(ret);
+    it('should cap to the given size when open-ended', function (done) {
+      var app = express()
+
+      app.use(function (req, res) {
+        res.json(req.range(75))
+      })
+
+      request(app)
+      .get('/')
+      .set('Range', 'bytes=0-')
+      .expect(200, '[{"start":0,"end":74}]', done)
     })
 
-    it('should return undefined if no range', function(){
-      var ret = [{ start: 0, end: 50 }, { start: 60, end: 100 }];
-      ret.type = 'bytes';
-      assert(req('').range(120) === undefined);
+    it('should have a .type', function (done) {
+      var app = express()
+
+      app.use(function (req, res) {
+        res.json(req.range(120).type)
+      })
+
+      request(app)
+      .get('/')
+      .set('Range', 'bytes=0-100')
+      .expect(200, '"bytes"', done)
+    })
+
+    it('should accept any type', function (done) {
+      var app = express()
+
+      app.use(function (req, res) {
+        res.json(req.range(120).type)
+      })
+
+      request(app)
+      .get('/')
+      .set('Range', 'users=0-2')
+      .expect(200, '"users"', done)
+    })
+
+    it('should return undefined if no range', function (done) {
+      var app = express()
+
+      app.use(function (req, res) {
+        res.send(String(req.range(120)))
+      })
+
+      request(app)
+      .get('/')
+      .expect(200, 'undefined', done)
     })
   })
 
   describe('.range(size, options)', function(){
     describe('with "combine: true" option', function(){
-      it('should return combined ranges', function(){
-        var ranges = [{ start: 0, end: 100 }]
-        ranges.type = 'bytes'
-        assert.deepEqual(req('bytes=0-50,51-100').range(120, { combine: true }), ranges)
+      it('should return combined ranges', function (done) {
+        var app = express()
+
+        app.use(function (req, res) {
+          res.json(req.range(120, {
+            combine: true
+          }))
+        })
+
+        request(app)
+        .get('/')
+        .set('Range', 'bytes=0-50,51-100')
+        .expect(200, '[{"start":0,"end":100}]', done)
       })
     })
   })