solid-server 5.8.7 → 5.8.8-8d509db1

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 (685) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/CONTRIBUTING.md +0 -0
  3. package/CONTRIBUTORS.md +0 -0
  4. package/Dockerfile +0 -0
  5. package/LICENSE.md +0 -0
  6. package/README.md +0 -0
  7. package/bin/config.json +0 -0
  8. package/bin/lib/cli-utils.mjs +54 -0
  9. package/bin/lib/cli.mjs +44 -0
  10. package/bin/lib/{init.js → init.mjs} +93 -94
  11. package/bin/lib/{invalidUsernames.js → invalidUsernames.mjs} +136 -148
  12. package/bin/lib/{migrateLegacyResources.js → migrateLegacyResources.mjs} +64 -69
  13. package/bin/lib/{options.js → options.mjs} +379 -405
  14. package/bin/lib/{start.js → start.mjs} +124 -148
  15. package/bin/lib/{updateIndex.js → updateIndex.mjs} +55 -56
  16. package/bin/solid +2 -2
  17. package/bin/solid-test +0 -0
  18. package/common/css/bootstrap.min.css +6 -0
  19. package/common/css/solid.css +0 -0
  20. package/common/fonts/glyphicons-halflings-regular.eot +0 -0
  21. package/common/fonts/glyphicons-halflings-regular.svg +0 -0
  22. package/common/fonts/glyphicons-halflings-regular.ttf +0 -0
  23. package/common/fonts/glyphicons-halflings-regular.woff +0 -0
  24. package/common/fonts/glyphicons-halflings-regular.woff2 +0 -0
  25. package/common/img/solid-emblem.svg +0 -0
  26. package/common/js/auth-buttons.js +0 -0
  27. package/common/js/auth-buttons.mjs +57 -0
  28. package/common/js/index-buttons.js +0 -0
  29. package/common/js/index-buttons.mjs +43 -0
  30. package/common/js/solid.js +0 -0
  31. package/common/js/solid.mjs +456 -0
  32. package/common/well-known/security.txt +0 -0
  33. package/config/defaults.js +0 -0
  34. package/config/defaults.mjs +22 -0
  35. package/config/templates/emails/delete-account.js +49 -0
  36. package/config/templates/emails/delete-account.mjs +31 -0
  37. package/config/templates/emails/invalid-username.js +30 -0
  38. package/config/templates/emails/invalid-username.mjs +27 -0
  39. package/config/templates/emails/reset-password.js +49 -0
  40. package/config/templates/emails/reset-password.mjs +31 -0
  41. package/config/templates/emails/welcome.js +39 -0
  42. package/config/templates/emails/welcome.mjs +23 -0
  43. package/config/templates/new-account/favicon.ico +0 -0
  44. package/config/templates/new-account/favicon.ico.acl +26 -0
  45. package/config/templates/new-account/profile/card$.ttl +26 -0
  46. package/config/templates/new-account/robots.txt +3 -0
  47. package/config/templates/new-account/robots.txt.acl +26 -0
  48. package/config/templates/new-account/settings/prefs.ttl +15 -0
  49. package/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  50. package/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  51. package/{default-templates/new-account/.meta.acl → config/templates/new-account/settings/publicTypeIndex.ttl.acl} +4 -4
  52. package/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  53. package/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  54. package/config/templates/server/favicon.ico +0 -0
  55. package/{.well-known/.acl → config/templates/server/favicon.ico.acl} +2 -2
  56. package/config/templates/server/index.html +54 -0
  57. package/config/templates/server/robots.txt +3 -0
  58. package/{default-templates/server/.well-known/.acl → config/templates/server/robots.txt.acl} +2 -2
  59. package/config/usernames-blacklist.json +0 -0
  60. package/config/views/account/account-deleted.hbs +17 -0
  61. package/config/views/account/delete-confirm.hbs +51 -0
  62. package/config/views/account/delete-link-sent.hbs +17 -0
  63. package/config/views/account/delete.hbs +51 -0
  64. package/config/views/account/invalid-username.hbs +22 -0
  65. package/config/views/account/register-disabled.hbs +6 -0
  66. package/config/views/account/register-form.hbs +133 -0
  67. package/config/views/account/register.hbs +24 -0
  68. package/config/views/auth/auth-hidden-fields.hbs +8 -0
  69. package/config/views/auth/change-password.hbs +58 -0
  70. package/config/views/auth/goodbye.hbs +23 -0
  71. package/config/views/auth/login-required.hbs +34 -0
  72. package/config/views/auth/login-tls.hbs +11 -0
  73. package/config/views/auth/login-username-password.hbs +28 -0
  74. package/config/views/auth/login.hbs +55 -0
  75. package/config/views/auth/no-permission.hbs +29 -0
  76. package/config/views/auth/password-changed.hbs +27 -0
  77. package/config/views/auth/reset-link-sent.hbs +21 -0
  78. package/config/views/auth/reset-password.hbs +52 -0
  79. package/config/views/auth/sharing.hbs +49 -0
  80. package/config/views/shared/create-account.hbs +8 -0
  81. package/config/views/shared/error.hbs +5 -0
  82. package/config.json-default +0 -0
  83. package/coverage/tmp/coverage-2254-1766613200322-0.json +1 -0
  84. package/coverage/tmp/coverage-2255-1766613179053-0.json +1 -0
  85. package/default-templates/emails/delete-account.js +0 -0
  86. package/default-templates/emails/delete-account.mjs +31 -0
  87. package/default-templates/emails/invalid-username.js +0 -0
  88. package/default-templates/emails/invalid-username.mjs +27 -0
  89. package/default-templates/emails/reset-password.js +0 -0
  90. package/default-templates/emails/reset-password.mjs +31 -0
  91. package/default-templates/emails/welcome.js +0 -0
  92. package/default-templates/emails/welcome.mjs +23 -0
  93. package/default-templates/new-account/favicon.ico +0 -0
  94. package/default-templates/new-account/favicon.ico.acl +0 -0
  95. package/default-templates/new-account/profile/card$.ttl +0 -0
  96. package/default-templates/new-account/robots.txt +0 -0
  97. package/default-templates/new-account/robots.txt.acl +0 -0
  98. package/default-templates/new-account/settings/prefs.ttl +0 -0
  99. package/default-templates/new-account/settings/privateTypeIndex.ttl +0 -0
  100. package/default-templates/new-account/settings/publicTypeIndex.ttl +0 -0
  101. package/default-templates/new-account/settings/publicTypeIndex.ttl.acl +0 -0
  102. package/default-templates/new-account/settings/serverSide.ttl.acl +0 -0
  103. package/default-templates/new-account/settings/serverSide.ttl.inactive +0 -0
  104. package/default-templates/server/favicon.ico +0 -0
  105. package/default-templates/server/favicon.ico.acl +0 -0
  106. package/default-templates/server/index.html +0 -0
  107. package/default-templates/server/robots.txt +0 -0
  108. package/default-templates/server/robots.txt.acl +0 -0
  109. package/default-views/account/account-deleted.hbs +0 -0
  110. package/default-views/account/delete-confirm.hbs +0 -0
  111. package/default-views/account/delete-link-sent.hbs +0 -0
  112. package/default-views/account/delete.hbs +0 -0
  113. package/default-views/account/invalid-username.hbs +0 -0
  114. package/default-views/account/register-disabled.hbs +0 -0
  115. package/default-views/account/register-form.hbs +0 -0
  116. package/default-views/account/register.hbs +0 -0
  117. package/default-views/auth/auth-hidden-fields.hbs +0 -0
  118. package/default-views/auth/change-password.hbs +0 -0
  119. package/default-views/auth/goodbye.hbs +0 -0
  120. package/default-views/auth/login-required.hbs +0 -0
  121. package/default-views/auth/login-tls.hbs +0 -0
  122. package/default-views/auth/login-username-password.hbs +0 -0
  123. package/default-views/auth/login.hbs +0 -0
  124. package/default-views/auth/no-permission.hbs +0 -0
  125. package/default-views/auth/password-changed.hbs +0 -0
  126. package/default-views/auth/reset-link-sent.hbs +0 -0
  127. package/default-views/auth/reset-password.hbs +0 -0
  128. package/default-views/auth/sharing.hbs +0 -0
  129. package/default-views/shared/create-account.hbs +0 -0
  130. package/default-views/shared/error.hbs +0 -0
  131. package/docker-compose.yml +0 -0
  132. package/docker-image/CONTRIBUTING.md +33 -0
  133. package/docker-image/Makefile +32 -0
  134. package/docker-image/README.md +65 -0
  135. package/docker-image/examples/docker-compose.all-in-one.yml +76 -0
  136. package/docker-image/examples/docker-compose.nginx.yml +51 -0
  137. package/docker-image/examples/docker-compose.simple.yml +34 -0
  138. package/docker-image/src/Dockerfile +34 -0
  139. package/docker-image/src/checks.sh +56 -0
  140. package/docker-image/src/create-temporary-cert.sh +14 -0
  141. package/docker-image/src/entrypoint.sh +8 -0
  142. package/{common/img/.gitkeep → docker-image/test/__init__.py} +0 -0
  143. package/docker-image/test/conftest.py +15 -0
  144. package/docker-image/test/test_image_foundations.py +51 -0
  145. package/docker-image/test/test_non_accessible_key_cert.py +36 -0
  146. package/docker-image/test/test_precondition_checks.py +41 -0
  147. package/docker-image/test/test_solid_default_config.py +66 -0
  148. package/docker-image/test/test_volumes.py +55 -0
  149. package/docker-image/test/wait_for_container.py +8 -0
  150. package/docs/how-to-delete-your-account.md +0 -0
  151. package/docs/login-and-grant-access-to-application.md +0 -0
  152. package/examples/custom-error-handling.js +0 -0
  153. package/examples/custom-error-handling.mjs +29 -0
  154. package/examples/ldp-with-webid.js +0 -0
  155. package/examples/ldp-with-webid.mjs +12 -0
  156. package/examples/simple-express-app.js +0 -0
  157. package/examples/simple-express-app.mjs +20 -0
  158. package/examples/simple-ldp-server.js +0 -0
  159. package/examples/simple-ldp-server.mjs +8 -0
  160. package/favicon.ico +0 -0
  161. package/favicon.ico.acl +0 -0
  162. package/index.cjs +4 -0
  163. package/index.html +0 -0
  164. package/index.mjs +23 -0
  165. package/lib/{acl-checker.js → acl-checker.mjs} +13 -15
  166. package/lib/api/accounts/{user-accounts.js → user-accounts.mjs} +17 -16
  167. package/lib/api/authn/{force-user.js → force-user.mjs} +5 -4
  168. package/lib/api/authn/index.mjs +8 -0
  169. package/lib/api/authn/{webid-oidc.js → webid-oidc.mjs} +27 -20
  170. package/lib/api/authn/{webid-tls.js → webid-tls.mjs} +12 -11
  171. package/lib/api/index.mjs +7 -0
  172. package/lib/{capability-discovery.js → capability-discovery.mjs} +3 -6
  173. package/lib/common/{fs-utils.js → fs-utils.mjs} +35 -43
  174. package/lib/common/template-utils.mjs +29 -0
  175. package/lib/common/{user-utils.js → user-utils.mjs} +24 -28
  176. package/lib/{create-app.js → create-app.mjs} +372 -361
  177. package/lib/{create-server.js → create-server.mjs} +32 -11
  178. package/lib/debug.mjs +37 -0
  179. package/lib/handlers/{allow.js → allow.mjs} +79 -83
  180. package/lib/handlers/{auth-proxy.js → auth-proxy.mjs} +4 -5
  181. package/lib/handlers/{copy.js → copy.mjs} +37 -39
  182. package/lib/handlers/{cors-proxy.js → cors-proxy.mjs} +9 -11
  183. package/lib/handlers/{delete.js → delete.mjs} +20 -22
  184. package/lib/handlers/{error-pages.js → error-pages.mjs} +144 -212
  185. package/lib/handlers/{get.js → get.mjs} +254 -252
  186. package/lib/handlers/{index.js → index.mjs} +7 -8
  187. package/lib/handlers/{notify.js → notify.mjs} +8 -10
  188. package/lib/handlers/{options.js → options.mjs} +3 -5
  189. package/lib/handlers/patch/{n3-patch-parser.js → n3-patch-parser.mjs} +57 -59
  190. package/lib/handlers/patch/{sparql-update-parser.js → sparql-update-parser.mjs} +14 -16
  191. package/lib/handlers/{patch.js → patch.mjs} +241 -235
  192. package/lib/handlers/{post.js → post.mjs} +101 -99
  193. package/lib/handlers/{put.js → put.mjs} +101 -105
  194. package/lib/handlers/{restrict-to-top-domain.js → restrict-to-top-domain.mjs} +2 -2
  195. package/lib/{header.js → header.mjs} +138 -143
  196. package/lib/{http-error.js → http-error.mjs} +35 -34
  197. package/lib/{ldp-container.js → ldp-container.mjs} +10 -12
  198. package/lib/ldp-copy.mjs +82 -0
  199. package/lib/ldp-middleware.mjs +38 -0
  200. package/lib/{ldp.js → ldp.mjs} +286 -75
  201. package/lib/{lock.js → lock.mjs} +10 -10
  202. package/lib/{metadata.js → metadata.mjs} +11 -11
  203. package/lib/models/account-manager.mjs +297 -0
  204. package/lib/models/account-template.mjs +70 -0
  205. package/lib/models/authenticator.mjs +161 -0
  206. package/lib/models/oidc-manager.mjs +23 -0
  207. package/lib/models/solid-host.mjs +63 -0
  208. package/lib/models/user-account.mjs +50 -0
  209. package/lib/models/webid-tls-certificate.mjs +97 -0
  210. package/lib/{payment-pointer-discovery.js → payment-pointer-discovery.mjs} +5 -8
  211. package/lib/{rdf-notification-template.js → rdf-notification-template.mjs} +3 -5
  212. package/lib/requests/add-cert-request.mjs +70 -0
  213. package/lib/requests/auth-request.mjs +151 -0
  214. package/lib/requests/{create-account-request.js → create-account-request.mjs} +249 -452
  215. package/lib/requests/delete-account-confirm-request.mjs +85 -0
  216. package/lib/requests/{delete-account-request.js → delete-account-request.mjs} +73 -134
  217. package/lib/requests/login-request.mjs +89 -0
  218. package/lib/requests/{password-change-request.js → password-change-request.mjs} +132 -201
  219. package/lib/requests/{password-reset-email-request.js → password-reset-email-request.mjs} +123 -202
  220. package/lib/requests/password-reset-request.mjs +47 -0
  221. package/lib/requests/register-request.mjs +48 -0
  222. package/lib/requests/{sharing-request.js → sharing-request.mjs} +174 -261
  223. package/lib/{resource-mapper.js → resource-mapper.mjs} +7 -6
  224. package/lib/{server-config.js → server-config.mjs} +15 -20
  225. package/lib/services/{blacklist-service.js → blacklist-service.mjs} +36 -33
  226. package/lib/services/email-service.mjs +76 -0
  227. package/lib/services/{token-service.js → token-service.mjs} +36 -44
  228. package/lib/{utils.js → utils.mjs} +309 -254
  229. package/lib/webid/{index.js → index.mjs} +9 -13
  230. package/lib/webid/lib/{get.js → get.mjs} +31 -35
  231. package/lib/webid/lib/{parse.js → parse.mjs} +10 -12
  232. package/lib/webid/lib/verify.mjs +77 -0
  233. package/lib/webid/tls/generate.mjs +53 -0
  234. package/lib/webid/tls/index.mjs +7 -0
  235. package/package.json +46 -26
  236. package/renovate.json +0 -0
  237. package/robots.txt +0 -0
  238. package/robots.txt.acl +0 -0
  239. package/solid-server-5.8.8.tgz +0 -0
  240. package/static/account-recovery.html +0 -0
  241. package/static/popup-redirect.html +0 -0
  242. package/static/signup.html +0 -0
  243. package/static/signup.html.acl +0 -0
  244. package/test/index.mjs +168 -0
  245. package/test/integration/account-creation-tls-test.mjs +127 -0
  246. package/test/integration/account-manager-test.mjs +151 -0
  247. package/test/integration/account-template-test.mjs +136 -0
  248. package/test/integration/acl-oidc-test.mjs +1048 -0
  249. package/test/integration/acl-tls-test.mjs +964 -0
  250. package/test/integration/auth-proxy-test.mjs +144 -0
  251. package/test/integration/authentication-oidc-test.mjs +812 -0
  252. package/test/integration/authentication-oidc-with-strict-origins-turned-off-test.mjs +638 -0
  253. package/test/integration/capability-discovery-test.mjs +116 -0
  254. package/test/integration/cors-proxy-test.mjs +145 -0
  255. package/test/integration/errors-oidc-test.mjs +109 -0
  256. package/test/integration/errors-test.mjs +49 -0
  257. package/test/integration/formats-test.mjs +136 -0
  258. package/test/integration/header-test.mjs +101 -0
  259. package/test/integration/http-copy-test.mjs +109 -0
  260. package/test/integration/http-test.mjs +1197 -0
  261. package/test/integration/ldp-test.mjs +528 -0
  262. package/test/integration/oidc-manager-test.mjs +42 -0
  263. package/test/integration/params-test.mjs +192 -0
  264. package/test/integration/patch-sparql-update-test.mjs +195 -0
  265. package/test/integration/patch-test.mjs +573 -0
  266. package/test/integration/payment-pointer-test.mjs +155 -0
  267. package/test/integration/prep-test.mjs +314 -0
  268. package/test/integration/quota-test.mjs +51 -0
  269. package/test/integration/special-root-acl-handling-test.mjs +68 -0
  270. package/test/integration/validate-tts-test.mjs +57 -0
  271. package/test/integration/www-account-creation-oidc-test.mjs +311 -0
  272. package/test/keys/cert.pem +21 -0
  273. package/test/keys/client-cert.pem +19 -0
  274. package/test/keys/client-key.pem +27 -0
  275. package/test/keys/key.pem +27 -0
  276. package/test/keys/user1-cert.pem +23 -0
  277. package/test/keys/user1-key.pem +28 -0
  278. package/test/keys/user2-cert.pem +23 -0
  279. package/test/keys/user2-key.pem +27 -0
  280. package/test/mocha.opts +2 -0
  281. package/test/resources/Makefile +146 -0
  282. package/test/resources/accounts/alice.localhost/profile/card +0 -0
  283. package/test/resources/accounts/db/oidc/op/clients/_key_30860bb5cf6ba07e80ed7b2e7178c7ad.json +1 -0
  284. package/test/resources/accounts/db/oidc/op/provider.json +419 -0
  285. package/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +1 -0
  286. package/test/resources/accounts/localhost/samplePublicContainer/nicola.jpg +0 -0
  287. package/test/resources/accounts/tim.localhost/hello.html +9 -0
  288. package/test/resources/accounts/tim.localhost/profile/card +0 -0
  289. package/test/resources/accounts-acl/config/templates/emails/welcome-test.js +39 -0
  290. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico +0 -0
  291. package/test/resources/accounts-acl/config/templates/new-account/favicon.ico.acl +26 -0
  292. package/test/resources/accounts-acl/config/templates/new-account/index.html +28 -0
  293. package/test/resources/accounts-acl/config/templates/new-account/index.html.acl +22 -0
  294. package/test/resources/accounts-acl/config/templates/new-account/profile/card +27 -0
  295. package/{default-templates/new-account/inbox/.acl → test/resources/accounts-acl/config/templates/new-account/profile/card.acl} +5 -6
  296. package/test/resources/accounts-acl/config/templates/new-account/settings/prefs.ttl +9 -0
  297. package/test/resources/accounts-acl/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  298. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  299. package/test/resources/accounts-acl/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  300. package/test/resources/accounts-acl/config/templates/new-account/settings/serverSide.ttl +14 -0
  301. package/test/resources/accounts-acl/config/templates/server/index.html +35 -0
  302. package/{.acl → test/resources/accounts-acl/config/templates/server/index.html.acl} +4 -3
  303. package/test/resources/accounts-acl/config/views/account/register.hbs +58 -0
  304. package/test/resources/accounts-acl/config/views/auth/consent.hbs +49 -0
  305. package/test/resources/accounts-acl/config/views/auth/goodbye.hbs +20 -0
  306. package/test/resources/accounts-acl/config/views/auth/login-required.hbs +0 -0
  307. package/test/resources/accounts-acl/config/views/auth/login.hbs +51 -0
  308. package/test/resources/accounts-acl/config/views/auth/no-permission.hbs +0 -0
  309. package/test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json +1 -0
  310. package/test/resources/accounts-acl/db/oidc/op/provider.json +419 -0
  311. package/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json +1 -0
  312. package/test/resources/accounts-acl/localhost/favicon.ico +0 -0
  313. package/test/resources/accounts-acl/localhost/index.html +35 -0
  314. package/{default-templates/server/.acl → test/resources/accounts-acl/localhost/index.html.acl} +4 -3
  315. package/test/resources/accounts-acl/nicola.localhost/index.html +1 -0
  316. package/test/resources/accounts-acl/nicola.localhost/index.html.acl +10 -0
  317. package/test/resources/accounts-acl/quota/settings/serverSide.ttl +11 -0
  318. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl +1 -0
  319. package/test/resources/accounts-acl/tim.localhost/append-acl/abc.ttl.acl +8 -0
  320. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl +1 -0
  321. package/test/resources/accounts-acl/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  322. package/test/resources/accounts-acl/tim.localhost/fake-account/hello.html +9 -0
  323. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing-error.ttl +1 -0
  324. package/test/resources/accounts-acl/tim.localhost/group/test-folder/group-listing.ttl +14 -0
  325. package/test/resources/accounts-acl/tim.localhost/group/test-folder/some-other-file.txt +1 -0
  326. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt +1 -0
  327. package/test/resources/accounts-acl/tim.localhost/multi-server/protected.txt.acl +8 -0
  328. package/test/resources/accounts-acl/tim.localhost/no-acl/test-file.html +1 -0
  329. package/test/resources/accounts-acl/tim.localhost/read-acl/deeper-tree/acls-only-on-top/example.ttl +1 -0
  330. package/test/resources/accounts-acl/tim.localhost/write-acl/test-file$.txt +1 -0
  331. package/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_e46bcfe080c59f5cbb53a559d6a272cb.json +1 -0
  332. package/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +417 -0
  333. package/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +1 -0
  334. package/test/resources/accounts-scenario/alice/private-for-alice.txt +1 -0
  335. package/test/resources/accounts-scenario/alice/private-for-alice.txt.acl +12 -0
  336. package/test/resources/accounts-scenario/alice/profile/card$.ttl +10 -0
  337. package/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_e7fd102ec26a3dcd5916751e01a62315.json +1 -0
  338. package/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +417 -0
  339. package/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +1 -0
  340. package/test/resources/accounts-scenario/bob/profile/card$.ttl +5 -0
  341. package/test/resources/accounts-scenario/bob/shared-with-alice.txt +1 -0
  342. package/test/resources/accounts-scenario/bob/shared-with-alice.txt.acl +15 -0
  343. package/test/resources/accounts-scenario/charlie/db/oidc/op/clients/_key_0eec962830f849876695b69df76a3137.json +1 -0
  344. package/test/resources/accounts-scenario/charlie/db/oidc/op/provider.json +415 -0
  345. package/test/resources/accounts-scenario/charlie/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A5002.json +1 -0
  346. package/test/resources/accounts-scenario/charlie/profile/card$.ttl +5 -0
  347. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/clients/_key_7d536a1f8c6eb86f41261e171a8af79a.json +1 -0
  348. package/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json +419 -0
  349. package/test/resources/accounts-strict-origin-off/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7010.json +1 -0
  350. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt +1 -0
  351. package/test/resources/accounts-strict-origin-off/alice/private-for-alice.txt.acl +12 -0
  352. package/test/resources/accounts-strict-origin-off/alice/profile/card$.ttl +10 -0
  353. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/clients/_key_0ed30b9e076814c6f6445582302487c2.json +1 -0
  354. package/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json +419 -0
  355. package/test/resources/accounts-strict-origin-off/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7011.json +1 -0
  356. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt +1 -0
  357. package/test/resources/accounts-strict-origin-off/bob/shared-with-alice.txt.acl +15 -0
  358. package/test/resources/acl-tls/config/templates/emails/delete-account.js +49 -0
  359. package/test/resources/acl-tls/config/templates/emails/invalid-username.js +30 -0
  360. package/test/resources/acl-tls/config/templates/emails/reset-password.js +49 -0
  361. package/test/resources/acl-tls/config/templates/emails/welcome.js +39 -0
  362. package/test/resources/acl-tls/config/templates/new-account/favicon.ico +0 -0
  363. package/test/resources/acl-tls/config/templates/new-account/favicon.ico.acl +26 -0
  364. package/test/resources/acl-tls/config/templates/new-account/profile/card$.ttl +26 -0
  365. package/test/resources/acl-tls/config/templates/new-account/robots.txt +3 -0
  366. package/test/resources/acl-tls/config/templates/new-account/robots.txt.acl +26 -0
  367. package/test/resources/acl-tls/config/templates/new-account/settings/prefs.ttl +15 -0
  368. package/test/resources/acl-tls/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  369. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  370. package/test/resources/acl-tls/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  371. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  372. package/test/resources/acl-tls/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  373. package/test/resources/acl-tls/config/templates/server/favicon.ico +0 -0
  374. package/test/resources/acl-tls/config/templates/server/favicon.ico.acl +15 -0
  375. package/test/resources/acl-tls/config/templates/server/index.html +55 -0
  376. package/test/resources/acl-tls/config/templates/server/robots.txt +3 -0
  377. package/test/resources/acl-tls/config/templates/server/robots.txt.acl +15 -0
  378. package/test/resources/acl-tls/config/views/account/account-deleted.hbs +17 -0
  379. package/test/resources/acl-tls/config/views/account/delete-confirm.hbs +51 -0
  380. package/test/resources/acl-tls/config/views/account/delete-link-sent.hbs +17 -0
  381. package/test/resources/acl-tls/config/views/account/delete.hbs +51 -0
  382. package/test/resources/acl-tls/config/views/account/invalid-username.hbs +22 -0
  383. package/test/resources/acl-tls/config/views/account/register-disabled.hbs +6 -0
  384. package/test/resources/acl-tls/config/views/account/register-form.hbs +147 -0
  385. package/test/resources/acl-tls/config/views/account/register.hbs +24 -0
  386. package/test/resources/acl-tls/config/views/auth/auth-hidden-fields.hbs +8 -0
  387. package/test/resources/acl-tls/config/views/auth/change-password.hbs +58 -0
  388. package/test/resources/acl-tls/config/views/auth/goodbye.hbs +23 -0
  389. package/test/resources/acl-tls/config/views/auth/login-required.hbs +34 -0
  390. package/test/resources/acl-tls/config/views/auth/login-tls.hbs +11 -0
  391. package/test/resources/acl-tls/config/views/auth/login-username-password.hbs +28 -0
  392. package/test/resources/acl-tls/config/views/auth/login.hbs +55 -0
  393. package/test/resources/acl-tls/config/views/auth/no-permission.hbs +29 -0
  394. package/test/resources/acl-tls/config/views/auth/password-changed.hbs +27 -0
  395. package/test/resources/acl-tls/config/views/auth/reset-link-sent.hbs +21 -0
  396. package/test/resources/acl-tls/config/views/auth/reset-password.hbs +52 -0
  397. package/test/resources/acl-tls/config/views/auth/sharing.hbs +49 -0
  398. package/test/resources/acl-tls/config/views/shared/create-account.hbs +8 -0
  399. package/test/resources/acl-tls/config/views/shared/error.hbs +5 -0
  400. package/test/resources/acl-tls/localhost/favicon.ico +0 -0
  401. package/test/resources/acl-tls/localhost/favicon.ico.acl +15 -0
  402. package/test/resources/acl-tls/localhost/index.html +48 -0
  403. package/test/resources/acl-tls/localhost/robots.txt +3 -0
  404. package/test/resources/acl-tls/localhost/robots.txt.acl +15 -0
  405. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl +1 -0
  406. package/test/resources/acl-tls/tim.localhost/append-acl/abc.ttl.acl +8 -0
  407. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl +1 -0
  408. package/test/resources/acl-tls/tim.localhost/append-acl/abc2.ttl.acl +8 -0
  409. package/test/resources/acl-tls/tim.localhost/fake-account/hello.html +9 -0
  410. package/test/resources/acl-tls/tim.localhost/no-acl/test-file.html +1 -0
  411. package/test/resources/acl-tls/tim.localhost/profile/card$.ttl +17 -0
  412. package/test/resources/acl-tls/write-acl/test-file$.ttl +1 -0
  413. package/test/resources/auth-proxy/index.html +0 -0
  414. package/test/resources/auth-proxy/index.html.acl +0 -0
  415. package/test/resources/config/templates/emails/delete-account.js +49 -0
  416. package/test/resources/config/templates/emails/delete-account.mjs +31 -0
  417. package/test/resources/config/templates/emails/invalid-username.js +30 -0
  418. package/test/resources/config/templates/emails/invalid-username.mjs +27 -0
  419. package/test/resources/config/templates/emails/reset-password.js +49 -0
  420. package/test/resources/config/templates/emails/reset-password.mjs +31 -0
  421. package/test/resources/config/templates/emails/welcome.js +39 -0
  422. package/test/resources/config/templates/emails/welcome.mjs +23 -0
  423. package/test/resources/config/templates/new-account/favicon.ico +0 -0
  424. package/test/resources/config/templates/new-account/favicon.ico.acl +26 -0
  425. package/test/resources/config/templates/new-account/profile/card$.ttl +26 -0
  426. package/test/resources/config/templates/new-account/robots.txt +3 -0
  427. package/test/resources/config/templates/new-account/robots.txt.acl +26 -0
  428. package/test/resources/config/templates/new-account/settings/prefs.ttl +15 -0
  429. package/test/resources/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  430. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  431. package/test/resources/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  432. package/test/resources/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  433. package/test/resources/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  434. package/test/resources/config/templates/server/favicon.ico +0 -0
  435. package/test/resources/config/templates/server/favicon.ico.acl +15 -0
  436. package/test/resources/config/templates/server/index.html +54 -0
  437. package/test/resources/config/templates/server/robots.txt +3 -0
  438. package/test/resources/config/templates/server/robots.txt.acl +15 -0
  439. package/test/resources/config/views/account/account-deleted.hbs +17 -0
  440. package/test/resources/config/views/account/delete-confirm.hbs +51 -0
  441. package/test/resources/config/views/account/delete-link-sent.hbs +17 -0
  442. package/test/resources/config/views/account/delete.hbs +51 -0
  443. package/test/resources/config/views/account/invalid-username.hbs +22 -0
  444. package/test/resources/config/views/account/register-disabled.hbs +6 -0
  445. package/test/resources/config/views/account/register-form.hbs +133 -0
  446. package/test/resources/config/views/account/register.hbs +24 -0
  447. package/test/resources/config/views/auth/auth-hidden-fields.hbs +8 -0
  448. package/test/resources/config/views/auth/change-password.hbs +58 -0
  449. package/test/resources/config/views/auth/goodbye.hbs +23 -0
  450. package/test/resources/config/views/auth/login-required.hbs +34 -0
  451. package/test/resources/config/views/auth/login-tls.hbs +11 -0
  452. package/test/resources/config/views/auth/login-username-password.hbs +28 -0
  453. package/test/resources/config/views/auth/login.hbs +55 -0
  454. package/test/resources/config/views/auth/no-permission.hbs +29 -0
  455. package/test/resources/config/views/auth/password-changed.hbs +27 -0
  456. package/test/resources/config/views/auth/reset-link-sent.hbs +21 -0
  457. package/test/resources/config/views/auth/reset-password.hbs +52 -0
  458. package/test/resources/config/views/auth/sharing.hbs +49 -0
  459. package/test/resources/config/views/shared/create-account.hbs +8 -0
  460. package/test/resources/config/views/shared/error.hbs +5 -0
  461. package/test/resources/empty.spatch +0 -0
  462. package/test/resources/errorPages/401.html +5 -0
  463. package/test/resources/errorPages/403.html +5 -0
  464. package/test/resources/errorPages/404.html +5 -0
  465. package/test/resources/errorPages/405.html +5 -0
  466. package/test/resources/errorPages/415.html +5 -0
  467. package/test/resources/errorPages/500.html +5 -0
  468. package/test/resources/example_spkac.cnf +1 -0
  469. package/test/resources/external-servers/example.com/jwks.json +81 -0
  470. package/test/resources/external-servers/example.com/openid-configuration.json +53 -0
  471. package/test/resources/favicon.ico +0 -0
  472. package/test/resources/favicon.ico.acl +15 -0
  473. package/test/resources/headers/index.html +0 -0
  474. package/test/resources/headers/public-ra +0 -0
  475. package/test/resources/headers/public-ra.acl +7 -0
  476. package/test/resources/headers/user-rw-public-r +0 -0
  477. package/test/resources/headers/user-rw-public-r.acl +12 -0
  478. package/test/resources/headers/user-rwac-public-0 +0 -0
  479. package/test/resources/headers/user-rwac-public-0.acl +7 -0
  480. package/test/resources/hello.html +3 -0
  481. package/test/resources/invalid1.ttl +13 -0
  482. package/test/resources/invalid2.ttl +9 -0
  483. package/test/resources/ldpatch-example-final.ttl +23 -0
  484. package/test/resources/ldpatch-example-initial.ttl +22 -0
  485. package/test/resources/ldpatch-example-patch-1.spatch +8 -0
  486. package/test/resources/ldpatch-example-patch-2.spatch +12 -0
  487. package/test/resources/ldpatch-example-patch-3.spatch +14 -0
  488. package/test/resources/ldpatch-example-patch.ldpatch +25 -0
  489. package/test/resources/ldpatch-example-patch.spatch +24 -0
  490. package/test/resources/lennon.jsonld +7 -0
  491. package/test/resources/lfs-0.sparql +9 -0
  492. package/test/resources/lfs-1-final.json +10 -0
  493. package/test/resources/lfs-1.sparql +11 -0
  494. package/test/resources/messaging-scenario/user1.databox.me/profile/card +21 -0
  495. package/test/resources/nicola.jpg +0 -0
  496. package/test/resources/patch/append-only.ttl +2 -0
  497. package/test/resources/patch/append-only.ttl.acl +6 -0
  498. package/test/resources/patch/favicon.ico +0 -0
  499. package/test/resources/patch/favicon.ico.acl +15 -0
  500. package/test/resources/patch/index.html +0 -0
  501. package/test/resources/patch/read-append.ttl +2 -0
  502. package/test/resources/patch/read-append.ttl.acl +6 -0
  503. package/test/resources/patch/read-only.ttl +2 -0
  504. package/test/resources/patch/read-only.ttl.acl +6 -0
  505. package/test/resources/patch/read-write.ttl +2 -0
  506. package/test/resources/patch/read-write.ttl.acl +6 -0
  507. package/test/resources/patch/robots.txt +3 -0
  508. package/test/resources/patch/robots.txt.acl +15 -0
  509. package/test/resources/patch/write-only.ttl +2 -0
  510. package/test/resources/patch/write-only.ttl.acl +6 -0
  511. package/test/resources/patch-1-initial.ttl +3 -0
  512. package/test/resources/patch-2-final.ttl +2 -0
  513. package/test/resources/patch-2-initial.ttl +3 -0
  514. package/test/resources/patch-2.spatch +2 -0
  515. package/test/resources/patch-2n.spatch +2 -0
  516. package/test/resources/patch-3-final.ttl +28 -0
  517. package/test/resources/patch-4-final.ttl +29 -0
  518. package/test/resources/patch-5-final.ttl +1 -0
  519. package/test/resources/patch-5-initial.ttl +3 -0
  520. package/test/resources/patch-5.spatch +2 -0
  521. package/test/resources/put-input-2.html +13 -0
  522. package/test/resources/put-input.txt +6 -0
  523. package/test/resources/robots.txt +3 -0
  524. package/test/resources/robots.txt.acl +15 -0
  525. package/test/resources/sampleContainer/blank +0 -0
  526. package/test/resources/sampleContainer/cert.pkcs +0 -0
  527. package/test/resources/sampleContainer/example.ttl.old +1 -0
  528. package/test/resources/sampleContainer/example1.ttl +12 -0
  529. package/test/resources/sampleContainer/example2.ttl +3 -0
  530. package/test/resources/sampleContainer/example3.ttl +7 -0
  531. package/test/resources/sampleContainer/example4$.ttl +7 -0
  532. package/test/resources/sampleContainer/filename with spaces.txt +0 -0
  533. package/test/resources/sampleContainer/index.html +9 -0
  534. package/test/resources/sampleContainer/post2.ttl +6 -0
  535. package/test/resources/sampleContainer/put1.ttl +13 -0
  536. package/test/resources/sampleContainer/solid.png +0 -0
  537. package/test/resources/sampleContainer/user1.pfx +0 -0
  538. package/test/resources/sampleContainer/user2.pfx +0 -0
  539. package/test/resources/sampleContainer2/example1.ttl +10 -0
  540. package/test/resources/sampleContainer2/example2.ttl +7 -0
  541. package/test/resources/timbl.jpg +0 -0
  542. package/test/scenarios.md +23 -0
  543. package/test/surface/docker/cookie/Dockerfile +6 -0
  544. package/test/surface/docker/cookie/app/index.js +29 -0
  545. package/test/surface/docker/cookie/app/package-lock.json +13 -0
  546. package/test/surface/docker/cookie/app/package.json +14 -0
  547. package/test/surface/docker/server/Dockerfile +19 -0
  548. package/test/surface/docker/server/config/defaults.js +10 -0
  549. package/test/surface/docker/server/config/templates/emails/delete-account.js +49 -0
  550. package/test/surface/docker/server/config/templates/emails/invalid-username.js +30 -0
  551. package/test/surface/docker/server/config/templates/emails/reset-password.js +49 -0
  552. package/test/surface/docker/server/config/templates/emails/welcome.js +39 -0
  553. package/test/surface/docker/server/config/templates/new-account/favicon.ico +0 -0
  554. package/test/surface/docker/server/config/templates/new-account/favicon.ico.acl +26 -0
  555. package/test/surface/docker/server/config/templates/new-account/profile/card$.ttl +26 -0
  556. package/test/surface/docker/server/config/templates/new-account/robots.txt +3 -0
  557. package/test/surface/docker/server/config/templates/new-account/robots.txt.acl +26 -0
  558. package/test/surface/docker/server/config/templates/new-account/settings/prefs.ttl +15 -0
  559. package/test/surface/docker/server/config/templates/new-account/settings/privateTypeIndex.ttl +4 -0
  560. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl +4 -0
  561. package/test/surface/docker/server/config/templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
  562. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.acl +13 -0
  563. package/test/surface/docker/server/config/templates/new-account/settings/serverSide.ttl.inactive +12 -0
  564. package/test/surface/docker/server/config/templates/server/favicon.ico +0 -0
  565. package/test/surface/docker/server/config/templates/server/favicon.ico.acl +15 -0
  566. package/test/surface/docker/server/config/templates/server/index.html +55 -0
  567. package/test/surface/docker/server/config/templates/server/robots.txt +3 -0
  568. package/test/surface/docker/server/config/templates/server/robots.txt.acl +15 -0
  569. package/test/surface/docker/server/config/usernames-blacklist.json +4 -0
  570. package/test/surface/docker/server/config/views/account/account-deleted.hbs +17 -0
  571. package/test/surface/docker/server/config/views/account/delete-confirm.hbs +51 -0
  572. package/test/surface/docker/server/config/views/account/delete-link-sent.hbs +17 -0
  573. package/test/surface/docker/server/config/views/account/delete.hbs +51 -0
  574. package/test/surface/docker/server/config/views/account/invalid-username.hbs +22 -0
  575. package/test/surface/docker/server/config/views/account/register-disabled.hbs +6 -0
  576. package/test/surface/docker/server/config/views/account/register-form.hbs +147 -0
  577. package/test/surface/docker/server/config/views/account/register.hbs +24 -0
  578. package/test/surface/docker/server/config/views/auth/auth-hidden-fields.hbs +8 -0
  579. package/test/surface/docker/server/config/views/auth/change-password.hbs +58 -0
  580. package/test/surface/docker/server/config/views/auth/goodbye.hbs +23 -0
  581. package/test/surface/docker/server/config/views/auth/login-required.hbs +34 -0
  582. package/test/surface/docker/server/config/views/auth/login-tls.hbs +11 -0
  583. package/test/surface/docker/server/config/views/auth/login-username-password.hbs +28 -0
  584. package/test/surface/docker/server/config/views/auth/login.hbs +55 -0
  585. package/test/surface/docker/server/config/views/auth/no-permission.hbs +29 -0
  586. package/test/surface/docker/server/config/views/auth/password-changed.hbs +27 -0
  587. package/test/surface/docker/server/config/views/auth/reset-link-sent.hbs +21 -0
  588. package/test/surface/docker/server/config/views/auth/reset-password.hbs +52 -0
  589. package/test/surface/docker/server/config/views/auth/sharing.hbs +49 -0
  590. package/test/surface/docker/server/config/views/shared/create-account.hbs +8 -0
  591. package/test/surface/docker/server/config/views/shared/error.hbs +5 -0
  592. package/test/surface/docker/server/config.json +22 -0
  593. package/test/surface/docker/server/data/favicon.ico +0 -0
  594. package/test/surface/docker/server/data/favicon.ico.acl +26 -0
  595. package/test/surface/docker/server/data/index.html +48 -0
  596. package/test/surface/docker/server/data/profile/card$.ttl +31 -0
  597. package/test/surface/docker/server/data/robots.txt +3 -0
  598. package/test/surface/docker/server/data/robots.txt.acl +26 -0
  599. package/test/surface/docker/server/data/settings/prefs.ttl +15 -0
  600. package/test/surface/docker/server/data/settings/privateTypeIndex.ttl +4 -0
  601. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl +4 -0
  602. package/test/surface/docker/server/data/settings/publicTypeIndex.ttl.acl +25 -0
  603. package/test/surface/docker/server/data/settings/serverSide.ttl +0 -0
  604. package/test/surface/docker/server/data/settings/serverSide.ttl.acl +13 -0
  605. package/test/surface/docker/server/data/settings/serverSide.ttl.inactive +12 -0
  606. package/test/surface/docker/server/env.list +4 -0
  607. package/test/surface/docker/solid-crud/Dockerfile +4 -0
  608. package/test/surface/docker/web-access-control/Dockerfile +1 -0
  609. package/test/surface/docker/webid-provider/Dockerfile +1 -0
  610. package/test/surface/run-solid-test-suite.sh +75 -0
  611. package/test/surface/server-env.list +5 -0
  612. package/test/surface/solid-crud-tests-env.list +5 -0
  613. package/test/surface/thirdparty-config.json +23 -0
  614. package/test/surface/thirdparty-env.list +6 -0
  615. package/test/surface/web-access-control-tests-env.list +6 -0
  616. package/test/surface/webid-provider-tests-env.list +4 -0
  617. package/test/test-helpers.mjs +63 -0
  618. package/test/unit/account-manager-test.mjs +610 -0
  619. package/test/unit/account-template-test.mjs +59 -0
  620. package/test/unit/acl-checker-test.mjs +51 -0
  621. package/test/unit/add-cert-request-test.mjs +120 -0
  622. package/test/unit/auth-handlers-test.mjs +108 -0
  623. package/test/unit/auth-proxy-test.mjs +224 -0
  624. package/test/unit/auth-request-test.mjs +96 -0
  625. package/test/unit/authenticator-test.mjs +34 -0
  626. package/test/unit/blacklist-service-test.mjs +49 -0
  627. package/test/unit/create-account-request-test.mjs +306 -0
  628. package/test/unit/delete-account-confirm-request-test.mjs +234 -0
  629. package/test/unit/delete-account-request-test.mjs +180 -0
  630. package/test/unit/email-service-test.mjs +166 -0
  631. package/test/unit/email-welcome-test.mjs +81 -0
  632. package/test/unit/error-pages-test.mjs +100 -0
  633. package/test/unit/esm-imports.test.mjs +149 -0
  634. package/test/unit/force-user-test.mjs +73 -0
  635. package/test/unit/getAvailableUrl-test.mjs +30 -0
  636. package/test/unit/getTrustedOrigins-test.mjs +20 -0
  637. package/test/unit/login-request-test.mjs +246 -0
  638. package/test/unit/oidc-manager-test.mjs +50 -0
  639. package/test/unit/password-authenticator-test.mjs +125 -0
  640. package/test/unit/password-change-request-test.mjs +259 -0
  641. package/test/unit/password-reset-email-request-test.mjs +234 -0
  642. package/test/unit/resource-mapper-test.mjs +673 -0
  643. package/test/unit/solid-host-test.mjs +119 -0
  644. package/test/unit/tls-authenticator-test.mjs +174 -0
  645. package/test/unit/token-service-test.mjs +82 -0
  646. package/test/unit/user-account-test.mjs +38 -0
  647. package/test/unit/user-accounts-api-test.mjs +59 -0
  648. package/test/unit/user-utils-test.mjs +64 -0
  649. package/test/unit/utils-test.mjs +114 -0
  650. package/test/utils/index.mjs +167 -0
  651. package/test/utils.mjs +205 -0
  652. package/test/validate-turtle.mjs +43 -0
  653. package/.github/workflows/ci.yml +0 -113
  654. package/.nvmrc +0 -1
  655. package/.snyk +0 -35
  656. package/bin/lib/cli-utils.js +0 -85
  657. package/bin/lib/cli.js +0 -39
  658. package/bin/solid.js +0 -3
  659. package/default-templates/new-account/.acl +0 -26
  660. package/default-templates/new-account/.meta +0 -5
  661. package/default-templates/new-account/.well-known/.acl +0 -19
  662. package/default-templates/new-account/private/.acl +0 -10
  663. package/default-templates/new-account/profile/.acl +0 -19
  664. package/default-templates/new-account/public/.acl +0 -19
  665. package/default-templates/new-account/settings/.acl +0 -20
  666. package/index.js +0 -3
  667. package/lib/api/authn/index.js +0 -5
  668. package/lib/api/index.js +0 -6
  669. package/lib/common/template-utils.js +0 -50
  670. package/lib/debug.js +0 -18
  671. package/lib/ldp-copy.js +0 -73
  672. package/lib/ldp-middleware.js +0 -40
  673. package/lib/models/account-manager.js +0 -604
  674. package/lib/models/account-template.js +0 -156
  675. package/lib/models/authenticator.js +0 -337
  676. package/lib/models/oidc-manager.js +0 -53
  677. package/lib/models/solid-host.js +0 -131
  678. package/lib/models/user-account.js +0 -113
  679. package/lib/models/webid-tls-certificate.js +0 -184
  680. package/lib/requests/add-cert-request.js +0 -138
  681. package/lib/requests/auth-request.js +0 -234
  682. package/lib/requests/delete-account-confirm-request.js +0 -170
  683. package/lib/requests/login-request.js +0 -205
  684. package/lib/services/email-service.js +0 -162
  685. package/lib/webid/tls/index.js +0 -185
