diff --git a/src/fastboot-headers.js b/src/fastboot-headers.js index 1fe2549..1e4aea0 100644 --- a/src/fastboot-headers.js +++ b/src/fastboot-headers.js @@ -5,7 +5,14 @@ function FastBootHeaders(headers) { this.headers = {}; for (var header in headers) { - this.headers[header] = headers[header].split(', '); + let value = headers[header]; + + // convert to array if not already + if (typeof value === 'string') { + value = value.split(', '); + } + + this.headers[header] = value; } } diff --git a/test/fastboot-headers-test.js b/test/fastboot-headers-test.js index 10eb435..1f43a4e 100644 --- a/test/fastboot-headers-test.js +++ b/test/fastboot-headers-test.js @@ -68,6 +68,15 @@ describe('FastBootHeaders', function() { expect(headers.has('host')).to.be.false; }); + it('handles header values that are already an array', function() { + var headers = { + 'x-test-header': ['value1', 'value2'] + }; + headers = new FastBootHeaders(headers); + + expect(headers.getAll('x-test-header')).to.deep.equal(['value1', 'value2']); + }); + it('appends entries onto a header, regardless of casing', function() { var headers = new FastBootHeaders(); @@ -149,4 +158,3 @@ describe('FastBootHeaders', function() { expect(entriesIterator.next()).to.deep.equal({ value: undefined, done: true }); }); }); -