Skip to content

Commit da258d8

Browse files
committed
Remove ldp.root in favor of ResourceMapper
1 parent 88f6795 commit da258d8

File tree

8 files changed

+57
-39
lines changed

8 files changed

+57
-39
lines changed

lib/ldp.js

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,6 @@ class LDP {
3737
constructor (argv = {}) {
3838
extend(this, argv)
3939

40-
// Setting root
41-
if (!this.root) {
42-
this.root = process.cwd()
43-
}
44-
if (!this.root.endsWith('/')) {
45-
this.root += '/'
46-
}
47-
4840
// Suffixes
4941
if (!this.suffixAcl) {
5042
this.suffixAcl = '.acl'
@@ -82,7 +74,7 @@ class LDP {
8274
debug.settings('Config path: ' + this.configPath)
8375
debug.settings('Suffix Acl: ' + this.suffixAcl)
8476
debug.settings('Suffix Meta: ' + this.suffixMeta)
85-
debug.settings('Filesystem Root: ' + this.root)
77+
debug.settings('Filesystem Root: ' + (this.resourceMapper ? this.resourceMapper._rootPath : 'none'))
8678
debug.settings('Allow WebID authentication: ' + !!this.webid)
8779
debug.settings('Live-updates: ' + !!this.live)
8880
debug.settings('Multi-user: ' + !!this.multiuser)

lib/models/account-manager.js

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,17 +131,7 @@ class AccountManager {
131131
* @return {string}
132132
*/
133133
accountDirFor (accountName) {
134-
let accountDir
135-
136-
if (this.multiuser) {
137-
let uri = this.accountUriFor(accountName)
138-
let hostname = url.parse(uri).hostname
139-
accountDir = path.join(this.store.root, hostname)
140-
} else {
141-
// single user mode
142-
accountDir = this.store.root
143-
}
144-
return accountDir
134+
return this.store.resourceMapper.getBasePath(url.parse(this.accountUriFor(accountName)).hostname)
145135
}
146136

147137
/**

lib/utils.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module.exports.routeResolvedFile = routeResolvedFile
1212
module.exports.getQuota = getQuota
1313
module.exports.overQuota = overQuota
1414

15+
const fs = require('fs')
1516
const path = require('path')
1617
const util = require('util')
1718
const $rdf = require('rdflib')

test/integration/account-manager-test.js

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ chai.should()
99
const LDP = require('../../lib/ldp')
1010
const SolidHost = require('../../lib/models/solid-host')
1111
const AccountManager = require('../../lib/models/account-manager')
12+
const LegacyResourceMapper = require('../../lib/legacy-resource-mapper')
1213

1314
const testAccountsDir = path.join(__dirname, '../resources/accounts')
1415
const accountTemplatePath = path.join(__dirname, '../../default-templates/new-account')
@@ -29,7 +30,10 @@ describe('AccountManager', () => {
2930

3031
describe('in multi user mode', () => {
3132
let multiuser = true
32-
let store = new LDP({ root: testAccountsDir, multiuser })
33+
let resourceMapper = new LegacyResourceMapper({
34+
includeHost: multiuser
35+
})
36+
let store = new LDP({ multiuser, resourceMapper })
3337
let options = { multiuser, store, host }
3438
let accountManager = AccountManager.from(options)
3539

@@ -54,9 +58,13 @@ describe('AccountManager', () => {
5458
let multiuser = false
5559

5660
it('resolves to true if root .acl exists in root storage', () => {
61+
let resourceMapper = new LegacyResourceMapper({
62+
includeHost: multiuser,
63+
rootPath: path.join(testAccountsDir, 'tim.localhost')
64+
})
5765
let store = new LDP({
58-
root: path.join(testAccountsDir, 'tim.localhost'),
59-
multiuser
66+
multiuser,
67+
resourceMapper
6068
})
6169
let options = { multiuser, store, host }
6270
let accountManager = AccountManager.from(options)
@@ -68,9 +76,13 @@ describe('AccountManager', () => {
6876
})
6977

7078
it('resolves to false if root .acl does not exist in root storage', () => {
79+
let resourceMapper = new LegacyResourceMapper({
80+
includeHost: multiuser,
81+
rootPath: testAccountsDir
82+
})
7183
let store = new LDP({
72-
root: testAccountsDir,
73-
multiuser
84+
multiuser,
85+
resourceMapper
7486
})
7587
let options = { multiuser, store, host }
7688
let accountManager = AccountManager.from(options)
@@ -86,7 +98,11 @@ describe('AccountManager', () => {
8698
describe('createAccountFor()', () => {
8799
it('should create an account directory', () => {
88100
let multiuser = true
89-
let store = new LDP({ root: testAccountsDir, multiuser })
101+
let resourceMapper = new LegacyResourceMapper({
102+
includeHost: multiuser,
103+
rootPath: testAccountsDir
104+
})
105+
let store = new LDP({ multiuser, resourceMapper })
90106
let options = { host, multiuser, store, accountTemplatePath }
91107
let accountManager = AccountManager.from(options)
92108

test/integration/ldp-test.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ describe('LDP', function () {
2424
})
2525

2626
var ldp = new LDP({
27-
root: path.join(__dirname, '..'),
2827
resourceMapper,
2928
serverUri: 'https://localhost',
3029
multiuser: true,
@@ -164,7 +163,7 @@ describe('LDP', function () {
164163
var stream = stringToStream('hello world')
165164
await ldp.put('/resources/testPut.txt', stream)
166165
// Make sure it exists
167-
fs.stat(ldp.root + '/resources/testPut.txt', function (err) {
166+
fs.stat(ldp.resourceMapper._rootPath + '/resources/testPut.txt', function (err) {
168167
if (err) {
169168
throw err
170169
}
@@ -173,7 +172,7 @@ describe('LDP', function () {
173172
// Now delete the dummy file
174173
await ldp.delete('/resources/testPut.txt')
175174
// Make sure it does not exist anymore
176-
fs.stat(ldp.root + '/resources/testPut.txt', function (err, s) {
175+
fs.stat(ldp.resourceMapper._rootPath + '/resources/testPut.txt', function (err, s) {
177176
if (!err) {
178177
throw new Error('file still exists')
179178
}
@@ -185,7 +184,7 @@ describe('LDP', function () {
185184
var stream = stringToStream('hello world')
186185
await ldp.put('/resources/dummy/testPutBlocking.txt', stream)
187186
// Make sure it exists
188-
fs.stat(ldp.root + '/resources/dummy/testPutBlocking.txt', function (err) {
187+
fs.stat(ldp.resourceMapper._rootPath + '/resources/dummy/testPutBlocking.txt', function (err) {
189188
if (err) {
190189
throw err
191190
}
@@ -200,7 +199,7 @@ describe('LDP', function () {
200199
var stream = stringToStream('hello world')
201200
await ldp.put('/resources/dummy/dummy2/testPutBlocking.txt', stream)
202201
// Make sure it exists
203-
fs.stat(ldp.root + '/resources/dummy/dummy2/testPutBlocking.txt', function (err) {
202+
fs.stat(ldp.resourceMapper._rootPath + '/resources/dummy/dummy2/testPutBlocking.txt', function (err) {
204203
if (err) {
205204
throw err
206205
}

test/integration/params-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ describe('LDNODE params', function () {
3131
var server = supertest(ldp)
3232

3333
it('should fallback on current working directory', function () {
34-
assert.equal(ldp.locals.ldp.root, process.cwd() + '/')
34+
assert.equal(ldp.locals.ldp.resourceMapper._rootPath, process.cwd())
3535
})
3636

3737
it('should find resource in correct path', function (done) {
@@ -56,7 +56,7 @@ describe('LDNODE params', function () {
5656
var server = supertest(ldp)
5757

5858
it('should fallback on current working directory', function () {
59-
assert.equal(ldp.locals.ldp.root, './test/resources/')
59+
assert.equal(ldp.locals.ldp.resourceMapper._rootPath, './test/resources')
6060
})
6161

6262
it('should find resource in correct path', function (done) {

test/unit/account-manager-test.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const AccountManager = require('../../lib/models/account-manager')
1717
const UserAccount = require('../../lib/models/user-account')
1818
const TokenService = require('../../lib/services/token-service')
1919
const WebIdTlsCertificate = require('../../lib/models/webid-tls-certificate')
20+
const LegacyResourceMapper = require('../../lib/legacy-resource-mapper')
2021

2122
const testAccountsDir = path.join(__dirname, '../resources/accounts')
2223

@@ -102,17 +103,25 @@ describe('AccountManager', () => {
102103
describe('accountDirFor()', () => {
103104
it('should match the solid root dir config, in single user mode', () => {
104105
let multiuser = false
105-
let store = new LDP({ root: testAccountsDir, multiuser })
106+
let resourceMapper = new LegacyResourceMapper({
107+
includeHost: multiuser,
108+
rootPath: testAccountsDir
109+
})
110+
let store = new LDP({ multiuser, resourceMapper })
106111
let options = { multiuser, store, host }
107112
let accountManager = AccountManager.from(options)
108113

109114
let accountDir = accountManager.accountDirFor('alice')
110-
expect(accountDir).to.equal(store.root)
115+
expect(accountDir).to.equal(store.resourceMapper._rootPath)
111116
})
112117

113118
it('should compose the account dir in multi user mode', () => {
114119
let multiuser = true
115-
let store = new LDP({ root: testAccountsDir, multiuser })
120+
let resourceMapper = new LegacyResourceMapper({
121+
includeHost: multiuser,
122+
rootPath: testAccountsDir
123+
})
124+
let store = new LDP({ multiuser, resourceMapper })
116125
let host = SolidHost.from({ serverUri: 'https://localhost' })
117126
let options = { multiuser, store, host }
118127
let accountManager = AccountManager.from(options)
@@ -302,7 +311,10 @@ describe('AccountManager', () => {
302311

303312
describe('rootAclFor()', () => {
304313
it('should return the server root .acl in single user mode', () => {
305-
let store = new LDP({ suffixAcl: '.acl', multiuser: false })
314+
let resourceMapper = new LegacyResourceMapper({
315+
includeHost: false
316+
})
317+
let store = new LDP({ suffixAcl: '.acl', multiuser: false, resourceMapper })
306318
let options = { host, multiuser: false, store }
307319
let accountManager = AccountManager.from(options)
308320

@@ -314,7 +326,10 @@ describe('AccountManager', () => {
314326
})
315327

316328
it('should return the profile root .acl in multi user mode', () => {
317-
let store = new LDP({ suffixAcl: '.acl', multiuser: true })
329+
let resourceMapper = new LegacyResourceMapper({
330+
includeHost: true
331+
})
332+
let store = new LDP({ suffixAcl: '.acl', multiuser: true, resourceMapper })
318333
let options = { host, multiuser: true, store }
319334
let accountManager = AccountManager.from(options)
320335

test/unit/user-accounts-api-test.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const LDP = require('../../lib/ldp')
1313
const SolidHost = require('../../lib/models/solid-host')
1414
const AccountManager = require('../../lib/models/account-manager')
1515
const testAccountsDir = path.join(__dirname, '..', 'resources', 'accounts')
16+
var LegacyResourceMapper = require('../../lib/legacy-resource-mapper')
1617

1718
const api = require('../../lib/api/accounts/user-accounts')
1819

@@ -26,7 +27,11 @@ describe('api/accounts/user-accounts', () => {
2627
describe('newCertificate()', () => {
2728
describe('in multi user mode', () => {
2829
let multiuser = true
29-
let store = new LDP({ root: testAccountsDir, multiuser })
30+
let resourceMapper = new LegacyResourceMapper({
31+
includeHost: multiuser,
32+
rootPath: testAccountsDir
33+
})
34+
let store = new LDP({ multiuser, resourceMapper })
3035

3136
it('should throw a 400 error if spkac param is missing', done => {
3237
let options = { host, store, multiuser, authMethod: 'oidc' }

0 commit comments

Comments
 (0)