solid-server 5.8.8-3f2fe825 → 5.8.8-4cf09686

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/common/js/index-buttons.mjs +11 -5
  2. package/config/templates/server/index.html +1 -1
  3. package/coverage/tmp/coverage-2264-1767721071420-0.json +1 -0
  4. package/coverage/tmp/{coverage-2270-1766877996470-0.json → coverage-2265-1767721050068-0.json} +1 -1
  5. package/default-templates/server/index.html +1 -1
  6. package/eslint.config.mjs +1 -1
  7. package/lib/create-server.mjs +2 -2
  8. package/lib/handlers/auth-proxy.mjs +4 -5
  9. package/lib/handlers/cors-proxy.mjs +2 -1
  10. package/lib/handlers/get.mjs +3 -3
  11. package/lib/ldp.mjs +2 -2
  12. package/lib/models/account-manager.mjs +3 -3
  13. package/lib/utils.mjs +1 -1
  14. package/package.json +28 -15
  15. package/solid-server-5.8.8.tgz +0 -0
  16. package/test/index.mjs +2 -2
  17. package/test/integration/account-manager-test.mjs +2 -2
  18. package/test/integration/acl-oidc-test.mjs +1 -1
  19. package/test/integration/authentication-oidc-test.mjs +2 -1
  20. package/test/integration/http-copy-test.mjs +2 -2
  21. package/test/integration/oidc-manager-test.mjs +95 -1
  22. package/test/integration/params-test.mjs +5 -5
  23. package/test/resources/accounts/db/oidc/op/clients/{_key_9bb7523c8ddc5c445f210cc36c2d2e26.json → _key_69eaaa0e44e3f95d54a021c5b41e6d72.json} +1 -1
  24. package/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +1 -1
  25. package/test/resources/accounts-scenario/alice/db/oidc/op/clients/{_key_80b4257058990d4e0b6255490b635b19.json → _key_c07d7590e034645477f72d1d3000b04e.json} +1 -1
  26. package/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +538 -313
  27. package/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +1 -1
  28. package/test/resources/accounts-scenario/bob/db/oidc/op/clients/{_key_01798c37b9663a7129689752efaa329f.json → _key_a10918196ba5adab47f1cf77ec7fa4a6.json} +1 -1
  29. package/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +538 -313
  30. package/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +1 -1
  31. package/test/resources/accounts-scenario/charlie/db/oidc/op/clients/{_key_0606dda8525a70b23719906c2b258f1b.json → _key_e5c13302f9989c257c6967238e7ae2df.json} +1 -1
  32. package/test/resources/accounts-scenario/charlie/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A5002.json +1 -1
  33. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/clients/{_key_cb72eef4d57f4ddd28368afc5534b2d3.json → _key_e262eb5992e08f1284fbda4d22e0f363.json} +1 -1
  34. package/test/resources/accounts-strict-origin-off/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7010.json +1 -1
  35. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/clients/{_key_4c878fad2e43e354847663498e9a3682.json → _key_94d6296485729c61ea033a86a1ee2b9b.json} +1 -1
  36. package/test/resources/accounts-strict-origin-off/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7011.json +1 -1
  37. package/test/resources/config/templates/server/index.html +1 -1
  38. package/test/unit/account-manager-test.mjs +2 -2
  39. package/test/unit/create-account-request-test.mjs +1 -1
  40. package/test/unit/email-welcome-test.mjs +1 -1
  41. package/test/utils/index.mjs +2 -2
  42. package/test/utils.mjs +5 -5
  43. package/common/js/auth-buttons.js +0 -67
  44. package/common/js/index-buttons.js +0 -44
  45. package/coverage/tmp/coverage-2269-1766878018867-0.json +0 -1
@@ -48,7 +48,7 @@
48
48
  </div> <!-- end container-->
49
49
 
50
50
  <script src="/mashlib.js"></script>
51
- <script src="/common/js/index-buttons.js"></script>
51
+ <script src="/common/js/index-buttons.mjs"></script>
52
52
 
53
53
  </body>
54
54
  </html>
package/eslint.config.mjs CHANGED
@@ -21,7 +21,7 @@ export default [
21
21
  },
