From 34816a76b084f8e009d1129d3a22d51061bac283 Mon Sep 17 00:00:00 2001 From: Shane Osbourne Date: Sun, 12 Apr 2015 13:12:56 +0100 Subject: [PATCH] fix(server): set index correctly if serveStaticOptions: {index: } given --- lib/options.js | 4 +- .../e2e/server/e2e.server.serveStatic.js | 67 +++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 test/specs/e2e/server/e2e.server.serveStatic.js diff --git a/lib/options.js b/lib/options.js index 441587dad..6e822417c 100644 --- a/lib/options.js +++ b/lib/options.js @@ -123,7 +123,9 @@ function setServerOpts(item) { index: indexarg })); } else { - item.setIn(optPath.concat(["index"]), indexarg); + if (!item.hasIn(optPath.concat(["index"]))) { + item.setIn(optPath.concat(["index"]), indexarg); + } } // cli extensions diff --git a/test/specs/e2e/server/e2e.server.serveStatic.js b/test/specs/e2e/server/e2e.server.serveStatic.js new file mode 100644 index 000000000..b0a65ad61 --- /dev/null +++ b/test/specs/e2e/server/e2e.server.serveStatic.js @@ -0,0 +1,67 @@ +"use strict"; + +var browserSync = require("../../../../index"); +var request = require("supertest"); +var assert = require("chai").assert; + +describe("E2E server test with serve static options", function () { + + it("sets the index of serve-static", function (done) { + + browserSync.reset(); + + var config = { + server: { + baseDir: "test/fixtures", + serveStaticOptions: { + index: "inputs.html" + } + }, + logLevel: "silent", + open: false + }; + + browserSync.create().init(config, function (err, bs) { + assert.equal(bs.options.getIn(["server", "serveStaticOptions", "index"]), "inputs.html"); + request(bs.server) + .get("/") + .expect(200) + .end(function (err, res) { + assert.deepEqual( + require("fs").readFileSync("test/fixtures/inputs.html", "utf-8"), + res.text + ); + bs.cleanup(); + done(); + }); + }); + }); + it("sets uses the default for serve static index", function (done) { + + browserSync.reset(); + + var config = { + server: { + baseDir: "test/fixtures", + serveStaticOptions: {} + }, + logLevel: "silent", + open: false + }; + + browserSync.create().init(config, function (err, bs) { + assert.equal(bs.options.getIn(["server", "serveStaticOptions", "index"]), "index.html"); + request(bs.server) + .get("/") + .expect(200) + .end(function (err, res) { + assert.deepEqual( + require("fs").readFileSync("test/fixtures/index.html", "utf-8"), + res.text + ); + bs.cleanup(); + done(); + }); + }); + }); +});