inrupt / solid-client-js

Library for accessing data and managing permissions on data stored in a Solid Pod
https://docs.inrupt.com/developer-tools/javascript/client-libraries/
MIT License
231 stars 37 forks source link

getResourcePolicyAll and getPolicyAll functions from acp_ess_2 module don't work #1641

Open AyazDyshin opened 2 years ago

AyazDyshin commented 2 years ago

Bug description

when using getResourcePolicyAll function on a resource that has policies, an empty array is returned. Same goes for getPolicyAll

To Reproduce

  1. create a new container
  2. define some policies on it
  3. call getResourcePolicyAll function on it
  4. check the return of the function (same for getPolicyAll)

Minimal reproduction https://codesandbox.io/s/peaceful-wilson-7fxwfi?file=/src/index.ts

Expected result

Expected result in both cases is the array with defined policies on the resource.

expected result

Actual result

empty arrays

Environment

System: OS: macOS 10.15.7 CPU: (4) x64 Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz Memory: 409.36 MB / 4.00 GB Shell: 5.7.1 - /bin/zsh Binaries: Node: 16.14.0 - ~/.nvm/versions/node/v16.14.0/bin/node npm: 8.3.1 - ~/.nvm/versions/node/v16.14.0/bin/npm Browsers: Chrome: 102.0.5005.61 Safari: 15.5 npmPackages: @babel/core: ^7.17.9 => 7.17.9 @babel/preset-env: ^7.16.11 => 7.16.11 @babel/preset-react: ^7.16.7 => 7.16.7 @babel/preset-typescript: ^7.16.7 => 7.16.7 @inrupt/lit-generated-vocab-common: ^0.3.11 => 0.3.11 @inrupt/solid-client: ^1.23.1 => 1.23.1 @inrupt/solid-client-access-grants: ^1.0.1 => 1.0.1 @inrupt/solid-client-authn-browser: ^1.11.7 => 1.11.7 @inrupt/solid-ui-react: ^2.7.0 => 2.7.0 @inrupt/vocab-common-rdf: ^1.0.3 => 1.0.3 @types/jest: ^27.4.1 => 27.4.1 @types/node: ^17.0.23 => 17.0.23 @types/react: ^18.0.2 => 18.0.2 @types/react-dom: ^18.0.0 => 18.0.0 assert: ^2.0.0 => 2.0.0 babel-loader: ^8.2.4 => 8.2.4 bootstrap: ^5.1.3 => 5.1.3 buffer: ^6.0.3 => 6.0.3 css-loader: ^6.7.1 => 6.7.1 gh-pages: ^3.2.3 => 3.2.3 html-webpack-plugin: ^5.5.0 => 5.5.0 rdf-namespaces: ^1.9.2 => 1.9.2 react: ^18.0.0 => 18.0.0 react-bootstrap: ^2.2.3 => 2.2.3 react-dom: ^18.0.0 => 18.0.0 react-icons: ^4.3.1 => 4.3.1 solid-file-client: ^2.1.3 => 2.1.3 style-loader: ^3.3.1 => 3.3.1 ts-loader: ^9.2.8 => 9.2.8 typescript: ^4.6.3 => 4.6.3 webpack: ^5.72.0 => 5.72.0 webpack-cli: ^4.9.2 => 4.9.2 webpack-dev-server: ^4.8.1 => 4.8.1 npmGlobalPackages: corepack: 0.10.0 create-react-app: 5.0.0 java: 0.12.2 jest: 27.5.1 npm: 8.3.1 typescript: 4.6.2

Additional information

  1. The pod on the these functions were tested is hosted on: https://pod.inrupt.com/

  2. The way policies were defined is pretty much a copy and paste of this section (Create Policy to Match Agents and Clients): https://docs.inrupt.com/developer-tools/javascript/client-libraries/tutorial/manage-acp/#create-policy-to-match-agents-and-clients with slight adjustment, Client Application Matcher definition was omitted. and another policy defined was pretty much a copy and paste of this scetion (Make a Resource Public: Create Public Policy for a Resource): https://docs.inrupt.com/developer-tools/javascript/client-libraries/tutorial/manage-acp/#make-a-resource-public-create-public-policy-for-a-resource

  3. A notable thing is that function getResourceMatcherAll from the same module (acp_ess_2), actually returns both matchers that were defined.

    console log : Screen Shot 2022-06-12 at 10 21 39 PM

AyazDyshin commented 2 years ago

A small update to this: functions getPolicyUrlAll and getAcrPolicyUrlAll from acp_ess_2 module both behave in the same way, ie: both return empty arrays even though the resource does have policies defined.

NSeydoux commented 1 year ago

Hi, I'm sorry for the delayed response. I'm looking at this now, and can't reproduce, is this still an issue on your end?

Note that getPolicyAll expects an ACR graph to be provided, and not the resource which access is controlled by the ACR. The usage of getResourcePolicyAll in the provided codesandbox is correct, but it's expected that calling getPolicyAll with a regular Resource will return an empty array.