@@ -0,0 +1,32 @@
1
+ test: ## run testinfra tests against the project
2
+ docker run --rm -t \
3
+ -v $(shell pwd):/project \
4
+ -v /var/run/docker.sock:/var/run/docker.sock:ro \
5
+ -e SOLID_SERVER_VERSION="${SOLID_SERVER_VERSION}" \
6
+ aveltens/docker-testinfra
7
+
8
+ lint: ## run hadolint against the Dockerfile
9
+ docker run --rm -i hadolint/hadolint < src/Dockerfile
10
+
11
+ build: ## build the docker image
12
+ cd src && docker build --tag nodesolidserver/node-solid-server .
13
+
14
+ inspect: build ## run a shell in the docker image
15
+ docker run --rm -it --entrypoint sh nodesolidserver/node-solid-server
16
+
17
+ start: build ## start solid-server docker container
18
+ docker run --rm \
19
+ -it -d \
20
+ -p 8443:8443 \
21
+ -u "$(id -u):$(id -g)" \
22
+ -v $(shell pwd)/data:/opt/solid/data \
23
+ --name solid-server \
24
+ nodesolidserver/node-solid-server
25
+
26
+ stop: ## stop the solid-server docker container
27
+ docker stop solid-server
28
+
29
+ attach: ## execute a shell in the running solid-server docker container
30
+ docker exec -it solid-server sh
31
+
32
+ .PHONY: test build inspect run attach
@@ -0,0 +1,65 @@
1
+ # NSS Docker image
2
+
3
+ Containerized version of node-solid-server
4
+
5
+ ## How to use
6
+
7
+ For quickly trying out this image or solid-server in general you can run:
8
+ ```bash
9
+ docker run -p 8443:8443 nodesolidserver/node-solid-server
10
+ ```
11
+
12
+ You will be able to access the server via `https://localhost:8443` then. It will use auto-generated self-signed certificates and is **not suited for production use**. For a production server you will have to create some real certificates and configure environment variables, like SOLID_SERVER_URI, SOLID_SSL_KEY and SOLID_SSL_CERT. Take a look at the examples folder [at GitHub](https://github.com/angelo-v/docker-solid-server/tree/master/examples) for details.
13
+
14
+ ### Environment variables
15
+
16
+ All solid configuration flags can be set by an equivalent environment variable.
17
+ The official solid-server documentation
18
+ [explains them in detail](https://github.com/solid/node-solid-server#extra-flags-expert).
19
+
20
+ ### Docker compose
21
+
22
+ For a productive setup you may want to use docker-compose. Example setups can be found
23
+ in the [examples folder](https://github.com/angelo-v/docker-solid-server/tree/master/examples). Here is an overview of what is in there:
24
+
25
+ #### Simple setup without proxy
26
+
27
+ `./examples/docker-compose.simple.yml`
28
+
29
+ Run solid-server directly on HTTPS port 443 without a proxy in between.
30
+ You will need to have your certificates ready and mount them into the container.
31
+
32
+ #### Running solid behind nginx proxy
33
+
34
+ `./examples/docker-compose.nginx.yml`
35
+
36
+ Run solid-server on port 8443 behind a nginx proxy on 443. You will need to setup an nginx container with letsencrypt companion [as described here](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion).
37
+
38
+ When using nginx to proxy HTTPS connections to Solid you will need to specify HTTPS in the local service URI:
39
+
40
+ `proxy_pass https://127.0.0.1:8443;`
41
+
42
+ This approach is useful if you do not wish to grant Solid access to your HTTPS certificates, as nginx does not validate
43
+ the self-signed certificates that Solid generates for its proxy_pass connection.
44
+
45
+ #### All-in one nginx proxy + letsencrypt + solid server
46
+
47
+ `./examples/docker-compose.all-in-one.yml`
48
+
49
+ Run solid-server on port 8443 behind a [nginx proxy](https://hub.docker.com/r/jwilder/nginx-proxy/) on 443, including
50
+ certificate generation via [letsencrypt companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion).
51
+
52
+ #### Other setups
53
+
54
+ The setup you need is not presented here? Feel free to ask, or provide a Pull Request
55
+ with your solution.
56
+
57
+ ## Feedback & Discussion
58
+
59
+ There is a [topic in the Solid Forum](https://forum.solidproject.org/t/official-solid-docker-image/748/5),
60
+ you are welcome to join in.
61
+
62
+ ## Contributing
63
+
64
+ If you would like to contribute to the development of this image,
65
+ see [CONTRIBUTING.md](./CONTRIBUTING.md)
@@ -0,0 +1,76 @@
1
+ # This example assumes, that you are not running another application or proxy on ports 80 / 443.
2
+ # It provides an all-in-one solution to start a docker-server together with an nginx proxy and
3
+ # automatic letsencrypt certificate generation and renewal.
4
+ #
5
+ # It is based on https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion/blob/master/docs/Docker-Compose.md
6
+ #
7
+ # Adjust any line that is commented with (!):
8
+ # 1. Change any occurrence of the domain `solid.example` to your actual domain
9
+ # 2. Adjust the `latest` tag to a specific version you want to use.
10
+
11
+ version: '3.7'
12
+ services:
13
+ nginx:
14
+ container_name: nginx
15
+ image: jwilder/nginx-proxy:latest
16
+ restart: always
17
+ ports:
18
+ - "80:80"
19
+ - "443:443"
20
+ volumes:
21
+ - nginx-conf:/etc/nginx/conf.d
22
+ - vhostd:/etc/nginx/vhost.d
23
+ - html:/usr/share/nginx/html
24
+ - /var/run/docker.sock:/tmp/docker.sock:ro
25
+ - certs:/etc/nginx/certs:ro
26
+
27
+ letsencrypt:
28
+ container_name: letsencrypt
29
+ image: jrcs/letsencrypt-nginx-proxy-companion:latest
30
+ restart: always
31
+ environment:
32
+ - "NGINX_PROXY_CONTAINER=nginx"
33
+ volumes:
34
+ - nginx-conf:/etc/nginx/conf.d
35
+ - vhostd:/etc/nginx/vhost.d
36
+ - html:/usr/share/nginx/html
37
+ - /var/run/docker.sock:/var/run/docker.sock:ro
38
+ - certs:/etc/nginx/certs
39
+
40
+ server:
41
+ image: nodesolidserver/node-solid-server:latest # (!) use specific version tag here
42
+
43
+ # this ensures automatic container start, when host reboots
44
+ restart: always
45
+
46
+ expose:
47
+ - 8443
48
+
49
+ volumes:
50
+ # mount local directories to the container
51
+ # (!) the host directories have to exist and be owned by UID 1000
52
+ - /opt/solid/data:/opt/solid/data
53
+ - /opt/solid/.db:/opt/solid/.db
54
+ - /opt/solid/config:/opt/solid/config
55
+ - certs:/opt/solid/certs
56
+
57
+ environment:
58
+ # (!) use your actual SOLID_SERVER_URI
59
+ - "SOLID_SERVER_URI=https://solid.example"
60
+ # (!) adjust path to the letsencrypt key and cert
61
+ - "SOLID_SSL_KEY=/opt/solid/certs/solid.example/key.pem"
62
+ - "SOLID_SSL_CERT=/opt/solid/certs/solid.example/fullchain.pem"
63
+ # (!) use your actual host name
64
+ - "VIRTUAL_HOST=solid.example"
65
+ - "VIRTUAL_PORT=8443"
66
+ - "VIRTUAL_PROTO=https"
67
+ # (!) use your actual host name
68
+ - "LETSENCRYPT_HOST=solid.example"
69
+ # (!) use your actual email
70
+ - "LETSENCRYPT_EMAIL=your@mail.example"
71
+
72
+ volumes:
73
+ nginx-conf:
74
+ vhostd:
75
+ html:
76
+ certs:
@@ -0,0 +1,51 @@
1
+ # This example assumes, that you are running a jwilders/nginx proxy
2
+ # with certificate generation by a letsencrypt companion container
3
+ # as described here:
4
+ #
5
+ # https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion/blob/master/docs/Docker-Compose.md
6
+ #
7
+ # This should provide a docker volume containing the generated certificates.
8
+ # We will use the same cert and key as the webproxy for the actual solid server. While it seems to
9
+ # work, I am not sure if it is actually a good idea. Please file an issue if you want to discuss this.
10
+
11
+ # Adjust any line that is commented with (!):
12
+ # 1. Change any occurrence of the domain `solid.example` to your actual domain
13
+ # 2. Adjust the `latest` tag to a specific version you want to use.
14
+
15
+ version: '3.7'
16
+ services:
17
+ server:
18
+ image: nodesolidserver/node-solid-server:latest # (!) use specific version tag here
19
+
20
+ # this ensures automatic container start, when host reboots
21
+ restart: always
22
+
23
+ expose:
24
+ - 8443
25
+
26
+ volumes:
27
+ # mount local directories to the container
28
+ # (!) the host directories have to exist and be owned by UID 1000
29
+ - /opt/solid/data:/opt/solid/data
30
+ - /opt/solid/.db:/opt/solid/.db
31
+ - /opt/solid/config:/opt/solid/config
32
+ - nginxproxy_certs:/opt/solid/certs
33
+
34
+ environment:
35
+ # (!) use your actual SOLID_SERVER_URI
36
+ - "SOLID_SERVER_URI=https://solid.example"
37
+ # (!) adjust path to the letsencrypt key and cert
38
+ - "SOLID_SSL_KEY=/opt/solid/certs/solid.example/key.pem"
39
+ - "SOLID_SSL_CERT=/opt/solid/certs/solid.example/fullchain.pem"
40
+ # (!) use your actual host name
41
+ - "VIRTUAL_HOST=solid.example"
42
+ - "VIRTUAL_PORT=8443"
43
+ - "VIRTUAL_PROTO=https"
44
+ # (!) use your actual host name
45
+ - "LETSENCRYPT_HOST=solid.example"
46
+ # (!) use your actual email
47
+ - "LETSENCRYPT_EMAIL=your@mail.example"
48
+ volumes:
49
+ # (!) mount certificates from an external volume from your nginx setup
50
+ nginxproxy_certs:
51
+ external: true
@@ -0,0 +1,34 @@
1
+ # This file is an example for running solid server directly on port 443 with
2
+ # existing (letsencrypt) certificates and without reverse proxy.
3
+
4
+ # To use it adjust any line that is commented with (!):
5
+ # 1. Change any occurrence of the domain `solid.example` to your actual domain
6
+ # 2. Adjust the `latest` tag to a specific version you want to use.
7
+
8
+ version: '3.7'
9
+ services:
10
+ server:
11
+ image: nodesolidserver/node-solid-server:latest # (!) use specific version tag here
12
+
13
+ # this ensures automatic container start, when host reboots
14
+ restart: always
15
+
16
+ ports:
17
+ - 443:8443
18
+
19
+ volumes:
20
+ # mount local directories to the container
21
+ # (!) the host directories have to exist and be owned by UID 1000
22
+ - /opt/solid/data:/opt/solid/data
23
+ - /opt/solid/.db:/opt/solid/.db
24
+ - /opt/solid/config:/opt/solid/config
25
+
26
+ # (!) mount existing TLS certificates, e.g. from letsencrypt
27
+ # (!) ensure that the key and fullchain files are readable by UID 1000
28
+ - /etc/letsencrypt/live/solid.example/:/opt/solid/certs
29
+
30
+ environment:
31
+ # (!) use your actual SOLID_SERVER_URI
32
+ - "SOLID_SERVER_URI=https://solid.example"
33
+ - "SOLID_SSL_KEY=/opt/solid/certs/key.pem"
34
+ - "SOLID_SSL_CERT=/opt/solid/certs/fullchain.pem"
@@ -0,0 +1,34 @@
1
+ FROM node:20-alpine
2
+
3
+ # hadolint ignore=DL3018
4
+ RUN apk add --no-cache openssl
5
+
6
+ ARG SOLID_SERVER_VERSION=latest
7
+ RUN npm install -g solid-server@${SOLID_SERVER_VERSION}
8
+
9
+ # image configuration
10
+ ENV SOLID_HOME=/opt/solid
11
+ ENV PROCESS_USER=node
12
+ ENV TEMPORARY_CERT_NAME=solid-temporary
13
+
14
+ WORKDIR ${SOLID_HOME}
15
+ COPY ./entrypoint.sh ./entrypoint.sh
16
+ COPY ./checks.sh ./checks.sh
17
+ COPY ./create-temporary-cert.sh ./create-temporary-cert.sh
18
+ RUN chown --recursive ${PROCESS_USER}:${PROCESS_USER} ${SOLID_HOME}
19
+
20
+ USER ${PROCESS_USER}
21
+
22
+ # solid configuration
23
+ ENV SOLID_ROOT=${SOLID_HOME}/data
24
+ ENV SOLID_SSL_KEY=${SOLID_HOME}/${TEMPORARY_CERT_NAME}.key
25
+ ENV SOLID_SSL_CERT=${SOLID_HOME}/${TEMPORARY_CERT_NAME}.crt
26
+ ENV SOLID_PORT=8443
27
+ ENV SOLID_CORS_PROXY=false
28
+ ENV DEBUG=solid:*
29
+
30
+ VOLUME $SOLID_HOME
31
+
32
+ ENTRYPOINT ["./entrypoint.sh"]
33
+
34
+ CMD ["start"]
@@ -0,0 +1,56 @@
1
+ #!/bin/sh
2
+
3
+ echo "checking preconditions..."
4
+
5
+ checks_failed=0
6
+
7
+ check_failed()
8
+ {
9
+ checks_failed=$((checks_failed + 1))
10
+ }
11
+ check_if_writable()
12
+ {
13
+ # checks if the given dir is writable, if it exists
14
+ # it's ok if the dir does not exist at all, because it will be created
15
+ # during solid server startup then and have the correct permissions
16
+ dir=$1
17
+ if [ -d "${dir}" ]; then
18
+ if [ -w "${dir}" ]; then
19
+ echo "✓ ${dir} is accessible by $(whoami)"
20
+ else
21
+ echo "✗ ${dir} not writable by $(whoami)"
22
+ check_failed
23
+ fi
24
+ fi
25
+ }
26
+
27
+ check_if_file_readable()
28
+ {
29
+ # checks if the given file exists and is readable
30
+ file=$1
31
+ if [ -e "${file}" ]; then
32
+ if [ -r "${file}" ]; then
33
+ echo "✓ ${file} is accessible by $(whoami)"
34
+ else
35
+ echo "✗ ${file} not readable by $(whoami)"
36
+ check_failed
37
+ fi
38
+ else
39
+ echo "✗ ${file} does not exist"
40
+ check_failed
41
+ fi
42
+ }
43
+
44
+ check_if_writable "${SOLID_HOME}/config"
45
+ check_if_writable "${SOLID_HOME}/data"
46
+ check_if_writable "${SOLID_HOME}/.db"
47
+ check_if_file_readable "${SOLID_SSL_KEY}"
48
+ check_if_file_readable "${SOLID_SSL_CERT}"
49
+
50
+ if [ "$checks_failed" -gt 0 ]; then
51
+ echo "Finished: ERROR"
52
+ exit 1
53
+ else
54
+ echo "Finished: SUCCESS"
55
+ exit 0;
56
+ fi
@@ -0,0 +1,14 @@
1
+ #!/bin/sh
2
+ set -e
3
+
4
+ NAME=$1
5
+
6
+ if [ -z $NAME ]; then
7
+ echo "Usage: ./create-temporary-cert.sh some-name"
8
+ exit 1
9
+ fi
10
+
11
+ openssl req -nodes -x509 -days 3 -newkey rsa:2048 \
12
+ -keyout ./$NAME.key \
13
+ -out ./$NAME.crt \
14
+ -subj "/O=$NAME/OU=$NAME/CN=$NAME"
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ ./create-temporary-cert.sh ${TEMPORARY_CERT_NAME}
6
+ ./checks.sh
7
+
8
+ solid "$@"
@@ -0,0 +1,15 @@
1
+ import docker
2
+ import pytest
3
+ import os
4
+
5
+
6
+ @pytest.fixture(scope="session")
7
+ def client():
8
+ return docker.from_env()
9
+
10
+
11
+ @pytest.fixture(scope="session")
12
+ def image(client):
13
+ img, _ = client.images.build(path='./src', dockerfile='Dockerfile',
14
+ buildargs={"SOLID_SERVER_VERSION": os.environ['SOLID_SERVER_VERSION']})
15
+ return img
@@ -0,0 +1,51 @@
1
+ import docker
2
+ import pytest
3
+
4
+ testinfra_hosts = ['docker://test_container']
5
+
6
+ @pytest.fixture(scope="module", autouse=True)
7
+ def container(client, image):
8
+ container = client.containers.run(
9
+ image.id,
10
+ name="test_container",
11
+ detach=True,
12
+ tty=True,
13
+ entrypoint="sh",
14
+ command="-"
15
+ )
16
+ yield container
17
+ container.remove(force=True)
18
+
19
+ def test_current_user_is_node(host):
20
+ assert host.user().name == "node"
21
+ assert host.user().group == "node"
22
+
23
+ def test_solid_home_dir_exists_and_owned_by_node(host):
24
+ solid_root = host.file("/opt/solid")
25
+ assert solid_root.is_directory
26
+ assert solid_root.user == "node"
27
+ assert solid_root.group == "node"
28
+
29
+ def test_node_command_is_available(host):
30
+ assert host.exists("node")
31
+
32
+ def test_node_version_is_20(host):
33
+ assert host.check_output("node --version").startswith('v20')
34
+
35
+ def test_openssl_command_is_available(host):
36
+ assert host.exists("openssl")
37
+
38
+ def test_entrypoint_exist(host):
39
+ entrypoint = host.file("/opt/solid/entrypoint.sh")
40
+ assert entrypoint.is_file
41
+ assert entrypoint.user == "node"
42
+ assert entrypoint.group == "node"
43
+
44
+ def test_create_temporary_cert_exist(host):
45
+ create_temporary_cert = host.file("/opt/solid/create-temporary-cert.sh")
46
+ assert create_temporary_cert.is_file
47
+ assert create_temporary_cert.user == "node"
48
+ assert create_temporary_cert.group == "node"
49
+
50
+ def test_solid_command_is_available(host):
51
+ assert host.exists("solid")
@@ -0,0 +1,36 @@
1
+ # coding=utf-8
2
+ import docker
3
+ import pytest
4
+
5
+ import os
6
+
7
+ from test.wait_for_container import wait_for_container
8
+
9
+ testinfra_hosts = ['docker://test_container']
10
+
11
+
12
+ @pytest.fixture(scope="module", autouse=True)
13
+ def container(client, image):
14
+ container = client.containers.run(
15
+ image.id,
16
+ name="test_container",
17
+ environment=[
18
+ # just using to files that exist but are not readable by node
19
+ "SOLID_SSL_KEY=/root",
20
+ "SOLID_SSL_CERT=/etc/shadow"
21
+ ],
22
+ detach=True,
23
+ tty=True
24
+ )
25
+ wait_for_container(container, "Finished: ERROR")
26
+ yield container
27
+ container.remove(force=True)
28
+
29
+
30
+ def test_container_fails_with_errors(container):
31
+ assert container.status == "created"
32
+ logs = str(container.logs())
33
+ assert "/root not readable by node" in logs
34
+ assert "/etc/shadow not readable by node" in logs
35
+ assert "Finished: ERROR" in logs
36
+ assert not "Finished: SUCCESS" in logs
@@ -0,0 +1,41 @@
1
+ # coding=utf-8
2
+ import docker
3
+ import pytest
4
+
5
+ from test.wait_for_container import wait_for_container
6
+
7
+ testinfra_hosts = ['docker://test_container']
8
+
9
+
10
+ @pytest.fixture(scope="module", autouse=True)
11
+ def container(client, image):
12
+ container = client.containers.run(
13
+ image.id,
14
+ name="test_container",
15
+ volumes={
16
+ 'missing_data': {'bind': '/opt/solid/data'},
17
+ 'missing_db': {'bind': '/opt/solid/.db'},
18
+ 'missing_config': {'bind': '/opt/solid/config'}
19
+ },
20
+ environment=[
21
+ "SOLID_SSL_KEY=/missing/key",
22
+ "SOLID_SSL_CERT=/missing/cert"
23
+ ],
24
+ detach=True,
25
+ tty=True
26
+ )
27
+ wait_for_container(container, "Finished: ERROR")
28
+ yield container
29
+ container.remove(force=True)
30
+
31
+
32
+ def test_container_fails_with_errors(container):
33
+ assert container.status == "created"
34
+ logs = str(container.logs())
35
+ assert "/opt/solid/config not writable by node" in logs
36
+ assert "/opt/solid/data not writable by node" in logs
37
+ assert "/opt/solid/.db not writable by node" in logs
38
+ assert "/missing/key does not exist" in logs
39
+ assert "/missing/cert does not exist" in logs
40
+ assert "Finished: ERROR" in logs
41
+ assert not "Finished: SUCCESS" in logs
@@ -0,0 +1,66 @@
1
+ import pytest
2
+
3
+ from test.wait_for_container import wait_for_container
4
+
5
+ testinfra_hosts = ['docker://test_container']
6
+
7
+ @pytest.fixture(scope="module", autouse=True)
8
+ def container(client, image):
9
+ container = client.containers.run(
10
+ image.id,
11
+ name="test_container",
12
+ detach=True,
13
+ tty=True
14
+ )
15
+ wait_for_container(container)
16
+ yield container
17
+ container.remove(force=True)
18
+
19
+ def test_solid_data_dir_exists_and_owned_by_node(host):
20
+ solid_data = host.file("/opt/solid/data/")
21
+ assert solid_data.exists
22
+ assert solid_data.is_directory
23
+ assert solid_data.user == "node"
24
+ assert solid_data.group == "node"
25
+
26
+ def test_solid_db_dir_exists_and_owned_by_node(host):
27
+ solid_db = host.file("/opt/solid/.db/")
28
+ assert solid_db.exists
29
+ assert solid_db.is_directory
30
+ assert solid_db.user == "node"
31
+ assert solid_db.group == "node"
32
+
33
+ def test_solid_config_dir_exists_and_owned_by_node(host):
34
+ solid_config = host.file("/opt/solid/config/")
35
+ assert solid_config.exists
36
+ assert solid_config.is_directory
37
+ assert solid_config.user == "node"
38
+ assert solid_config.group == "node"
39
+
40
+ def test_temporary_tls_cert_exists(host):
41
+ cert = host.file("/opt/solid/solid-temporary.crt")
42
+ assert cert.exists
43
+ assert cert.is_file
44
+ assert cert.user == "node"
45
+ assert cert.group == "node"
46
+
47
+ def test_temporary_tls_key_exists(host):
48
+ key = host.file("/opt/solid/solid-temporary.key")
49
+ assert key.exists
50
+ assert key.is_file
51
+ assert key.user == "node"
52
+ assert key.group == "node"
53
+
54
+ def test_certificate_and_key_are_used(host):
55
+ env = host.check_output("env")
56
+ assert "SOLID_SSL_KEY=/opt/solid/solid-temporary.key" in env
57
+ assert "SOLID_SSL_CERT=/opt/solid/solid-temporary.crt" in env
58
+
59
+ def test_solid_is_running(host):
60
+ solid = host.process.get(comm="node")
61
+ assert solid.args == "node /usr/local/bin/solid start"
62
+ assert solid.user == "node"
63
+ assert solid.group == "node"
64
+
65
+ def test_solid_is_listening_on_port_8443(host):
66
+ assert host.socket("tcp://0.0.0.0:8443").is_listening
@@ -0,0 +1,55 @@
1
+ import docker
2
+ import pytest
3
+
4
+ from test.wait_for_container import wait_for_container
5
+
6
+ testinfra_hosts = ['docker://test_container']
7
+
8
+ @pytest.fixture(scope="module", autouse=True)
9
+ def solid_server(client, image):
10
+ container = client.containers.run(
11
+ image.id,
12
+ name="solid_server",
13
+ detach=True,
14
+ tty=True
15
+ )
16
+ wait_for_container(container)
17
+ yield container
18
+ container.remove(force=True)
19
+
20
+
21
+ @pytest.fixture(scope="module", autouse=True)
22
+ def container(client, solid_server):
23
+ container = client.containers.run(
24
+ 'alpine',
25
+ name="test_container",
26
+ detach=True,
27
+ tty=True,
28
+ volumes_from=solid_server.id
29
+ )
30
+ yield container
31
+ container.remove(force=True)
32
+
33
+
34
+ def test_solid_data_dir_is_mounted(host):
35
+ solid_data = host.file("/opt/solid/data/")
36
+ assert solid_data.exists
37
+ assert solid_data.is_directory
38
+ assert solid_data.uid == 1000
39
+ assert solid_data.gid == 1000
40
+
41
+
42
+ def test_solid_db_dir_is_mounted(host):
43
+ solid_db = host.file("/opt/solid/.db/")
44
+ assert solid_db.exists
45
+ assert solid_db.is_directory
46
+ assert solid_db.uid == 1000
47
+ assert solid_db.gid == 1000
48
+
49
+
50
+ def test_solid_config_dir_is_mounted(host):
51
+ solid_config = host.file("/opt/solid/config/")
52
+ assert solid_config.exists
53
+ assert solid_config.is_directory
54
+ assert solid_config.uid == 1000
55
+ assert solid_config.gid == 1000
@@ -0,0 +1,8 @@
1
+ import time
2
+
3
+ def wait_for_container(container, message="running on"):
4
+ count = 0
5
+ while (not message in str(container.logs())) and (count < 10):
6
+ count = count + 1
7
+ time.sleep(1)
8
+ assert message in str(container.logs()), 'Expected message not present until timeout. Waited for "%s"' % message
File without changes
File without changes
File without changes