From adca01b997d7e8f8d491f24749743e4bba8d6e7a Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Tue, 12 Sep 2017 13:46:42 -0400 Subject: [PATCH 1/2] Container test checks filenames. --- test/integration/ldp-test.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/test/integration/ldp-test.js b/test/integration/ldp-test.js index 932f4656c..67da4c1bd 100644 --- a/test/integration/ldp-test.js +++ b/test/integration/ldp-test.js @@ -245,26 +245,19 @@ describe('LDP', function () { }) }) - it('should ldp:contains the same amount of files in dir', function (done) { + it('should ldp:contains the same files in dir', function (done) { ldp.listContainer(path.join(__dirname, '../resources/sampleContainer/'), 'https://server.tld/resources/sampleContainer/', 'https://server.tld', '', 'text/turtle', function (err, data) { if (err) done(err) - fs.readdir(path.join(__dirname, '../resources/sampleContainer/'), function (err, files) { - var graph = $rdf.graph() - $rdf.parse( - data, - graph, - 'https://server.tld/sampleContainer', - 'text/turtle') + fs.readdir(path.join(__dirname, '../resources/sampleContainer/'), function (err, expectedFiles) { + const graph = $rdf.graph() + $rdf.parse(data, graph, 'https://server.tld/sampleContainer', 'text/turtle') + const statements = graph.match(null, ns.ldp('contains'), null) + const files = statements.map(s => s.object.value.replace(/.*\//, '')) - var statements = graph.each( - undefined, - ns.ldp('contains'), - undefined) - - assert.notEqual(graph.statements.length, 0) - assert.equal(statements.length, files.length) - assert.notOk(err) - done() + files.sort() + expectedFiles.sort() + assert.deepEqual(files, expectedFiles) + done(err) }) }) }) From fd7fa51d57b7b5a25f3540bc150ed1b19c84b2af Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Tue, 12 Sep 2017 14:02:46 -0400 Subject: [PATCH 2/2] Join container paths as filenames, not URLs. Fixes #587. --- lib/ldp-container.js | 19 +++++++++---------- test/integration/ldp-test.js | 4 +++- .../sampleContainer/filename with spaces.txt | 0 3 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 test/resources/sampleContainer/filename with spaces.txt diff --git a/lib/ldp-container.js b/lib/ldp-container.js index a0420c28b..05796f62d 100644 --- a/lib/ldp-container.js +++ b/lib/ldp-container.js @@ -4,15 +4,14 @@ module.exports.addStats = addStats module.exports.getMetadataGraph = getMetadataGraph module.exports.readdir = readdir -var $rdf = require('rdflib') -var debug = require('./debug') -var error = require('./http-error') -var fs = require('fs') -var ns = require('solid-namespace')($rdf) -var S = require('string') -// var turtleExtension = '.ttl' -var mime = require('mime-types') -const url = require('url') +const $rdf = require('rdflib') +const debug = require('./debug') +const error = require('./http-error') +const fs = require('fs') +const ns = require('solid-namespace')($rdf) +const S = require('string') +const mime = require('mime-types') +const path = require('path') function addContainerStats (ldp, reqUri, filename, resourceGraph, next) { ldp.stat(filename, function (err, containerStats) { @@ -38,7 +37,7 @@ function addFile (ldp, resourceGraph, containerUri, reqUri, uri, container, file return callback(null) } - let filePath = url.resolve(container, file) + const filePath = path.join(container, file) // Get file stats ldp.stat(filePath, function (err, stats) { diff --git a/test/integration/ldp-test.js b/test/integration/ldp-test.js index 67da4c1bd..2d03b94c8 100644 --- a/test/integration/ldp-test.js +++ b/test/integration/ldp-test.js @@ -252,7 +252,9 @@ describe('LDP', function () { const graph = $rdf.graph() $rdf.parse(data, graph, 'https://server.tld/sampleContainer', 'text/turtle') const statements = graph.match(null, ns.ldp('contains'), null) - const files = statements.map(s => s.object.value.replace(/.*\//, '')) + const files = statements + .map(s => s.object.value.replace(/.*\//, '')) + .map(decodeURIComponent) files.sort() expectedFiles.sort() diff --git a/test/resources/sampleContainer/filename with spaces.txt b/test/resources/sampleContainer/filename with spaces.txt new file mode 100644 index 000000000..e69de29bb