Skip to content

Examples

Examples of scopes

Valid Scopes

  • admin
  • user:read
  • user:read:write
  • :read
  • :read:write
  • :
  • ::
  • user:write:delete::read
  • (a blank space)

Structured Scopes test cases

Simple single scopes - specific namespace

Base scope Inbound scope Expected outcome
user something fail
user user pass
user user:read fail
user:read user pass
user:read user:read pass
user:read user:write fail
user:read user:read:write pass
user:read:write user:read fail*
user:read:write user:read:write pass
user:read:write user:write:read pass
user: user pass
user: user:read pass
user: user:write pass

Simple single scopes - global namespace

Base scope Inbound scope Expected outcome
: :read pass
: admin pass
: anything here pass
:read admin pass
:read :read pass
:read :write fail
global: :read pass
global: admin pass
global: anything here pass
global:read admin pass
global:read :read pass
global:read :write fail
global :read fail
global admin pass
user:write global:write fail
user:write :write fail
admin global fail

Simple multiple scopes

Base scope Inbound scope Expected outcome
user something else fail
user something else user pass
user:read something:else user:read pass
user:read user:read something:else pass
user foo user fail**
user foo user foo pass
user foo foo user pass
user:read foo user foo pass
user:read foo user foo:read fail
user:read foo user:read foo pass
user:read foo:bar :read:bar fail
user:read foo:bar user:read foo pass
user:read foo:bar user foo pass
user foo user fail*

Complex scopes

Base scope Inbound scope Expected outcome
::delete user pass
::delete user:read fail
::delete user:delete fail
::delete user:read:delete fail
:::delete user pass
:::delete user:read fail
:::delete user:delete fail
:::delete user:read:delete fail
user::delete user pass
user::delete user:read fail
user::delete user:delete fail
user::delete user:read:delete fail
user:::delete user pass
user:::delete user:read fail
user:::delete user:delete fail
user:::delete user:read:delete fail
user:read::delete user pass
user:read::delete user:read pass
user:read::delete user:delete fail
user:read::delete user:read:delete fail
user:read::delete user:write fail
user:read user::delete user:read:delete fail**
user:read user::delete user:read user:delete fail**
anything here fail
:: anything here fail

Note

The preferred method of failing any scope should be :: and not an empty space for its explicit nature.

1
2
3
Legend
* This is the default outcome. However, the validator should be capable of receiving an instruction that instead of ALL actions being required, only one must match.
** This is the default outcome. However, the validator should be capable of receiving an instruction that instead of ALL required scopes being met, only ONE required scope is fulfilled.