@@ -14,10 +14,14 @@ import {
1414 CanRead ,
1515 CanWrite ,
1616 CanSearch ,
17- CanSearchRelation
17+ CanSearchRelation ,
18+ CanReadAll ,
19+ CanWriteAll ,
20+ getCanReadAll ,
21+ getCanWriteAll
1822} from '../../../../src/bodyguard' ;
1923import { BaseModel } from '../../../../src/models' ;
20- import { BodyguardOwner } from '../../../../src/enums' ;
24+ import { BodyguardOwner , UserRole } from '../../../../src/enums' ;
2125
2226class ExampleModel extends BaseModel {
2327 @BodyguardKey ( ) public bodyguardKey : number = undefined ;
@@ -48,6 +52,76 @@ class ExampleModel extends BaseModel {
4852}
4953const example = new ExampleModel ( ) ;
5054
55+ @CanReadAll ( )
56+ class ExampleReadableModel extends BaseModel {
57+ public testField1 : string = undefined ;
58+ }
59+ const exampleReadable = new ExampleReadableModel ( ) ;
60+
61+ @CanWriteAll ( )
62+ class ExampleWritableModel extends BaseModel {
63+ public testField1 : string = undefined ;
64+ }
65+ const exampleWritable = new ExampleWritableModel ( ) ;
66+
67+ @CanReadAll ( UserRole . Admin )
68+ class AdminReadableModel extends BaseModel {
69+ public testField1 : string = undefined ;
70+ }
71+ const adminReadable = new AdminReadableModel ( ) ;
72+
73+ @CanWriteAll ( UserRole . Admin )
74+ class AdminWritableModel extends BaseModel {
75+ public testField1 : string = undefined ;
76+ }
77+ const adminWritable = new AdminWritableModel ( ) ;
78+
79+ @CanReadAll ( )
80+ class MixedReadableModel extends BaseModel {
81+ public anyoneCanReadThisField : string = undefined ;
82+
83+ @CanRead ( UserRole . Admin )
84+ public butOnlyAdminCanReadThisOne : string = undefined ;
85+ }
86+ const mixedReadable = new MixedReadableModel ( ) ;
87+
88+ @CanWriteAll ( )
89+ class MixedWritableModel extends BaseModel {
90+ public anyoneCanWriteThisField : string = undefined ;
91+
92+ @CanWrite ( UserRole . Admin )
93+ public butOnlyAdminCanWriteThisOne : string = undefined ;
94+ }
95+ const mixedWritable = new MixedWritableModel ( ) ;
96+
97+ /**
98+ * getCanReadAll()
99+ * pointyapi/bodyguard
100+ */
101+ describe ( 'getCanReadAll()' , ( ) => {
102+ it ( 'returns anyone if no parameter is set' , ( ) => {
103+ expect ( getCanReadAll ( exampleReadable ) ) . toEqual ( BodyguardOwner . Anyone ) ;
104+ } ) ;
105+
106+ it ( 'returns role if set as parameter' , ( ) => {
107+ expect ( getCanReadAll ( adminReadable ) ) . toEqual ( UserRole . Admin ) ;
108+ } ) ;
109+ } ) ;
110+
111+ /**
112+ * getCanWriteAll()
113+ * pointyapi/bodyguard
114+ */
115+ describe ( 'getCanWriteAll()' , ( ) => {
116+ it ( 'returns anyone if no parameter is set' , ( ) => {
117+ expect ( getCanWriteAll ( exampleWritable ) ) . toEqual ( BodyguardOwner . Anyone ) ;
118+ } ) ;
119+
120+ it ( 'returns role if set as parameter' , ( ) => {
121+ expect ( getCanWriteAll ( adminWritable ) ) . toEqual ( UserRole . Admin ) ;
122+ } ) ;
123+ } ) ;
124+
51125/**
52126 * isBodyguardKey()
53127 * pointyapi/bodyguard
@@ -91,8 +165,16 @@ describe('getCanRead()', () => {
91165 ) ;
92166 } ) ;
93167
94- it ( 'returns undefined if the member is not readable' , ( ) => {
95- expect ( getCanRead ( example , 'bodyguardKey' ) ) . toBe ( undefined ) ;
168+ it ( 'returns anyone if the class has CanReadAll()' , ( ) => {
169+ expect ( getCanRead ( mixedReadable , 'anyoneCanReadThisField' ) ) . toEqual (
170+ BodyguardOwner . Anyone
171+ ) ;
172+ } ) ;
173+
174+ it ( 'returns UserRole.Admin if CanReadAll() has been overridden' , ( ) => {
175+ expect ( getCanRead ( mixedReadable , 'butOnlyAdminCanReadThisOne' ) ) . toEqual (
176+ UserRole . Admin
177+ ) ;
96178 } ) ;
97179} ) ;
98180
@@ -128,6 +210,18 @@ describe('getCanWrite()', () => {
128210 it ( 'returns undefined if the member is not writeable' , ( ) => {
129211 expect ( getCanWrite ( example , 'bodyguardKey' ) ) . toBe ( undefined ) ;
130212 } ) ;
213+
214+ it ( 'returns anyone if the class has CanWriteAll()' , ( ) => {
215+ expect ( getCanWrite ( mixedWritable , 'anyoneCanWriteThisField' ) ) . toEqual (
216+ BodyguardOwner . Anyone
217+ ) ;
218+ } ) ;
219+
220+ it ( 'returns UserRole.Admin if CanWriteAll() has been overridden' , ( ) => {
221+ expect (
222+ getCanWrite ( mixedWritable , 'butOnlyAdminCanWriteThisOne' )
223+ ) . toEqual ( UserRole . Admin ) ;
224+ } ) ;
131225} ) ;
132226
133227/**
0 commit comments