22
22
  rules: {
23
23
  // StandardJS-like rules
24
- 'no-unused-vars': ['error', {
24
+ 'no-unused-vars': ['warn', {
25
25
  args: 'none',
26
26
  caughtErrors: 'none',
27
27
  ignoreRestSiblings: true,
@@ -65,8 +65,8 @@ function createServer (argv, app) {
65
65
  }
66
66
 
67
67
  const credentials = Object.assign({
68
- key,
69
- cert
68
+ key: key,
69
+ cert: cert
70
70
  }, argv)
71
71
 
72
72
  if (ldp.webid && ldp.auth === 'tls') {
@@ -6,7 +6,8 @@ import debug from '../debug.mjs'
6
6
  import allow from './allow.mjs'
7
7
 
8
8
  const PROXY_SETTINGS = {
9
- changeOrigin: true // Default settings; target is provided per-proxy via function parameter
9
+ logLevel: 'silent',
10
+ changeOrigin: true
10
11
  }
11
12
  const REQUIRED_PERMISSIONS = {
12
13
  get: ['Read'],
@@ -30,10 +31,8 @@ function addAuthProxyHandler (app, sourcePath, target) {
30
31
  const sourcePathLength = sourcePath.length
31
32
  const settings = Object.assign({
32
33
  target,
33
- on: {
34
- proxyReq: addAuthHeaders,
35
- proxyReqWs: addAuthHeaders
36
- },
34
+ onProxyReq: addAuthHeaders,
35
+ onProxyReqWs: addAuthHeaders,
37
36
  pathRewrite: path => path.substr(sourcePathLength)
38
37
  }, PROXY_SETTINGS)
39
38
 
@@ -14,7 +14,8 @@ const CORS_SETTINGS = {
14
14
  origin: true
15
15
  }
16
16
  const PROXY_SETTINGS = {
17
- target: 'http://placeholder', // Placeholder required by v3; actual target determined by router function
17
+ target: 'dynamic',
18
+ logLevel: 'silent',
18
19
  changeOrigin: true,
19
20
  followRedirects: true,
20
21
  proxyTimeout: 10000,
@@ -48,9 +48,9 @@ export default async function handler (req, res, next) {
48
48
 
49
49
  const options = {
50
50
  hostname: req.hostname,
51
- path,
52
- includeBody,
53
- possibleRDFType,
51
+ path: path,
52
+ includeBody: includeBody,
53
+ possibleRDFType: possibleRDFType,
54
54
  range: req.headers.range,
55
55
  contentType: req.headers.accept
56
56
  }
package/lib/ldp.mjs CHANGED
@@ -9,7 +9,7 @@ import debug from './debug.mjs'
9
9
  import error from './http-error.mjs'
10
10
  import { stringToStream, serialize, overQuota, getContentType, parse } from './utils.mjs'
11
11
  import extend from 'extend'
12
- import { rimraf } from 'rimraf'
12
+ import rimraf from 'rimraf'
13
13
  import { exec } from 'child_process'
14
14
  import * as ldpContainer from './ldp-container.mjs'
15
15
  import { promisify } from 'util'
@@ -543,7 +543,7 @@ class LDP {
543
543
 
544
544
  // Delete the directory recursively
545
545
  try {
546
- await rimraf(directory)
546
+ await promisify(rimraf)(directory)
547
547
  } catch (err) {
548
548
  throw error(err, 'Failed to delete the container')
549
549
  }
@@ -258,7 +258,7 @@ class AccountManager {
258
258
  const emailData = {
259
259
  to: userAccount.email,
260
260
  webId: userAccount.webId,
261
- deleteUrl
261
+ deleteUrl: deleteUrl
262
262
  }
263
263
  return this.emailService.sendWithTemplate('delete-account.mjs', emailData)
264
264
  })
@@ -275,7 +275,7 @@ class AccountManager {
275
275
  webId: userAccount.webId,
276
276
  resetUrl
277
277
  }
278
- return this.emailService.sendWithTemplate('reset-password', emailData)
278
+ return this.emailService.sendWithTemplate('reset-password.mjs', emailData)
279
279
  })
280
280
  }
281
281
 
@@ -289,7 +289,7 @@ class AccountManager {
289
289
  webid: newUser.webId,
290
290
  name: newUser.displayName
291
291
  }
292
- return emailService.sendWithTemplate('welcome', emailData)
292
+ return emailService.sendWithTemplate('welcome.mjs', emailData)
293
293
  }
294
294
  }
295
295
 
package/lib/utils.mjs CHANGED
@@ -289,7 +289,7 @@ export async function overQuota (root, serverUri) {
289
289
  * so it needs to be rewritten.
290
290
  */
291
291
  function actualSize (root) {
292
- return getSize(root)
292
+ return util.promisify(getSize)(root)
293
293
  }
294
294
 
295
295
  function _asyncReadfile (filename) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "solid-server",
3
3
  "description": "Solid server on top of the file-system",
4
- "version": "5.8.8-3f2fe825",
4
+ "version": "5.8.8-4cf09686",
5
5
  "author": {
6
6
  "name": "Tim Berners-Lee",
7
7
  "email": "timbl@w3.org"
@@ -62,11 +62,12 @@
62
62
  "@fastify/busboy": "^3.2.0",
63
63
  "@fastify/pre-commit": "^2.2.1",
64
64
  "@solid/acl-check": "^0.4.5",
65
- "@solid/oidc-auth-manager": "^0.25.0",
66
- "@solid/oidc-op": "^0.12.0",
67
- "@solid/oidc-rp": "^0.12.0",
65
+ "@solid/oidc-auth-manager": "^0.25.2",
66
+ "@solid/oidc-op": "^0.12.1",
67
+ "@solid/oidc-rp": "^0.12.1",
68
+ "@solid/solid-multi-rp-client": "^0.7.2",
68
69
  "async-lock": "^1.4.1",
69
- "body-parser": "^2.2.1",
70
+ "body-parser": "^1.20.4",
70
71
  "bootstrap": "^3.4.1",
71
72
  "cached-path-relative": "^1.1.0",
72
73
  "camelize": "^1.0.1",
@@ -75,6 +76,7 @@
75
76
  "commander": "^14.0.2",
76
77
  "cors": "^2.8.5",
77
78
  "debug": "^4.4.3",
79
+ "eslint": "^9.39.2",
78
80
  "express": "^4.22.1",
79
81
  "express-accept-events": "^0.3.0",
80
82
  "express-handlebars": "^5.3.5",
@@ -84,17 +86,17 @@
84
86
  "extend": "^3.0.2",
85
87
  "from2": "^2.3.0",
86
88
  "fs-extra": "^11.3.3",
87
- "get-folder-size": "^5.0.0",
89
+ "get-folder-size": "^2.0.1",
88
90
  "glob": "^13.0.0",
89
91
  "global-tunnel-ng": "^2.7.1",
90
92
  "handlebars": "^4.7.8",
91
- "http-proxy-middleware": "^3.0.5",
92
- "inquirer": "^13.1.0",
93
+ "http-proxy-middleware": "^2.0.9",
94
+ "inquirer": "^8.2.7",
93
95
  "into-stream": "^9.0.0",
94
96
  "ip-range-check": "0.2.0",
95
97
  "is-ip": "^5.0.1",
96
98
  "li": "^1.3.0",
97
- "mashlib": "^1.11.1",
99
+ "mashlib": "^2.0.0-de1f6b8e",
98
100
  "mime-types": "^3.0.2",
99
101
  "negotiator": "^1.0.0",
100
102
  "node-forge": "^1.3.3",
@@ -102,9 +104,9 @@
102
104
  "nodemailer": "^7.0.12",
103
105
  "oidc-op-express": "^0.0.3",
104
106
  "owasp-password-strength-test": "^1.3.0",
105
- "rdflib": "^2.3.2",
107
+ "rdflib": "^2.3.3",
106
108
  "recursive-readdir": "^2.2.3",
107
- "rimraf": "^6.1.2",
109
+ "rimraf": "^3.0.2",
108
110
  "solid-auth-client": "^2.5.6",
109
111
  "solid-namespace": "^0.5.4",
110
112
  "solid-ws": "^0.4.3",
@@ -120,14 +122,13 @@
120
122
  "devDependencies": {
121
123
  "@cxres/structured-headers": "^2.0.0-nesting.0",
122
124
  "@eslint/js": "^9.39.2",
123
- "@solid/solid-auth-oidc": "^0.6.0",
125
+ "@solid/solid-auth-oidc": "^0.6.1",
124
126
  "c8": "^10.1.3",
125
127
  "chai": "^4.5.0",
126
128
  "chai-as-promised": "7.1.2",
127
129
  "cross-env": "^10.1.0",
128
130
  "dirty-chai": "2.0.1",
129
- "eslint": "^9.39.2",
130
- "globals": "^16.5.0",
131
+ "globals": "^17.0.0",
131
132
  "localstorage-memory": "1.0.3",
132
133
  "mocha": "^11.7.5",
133
134
  "nock": "^13.5.6",
@@ -155,7 +156,7 @@
155
156
  "build": "echo nothing to build",
156
157
  "solid": "node ./bin/solid",
157
158
  "lint": "eslint \"**/*.mjs\"",
158
- "lint:fix": "eslint --fix \"**/*.mjs\"",
159
+ "lint-fix": "eslint --fix \"**/*.mjs\"",
159
160
  "validate": "node ./test/validate-turtle.mjs",
160
161
  "c8": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 c8 --reporter=text-summary mocha --recursive test/unit/ test/integration/",
161
162
  "mocha": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 mocha --recursive test/unit/ test/integration/",
@@ -192,6 +193,18 @@
192
193
  "node_modules/**"
193
194
  ]
194
195
  },
196
+ "standard": {
197
+ "globals": [
198
+ "after",
199
+ "afterEach",
200
+ "before",
201
+ "beforeEach",
202
+ "describe",
203
+ "it",
204
+ "fetch",
205
+ "AbortController"
206
+ ]
207
+ },
195
208
  "bin": {
196
209
  "solid": "bin/solid"
197
210
  },
Binary file
package/test/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import fs from 'fs-extra'
2
- import { rimrafSync } from 'rimraf'
2
+ import rimraf from 'rimraf'
3
3
  import path from 'path'
4
4
  import { fileURLToPath } from 'url'
5
5
  import OIDCProvider from '@solid/oidc-op'
@@ -15,7 +15,7 @@ const __dirname = path.dirname(__filename)
15
15
  const TEST_HOSTS = ['nic.localhost', 'tim.localhost', 'nicola.localhost']
16
16
 
17
17
  export function rm (file) {
18
- return rimrafSync(path.normalize(path.join(__dirname, '../resources/' + file)))
18
+ return rimraf.sync(path.normalize(path.join(__dirname, '../resources/' + file)))
19
19
  }
20
20
 
21
21
  export function cleanDir (dirPath) {
@@ -51,7 +51,7 @@ describe('AccountManager', () => {
51
51
  // Note: test/resources/accounts/tim.localhost/ exists in this repo
52
52
  return accountManager.accountExists('tim')
53
53
  .then(exists => {
54
- console.log('DEBUG tim exists:', exists, typeof exists)
54
+ // console.log('DEBUG tim exists:', exists, typeof exists)
55
55
  expect(exists).to.not.be.false
56
56
  })
57
57
  })
@@ -60,7 +60,7 @@ describe('AccountManager', () => {
60
60
  // Note: test/resources/accounts/alice.localhost/ does NOT exist
61
61
  return accountManager.accountExists('alice')
62
62
  .then(exists => {
63
- console.log('DEBUG alice exists:', exists, typeof exists)
63
+ // console.log('DEBUG alice exists:', exists, typeof exists)
64
64
  expect(exists).to.not.be.false
65
65
  })
66
66
  })
@@ -32,7 +32,7 @@ function fetchRequest (method, options, callback) {
32
32
  callback(null, {
33
33
  statusCode: res.status,
34
34
  headers: Object.fromEntries(res.headers.entries()),
35
- body,
35
+ body: body,
36
36
  statusMessage: res.statusText
37
37
  }, body)
38
38
  })
@@ -690,7 +690,6 @@ describe('Authentication API (OIDC)', () => {
690
690
  // Native fetch: get first set-cookie header
691
691
  const setCookieHeaders = res.headers.getSetCookie ? res.headers.getSetCookie() : [res.headers.get('set-cookie')]
692
692
  cookie = setCookieHeaders[0]
693
-
694
693
  // Successful login gets redirected back to /authorize and then
695
694
  // back to app
696
695
  expect(postLoginUri.startsWith(aliceServerUri + '/sharing'))
@@ -716,6 +715,7 @@ describe('Authentication API (OIDC)', () => {
716
715
  expect(res.status).to.equal(302)
717
716
  const location = res.headers.get('location')
718
717
  postSharingUri = new URL(location, aliceServerUri).toString()
718
+
719
719
  // cookie = res.headers.get('set-cookie')
720
720
 
721
721
  // Successful login gets redirected back to /authorize and then
@@ -729,6 +729,7 @@ describe('Authentication API (OIDC)', () => {
729
729
  expect(res.status).to.equal(302)
730
730
  const location = res.headers.get('location')
731
731
  callbackUri = location.startsWith('http') ? location : new URL(location, aliceServerUri).toString()
732
+
732
733
  expect(callbackUri.startsWith('https://app.example.com#'))
733
734
  })
734
735
  })
@@ -52,8 +52,8 @@ describe('HTTP COPY API', function () {
52
52
 
53
53
  function createOptions (method, url, user) {
54
54
  const options = {
55
- method,
56
- url,
55
+ method: method,
56
+ url: url,
57
57
  headers: {}
58
58
  }
59
59
  if (user) {
@@ -1,5 +1,6 @@
1
1
  import { fileURLToPath } from 'url'
2
2
  import path from 'path'
3
+ import { URL } from 'url'
3
4
  import chai from 'chai'
4
5
  import fs from 'fs-extra'
5
6
  import { fromServerConfig } from '../../lib/models/oidc-manager.mjs'
@@ -37,5 +38,98 @@ describe('OidcManager', () => {
37
38
  expect(oidc.users.backend.path.endsWith('db/oidc/users'))
38
39
  expect(oidc.users.saltRounds).to.equal(saltRounds)
39
40
  })
41
+
42
+ it('should set the provider issuer which is used for iss claim in tokens', () => {
43
+ const providerUri = 'https://pivot-test.solidproject.org:8443'
44
+ const host = SolidHost.from({ serverUri: providerUri })
45
+
46
+ const saltRounds = 5
47
+ const argv = {
48
+ host,
49
+ dbPath,
50
+ saltRounds
51
+ }
52
+
53
+ const oidc = fromServerConfig(argv)
54
+
55
+ // Verify the issuer is set correctly for RFC 9207 compliance
56
+ // The iss claim in tokens should match this issuer value
57
+ expect(oidc.provider.issuer).to.exist
58
+ expect(oidc.provider.issuer).to.not.be.null
59
+ expect(oidc.provider.issuer).to.equal(providerUri)
60
+ console.log('Provider issuer (used for iss claim):', oidc.provider.issuer)
61
+ })
62
+ })
63
+
64
+ describe('RFC 9207 - Authorization redirect with iss parameter', () => {
65
+ it('should include iss parameter when redirecting after authorization', async () => {
66
+ const providerUri = 'https://localhost:8443'
67
+ const host = SolidHost.from({ providerUri })
68
+
69
+ const argv = {
70
+ host,
71
+ dbPath,
72
+ saltRounds: 5
73
+ }
74
+
75
+ const oidc = fromServerConfig(argv)
76
+
77
+ // Dynamically import BaseRequest from oidc-op
78
+ const { default: BaseRequest } = await import('@solid/oidc-op/src/handlers/BaseRequest.js')
79
+
80
+ // Create a mock request/response to test the redirect behavior
81
+ const mockReq = {
82
+ method: 'GET',
83
+ query: {
84
+ response_type: 'code',
85
+ redirect_uri: 'https://app.example.com/callback',
86
+ client_id: 'https://app.example.com',
87
+ state: 'test-state'
88
+ }
89
+ }
90
+
91
+ const mockRes = {
92
+ redirectCalled: false,
93
+ redirectUrl: '',
94
+ redirect (url) {
95
+ this.redirectCalled = true
96
+ this.redirectUrl = url
97
+ }
98
+ }
99
+
100
+ const request = new BaseRequest(mockReq, mockRes, oidc.provider)
101
+ request.params = mockReq.query
102
+
103
+ // Simulate a successful authorization by calling redirect with auth data
104
+ try {
105
+ request.redirect({ code: 'test-auth-code' })
106
+ } catch (err) {
107
+ // The redirect throws a HandledError, which is expected behavior
108
+ // We just need to check that the redirect was called with the right URL
109
+ }
110
+
111
+ expect(mockRes.redirectCalled).to.be.true
112
+ expect(mockRes.redirectUrl).to.exist
113
+
114
+ // Parse the redirect URL to check for iss parameter
115
+ const redirectUrl = new URL(mockRes.redirectUrl)
116
+
117
+ // The iss parameter can be in either the query string or hash fragment
118
+ // depending on the response_mode (query or fragment)
119
+ let issParam = redirectUrl.searchParams.get('iss')
120
+ if (!issParam && redirectUrl.hash) {
121
+ // Check in the hash fragment
122
+ const hashParams = new URLSearchParams(redirectUrl.hash.substring(1))
123
+ issParam = hashParams.get('iss')
124
+ }
125
+
126
+ console.log('Redirect URL:', mockRes.redirectUrl)
127
+ console.log('RFC 9207 - iss parameter in redirect:', issParam)
128
+
129
+ // RFC 9207: The iss parameter MUST be present and match the provider issuer
130
+ expect(issParam, 'RFC 9207: iss parameter must be present in authorization response').to.exist
131
+ expect(issParam).to.not.be.null
132
+ expect(issParam).to.equal(providerUri)
133
+ })
40
134
  })
41
- })
135
+ })
@@ -11,7 +11,7 @@ import ldnode, { createServer } from '../../index.mjs'
11
11
 
12
12
  const __filename = fileURLToPath(import.meta.url)
13
13
  const __dirname = path.dirname(__filename)
14
- console.log(getTestRoot())
14
+ // console.log(getTestRoot())
15
15
 
16
16
  describe('LDNODE params', function () {
17
17
  describe('suffixMeta', function () {
@@ -46,7 +46,7 @@ describe('LDNODE params', function () {
46
46
 
47
47
  it('should fallback on current working directory', function () {
48
48
  assert.equal(path.normalize(ldp.locals.ldp.resourceMapper._rootPath), path.normalize(process.cwd()))
49
- console.log('Root path is', ldp.locals.ldp.resourceMapper._rootPath)
49
+ // console.log('Root path is', ldp.locals.ldp.resourceMapper._rootPath)
50
50
  })
51
51
 
52
52
  it('new : should find resource in correct path', function (done) {
@@ -57,7 +57,7 @@ describe('LDNODE params', function () {
57
57
  const fileContent = '<#current> <#temp> 123 .'
58
58
  fs.mkdirSync(dirPath, { recursive: true })
59
59
  fs.writeFileSync(filePath, fileContent)
60
- console.log('Wrote file to', filePath)
60
+ // console.log('Wrote file to', filePath)
61
61
  server.get('/sampleContainer/example.ttl')
62
62
  .expect('Link', /http:\/\/www.w3.org\/ns\/ldp#Resource/)
63
63
  .expect(200)
@@ -71,7 +71,7 @@ describe('LDNODE params', function () {
71
71
  it.skip('initial : should find resource in correct path', function (done) {
72
72
  // Write to the default resources directory, matching the server's root
73
73
  const resourcePath = path.join('sampleContainer', 'example.ttl')
74
- console.log('initial : Writing test resource to', resourcePath)
74
+ // console.log('initial : Writing test resource to', resourcePath)
75
75
  setTestRoot(path.join(__dirname, '../resources/'))
76
76
  write('<#current> <#temp> 123 .', resourcePath)
77
77
 
@@ -102,7 +102,7 @@ describe('LDNODE params', function () {
102
102
  const fileContent = '<#current> <#temp> 123 .'
103
103
  fs.mkdirSync(dirPath, { recursive: true })
104
104
  fs.writeFileSync(filePath, fileContent)
105
- console.log('Wrote file to', filePath)
105
+ // console.log('Wrote file to', filePath)
106
106
 
107
107
  server.get('/sampleContainer/example.ttl')
108
108
  .expect('Link', /http:\/\/www.w3.org\/ns\/ldp#Resource/)
@@ -1 +1 @@
1
- {"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"9bb7523c8ddc5c445f210cc36c2d2e26","client_secret":"7236fa3d1b246a379e72eb8a349c823b","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"]}
1
+ {"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"69eaaa0e44e3f95d54a021c5b41e6d72","client_secret":"676dd69f6581893b7f99c474575e8e35","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"]}
@@ -1 +1 @@
1
- {"provider":{"url":"https://localhost:3457","configuration":{"issuer":"https://localhost:3457","jwks_uri":"https://localhost:3457/jwks","scopes_supported":["openid","offline_access"],"response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"token_types_supported":["legacyPop","dpop"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:3457/session","end_session_endpoint":"https://localhost:3457/logout","authorization_endpoint":"https://localhost:3457/authorize","token_endpoint":"https://localhost:3457/token","userinfo_endpoint":"https://localhost:3457/userinfo","registration_endpoint":"https://localhost:3457/register"},"jwks":{"keys":[{"kid":"lNZOB-DPE1k","kty":"RSA","alg":"RS256","n":"uvih8HfZj7Wu5Y8knLHxRY6v7oHL2jXWD-B6hXCreYhwaG9EEUt6Rp94p8-JBug3ywo8C_9dNg0RtQLEttcIC_vhqqlJI3pZxpGKXuD9h7XK-PppFVvgnfIGADG0Z-WzbcGDxlefStohR31Hjw5U3ioG3VtXGAYbqlOHM1l2UgDMJwBD5qwFmPP8gp5E2WQKCsuLvxDuOrkAbSDjw2zaI3RRmbLzdj4QkGej8GXhBptgM9RwcKmnoXu0sUdlootmcdiEg74yQ9M6EshNMhiv4k_W0rl7RqVOEL2PsAdmdbF_iWL8a90rGYOEILBrlU6bBR2mTvjV_Hvq-ifFy1YAmQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"Y38YKDtydoE","kty":"RSA","alg":"RS384","n":"tfgZKLjc8UMIblfAlVibJI_2uAxDNprn2VVLebS0sp6d1mtCXQkMYLlJ6e-7kavl8we391Ovnq5bRgpsFRq_LtRX9MpVlfioAUHwWPEG-R6vrQjgo4uynVhI3UEPHyNmZA5J4u34HNVTfAgmquomwwOmOv29ZNRxuYP1kVtscz1JeFPwg6LA7BxWrLc9ev4FQR6tjJKdo2kdLjAXR92odbCzJZ_jdYT3vIVCexMHxhoKnqCImkhfgKbGXcPHXWcelmuA2tzBaLut-Jjo0nJVQjRNDqy0Gyac0TptwFIxaiyHeTqugolUmEaJSfBSLszIRdlOTIGPJ7zdg5dJFK_Lxw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"WyMVv6BJ5Dk","kty":"RSA","alg":"RS512","n":"5JDlpbm2TjSW1wpdUZc5NHOqVVrNH_GumoODK_mk-MqImaIRpdR9b1ZJrK6FrW7HIF2bXvebD7olmp9a1goqe-ILbL_ORmhzlhRtyhjWQ-UOZqK5yOXqXXGQXgmok6TN-s55A-h_g12A7Yk5Y5S8EVa9EA4Axwqvm-Q_AkH0yS1qJo6BXYXb1fx205ucx-Ccot2LEBfxv8M7NOFTa-_G-sNchiKQMRoLhbZtLbSK2R1jkqGciEiRSLeXNG4nDu7Wd91-vhBixA1McxnzW96mW8lQwNXXo4gNH7SjONtYLlPQhZVEbmsQmXrOQN8a5RDkybFOIsbucItizSE9V_D7WQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"UykSj_HLgFA","kty":"RSA","alg":"RS256","n":"u79eQlGJN2XFNR-uEmPVtrB_ENRqaS81o6m63tZ5-PwhGHCwJ7rfVnnnvf6Ij_p91Z9pNpWBIVyZcw6UmQIoIBH-3BfxdaqhBxX9bf_N78TKj8_HU5IYjGijale4gog3kj9W2tJJO7R9iA43msjwLRD7pbAHp1iKFJgVTSXJlyLRbC82Dj4ivsEgJjPGvZt16OsGP5myIQwXEGzSPcEI0R9daZE5iM6xFZosaJ8B77eU-Aj3ciwxUBPi5BSZi2P1ZsF4QgSj3N7ZLbVKNW4FFr84IamA2YI0D7PyyNAE2PUZT8n0jHWRJKunuZuy5mgBY8H41KdBI6gNJqY90nHeJw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"BJDNTt8RpPE","kty":"RSA","alg":"RS384","n":"nXTd5AoT220nBkW6Zeax8caUI7_Tt0y4v9TEW8TOrzCVvhLBiKpQPjILUTfkGHzxPtysEzDQFSYdHWvg_fvGYItjJBunBMsKCNcb2_CDr2HXD6C0s62bAgct8bBSoaT1MLQ_3MaFKXSF3ZuB87X2B8CVUJ386HP2GY1kl54BuMdFELNZYhy9S_D0KHnQls52Vvb99X9WaYOyxvfr03PG-9EycnkWas5tn1pPFzT0DtJtBJ4IBtXQxTr98jpn_MCz1gRnMgzzkfSOcrMkkMXxePqxNINVKFXtRy7DaJiFOcCMbuK2RJUkSfY2uKcx0aKbp5Xhvix1W8N7c0Y90i6_6w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"z8iijSOOIs4","kty":"RSA","alg":"RS512","n":"rPCHP9XeTGOLf1Ezxeq_bdGdvYQZa993YcSVudT0EN6drTWqjykhUVEkT4MGAvLvax38kLARbPUTgMUV9UckDDWn6lRq4q6IZ5pytNOieQKZHzjEmQGzlbnEn1F2m1i5SAfBL-qsnt5q2RXMAiIUXk9q1ChJEHJxOZxnRIoQMc7yTsjjSdtIZKePFiYFn0nsl3A234ByyIBRjzZeoYEtTQKjDR7fP9LO78oZAgpwoGqmfI4IltqQYkFoqrN8I8l1yiJGyuvZRgDXUZ2fxGOQx2WD4xvlFL2TOCfN1UaPE9R4JdbRLLAOf5u1Sqnh4XTjDBhBbVodsmmbtvk4wFo-GQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"zD76wa11A2Y","kty":"RSA","alg":"RS256","n":"nMaSioq1An1J3tbkmc-zRrR8lkbP-WUVRuYhDxQvV-OcBw1R6cdyCcoeFJ1zuUT7ne6BlU6GMPRHuRKaH0KuOaiktUYtXm06T_HvtKFgCQSAKjMUj_ZHfTAJP8ahUsIc0D995XKp7nIGRF7Iy7I24QQFPRh7PmGlREZ52GJgYQgbm020-sWani0MqHoUFBlWxZW9NEqY1c3brN_qWnzjRKly6Kkk3sW1XHPcRLvoHnHQ6TKXJ8pfl-bNjTfK6zq9fDCZ_TY3qQZy66yT_2XPO6X0GHTdJsZlCj7Jg0qrilTHUkJra1bppTSAtVSQnSmYt_IV8zOYiVdJ3kw2khPcKw","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{},"registration":{"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"9bb7523c8ddc5c445f210cc36c2d2e26","client_secret":"7236fa3d1b246a379e72eb8a349c823b","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"],"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDozNDU3IiwiYXVkIjoiOWJiNzUyM2M4ZGRjNWM0NDVmMjEwY2MzNmMyZDJlMjYiLCJzdWIiOiI5YmI3NTIzYzhkZGM1YzQ0NWYyMTBjYzM2YzJkMmUyNiJ9.HJ-qzDvY4jv6rKWjauX6zUNI8Kz_Fy83WR7gx7hUiV7ak7OymMJ-GCt029dirkJr8as1xatDar0e0R0rMTvyggNGVaTYPInfRGvahnLQvzSQeyMfyFpe7B7PNKKohpNsRg-ohuG68Z3oYcIUbkpseT5wEA74V_yDwhyhCZgIS_xlClxRUOLGcEF2-25RzIzqupswqavPeV9Pkq54DcB1xawVhkaeS-thq6rl5cnkEsSYpNHG10pdYOUhYwjDu4DM9mKjRfbcZaRBLqJ20WpWq3fdq2En0djyAwUx_fZK2KyDXIjuBs8tg9buJYLcW07Bu0q5NJaSqJHk8C1as0ZAwg","registration_client_uri":"https://localhost:3457/register/9bb7523c8ddc5c445f210cc36c2d2e26","client_id_issued_at":1766878002,"client_secret_expires_at":0},"store":{}}
1
+ {"provider":{"url":"https://localhost:3457","configuration":{"issuer":"https://localhost:3457","jwks_uri":"https://localhost:3457/jwks","scopes_supported":["openid","offline_access"],"response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"token_types_supported":["legacyPop","dpop"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:3457/session","end_session_endpoint":"https://localhost:3457/logout","authorization_endpoint":"https://localhost:3457/authorize","token_endpoint":"https://localhost:3457/token","userinfo_endpoint":"https://localhost:3457/userinfo","registration_endpoint":"https://localhost:3457/register"},"jwks":{"keys":[{"kid":"lNZOB-DPE1k","kty":"RSA","alg":"RS256","n":"uvih8HfZj7Wu5Y8knLHxRY6v7oHL2jXWD-B6hXCreYhwaG9EEUt6Rp94p8-JBug3ywo8C_9dNg0RtQLEttcIC_vhqqlJI3pZxpGKXuD9h7XK-PppFVvgnfIGADG0Z-WzbcGDxlefStohR31Hjw5U3ioG3VtXGAYbqlOHM1l2UgDMJwBD5qwFmPP8gp5E2WQKCsuLvxDuOrkAbSDjw2zaI3RRmbLzdj4QkGej8GXhBptgM9RwcKmnoXu0sUdlootmcdiEg74yQ9M6EshNMhiv4k_W0rl7RqVOEL2PsAdmdbF_iWL8a90rGYOEILBrlU6bBR2mTvjV_Hvq-ifFy1YAmQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"Y38YKDtydoE","kty":"RSA","alg":"RS384","n":"tfgZKLjc8UMIblfAlVibJI_2uAxDNprn2VVLebS0sp6d1mtCXQkMYLlJ6e-7kavl8we391Ovnq5bRgpsFRq_LtRX9MpVlfioAUHwWPEG-R6vrQjgo4uynVhI3UEPHyNmZA5J4u34HNVTfAgmquomwwOmOv29ZNRxuYP1kVtscz1JeFPwg6LA7BxWrLc9ev4FQR6tjJKdo2kdLjAXR92odbCzJZ_jdYT3vIVCexMHxhoKnqCImkhfgKbGXcPHXWcelmuA2tzBaLut-Jjo0nJVQjRNDqy0Gyac0TptwFIxaiyHeTqugolUmEaJSfBSLszIRdlOTIGPJ7zdg5dJFK_Lxw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"WyMVv6BJ5Dk","kty":"RSA","alg":"RS512","n":"5JDlpbm2TjSW1wpdUZc5NHOqVVrNH_GumoODK_mk-MqImaIRpdR9b1ZJrK6FrW7HIF2bXvebD7olmp9a1goqe-ILbL_ORmhzlhRtyhjWQ-UOZqK5yOXqXXGQXgmok6TN-s55A-h_g12A7Yk5Y5S8EVa9EA4Axwqvm-Q_AkH0yS1qJo6BXYXb1fx205ucx-Ccot2LEBfxv8M7NOFTa-_G-sNchiKQMRoLhbZtLbSK2R1jkqGciEiRSLeXNG4nDu7Wd91-vhBixA1McxnzW96mW8lQwNXXo4gNH7SjONtYLlPQhZVEbmsQmXrOQN8a5RDkybFOIsbucItizSE9V_D7WQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"UykSj_HLgFA","kty":"RSA","alg":"RS256","n":"u79eQlGJN2XFNR-uEmPVtrB_ENRqaS81o6m63tZ5-PwhGHCwJ7rfVnnnvf6Ij_p91Z9pNpWBIVyZcw6UmQIoIBH-3BfxdaqhBxX9bf_N78TKj8_HU5IYjGijale4gog3kj9W2tJJO7R9iA43msjwLRD7pbAHp1iKFJgVTSXJlyLRbC82Dj4ivsEgJjPGvZt16OsGP5myIQwXEGzSPcEI0R9daZE5iM6xFZosaJ8B77eU-Aj3ciwxUBPi5BSZi2P1ZsF4QgSj3N7ZLbVKNW4FFr84IamA2YI0D7PyyNAE2PUZT8n0jHWRJKunuZuy5mgBY8H41KdBI6gNJqY90nHeJw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"BJDNTt8RpPE","kty":"RSA","alg":"RS384","n":"nXTd5AoT220nBkW6Zeax8caUI7_Tt0y4v9TEW8TOrzCVvhLBiKpQPjILUTfkGHzxPtysEzDQFSYdHWvg_fvGYItjJBunBMsKCNcb2_CDr2HXD6C0s62bAgct8bBSoaT1MLQ_3MaFKXSF3ZuB87X2B8CVUJ386HP2GY1kl54BuMdFELNZYhy9S_D0KHnQls52Vvb99X9WaYOyxvfr03PG-9EycnkWas5tn1pPFzT0DtJtBJ4IBtXQxTr98jpn_MCz1gRnMgzzkfSOcrMkkMXxePqxNINVKFXtRy7DaJiFOcCMbuK2RJUkSfY2uKcx0aKbp5Xhvix1W8N7c0Y90i6_6w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"z8iijSOOIs4","kty":"RSA","alg":"RS512","n":"rPCHP9XeTGOLf1Ezxeq_bdGdvYQZa993YcSVudT0EN6drTWqjykhUVEkT4MGAvLvax38kLARbPUTgMUV9UckDDWn6lRq4q6IZ5pytNOieQKZHzjEmQGzlbnEn1F2m1i5SAfBL-qsnt5q2RXMAiIUXk9q1ChJEHJxOZxnRIoQMc7yTsjjSdtIZKePFiYFn0nsl3A234ByyIBRjzZeoYEtTQKjDR7fP9LO78oZAgpwoGqmfI4IltqQYkFoqrN8I8l1yiJGyuvZRgDXUZ2fxGOQx2WD4xvlFL2TOCfN1UaPE9R4JdbRLLAOf5u1Sqnh4XTjDBhBbVodsmmbtvk4wFo-GQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"zD76wa11A2Y","kty":"RSA","alg":"RS256","n":"nMaSioq1An1J3tbkmc-zRrR8lkbP-WUVRuYhDxQvV-OcBw1R6cdyCcoeFJ1zuUT7ne6BlU6GMPRHuRKaH0KuOaiktUYtXm06T_HvtKFgCQSAKjMUj_ZHfTAJP8ahUsIc0D995XKp7nIGRF7Iy7I24QQFPRh7PmGlREZ52GJgYQgbm020-sWani0MqHoUFBlWxZW9NEqY1c3brN_qWnzjRKly6Kkk3sW1XHPcRLvoHnHQ6TKXJ8pfl-bNjTfK6zq9fDCZ_TY3qQZy66yT_2XPO6X0GHTdJsZlCj7Jg0qrilTHUkJra1bppTSAtVSQnSmYt_IV8zOYiVdJ3kw2khPcKw","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{},"registration":{"redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"client_id":"69eaaa0e44e3f95d54a021c5b41e6d72","client_secret":"676dd69f6581893b7f99c474575e8e35","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"],"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDozNDU3IiwiYXVkIjoiNjllYWFhMGU0NGUzZjk1ZDU0YTAyMWM1YjQxZTZkNzIiLCJzdWIiOiI2OWVhYWEwZTQ0ZTNmOTVkNTRhMDIxYzViNDFlNmQ3MiJ9.RYkuJ1wcFa-9J-wDyxnPkGjzQYV-DhkB-13VOzceJrT9zAL93P_ubUG0UEB7VPkzOYUg9j_TrX7Rc2Y0uYYZoOH0Vq43xrn0mEVY9wyBafKIexKJWb67rRi-3n3oRlHjC65AP_PLpuusCxQBdqq2Hv6YyR4cDfJs_C2ch3AEUfbKXWIndAmDjeLABum1RoD8LAOfda_bvLdVJEd5KnkTX3_ivKHH1IAcwZROuZdh5exwExrA2VOGDGTM_S34Vm-1tgFLusr_y7-7CYpsA9LBg7LL9KB4_kh6b50d640eV0KpeQUOCC4eQs7VCtvkh2Y0Tjz5HRQqEoFks0MJmbLcEw","registration_client_uri":"https://localhost:3457/register/69eaaa0e44e3f95d54a021c5b41e6d72","client_id_issued_at":1767721054,"client_secret_expires_at":0},"store":{}}
@@ -1 +1 @@
1
- {"redirect_uris":["https://localhost:7000/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"client_id":"80b4257058990d4e0b6255490b635b19","client_secret":"ca1226075071d3fd9bdba5cbda23b426","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7000/goodbye"]}
1
+ {"redirect_uris":["https://localhost:7000/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"client_id":"c07d7590e034645477f72d1d3000b04e","client_secret":"1ba8ff54cc77601349cf9312d77c3336","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7000/goodbye"]}