@@ -114,18 +114,26 @@ describe("Access System", () => {
114114 let id : LocalId ;
115115 let id2 : LocalId ;
116116 let id3 : LocalId ;
117+ let id4 : LocalId ;
118+ let id5 : LocalId ;
117119
118120 beforeEach ( ( ) => {
119121 // Shape 1: Only some default access rights
120122 // Shape 2: Full access rights for a specific user
121123 // Shape 3: Mixed default & specific access rights
124+ // Shape 4: No access rights
125+ // Shape 5: Player with only edit access rights
122126 id = generateTestLocalId ( ) ;
123127 id2 = generateTestLocalId ( ) ;
124128 id3 = generateTestLocalId ( ) ;
129+ id4 = generateTestLocalId ( ) ;
130+ id5 = generateTestLocalId ( ) ;
125131
126132 const id1Default = { edit : true , movement : false , vision : true } ;
127133 const id2Default = { edit : false , movement : true , vision : false } ;
128134 const id3Default = { edit : false , movement : false , vision : true } ;
135+ const id4Default = { edit : false , movement : false , vision : false } ;
136+ const id5Default = { edit : false , movement : false , vision : false } ;
129137
130138 const id2TestUser = {
131139 access : { edit : true , movement : true , vision : true } ,
@@ -153,6 +161,14 @@ describe("Access System", () => {
153161 default : id3Default ,
154162 extra : [ id3TestUser ] ,
155163 } ) ;
164+ accessSystem . inform ( id4 , {
165+ default : id4Default ,
166+ extra : [ ] ,
167+ } ) ;
168+ accessSystem . inform ( id5 , {
169+ default : id5Default ,
170+ extra : [ id3TestUser ] ,
171+ } ) ;
156172 } ) ;
157173 it ( "should return true for the DM without limiters" , ( ) => {
158174 // setup
@@ -161,6 +177,8 @@ describe("Access System", () => {
161177 accessCheck ( id , { edit : true , movement : true , vision : true } ) ;
162178 accessCheck ( id2 , { edit : true , movement : true , vision : true } ) ;
163179 accessCheck ( id3 , { edit : true , movement : true , vision : true } ) ;
180+ accessCheck ( id4 , { edit : true , movement : true , vision : true } ) ;
181+ accessCheck ( id5 , { edit : true , movement : true , vision : true } ) ;
164182 // teardown
165183 gameSystem . setDm ( false ) ;
166184 } ) ;
@@ -172,36 +190,72 @@ describe("Access System", () => {
172190 accessCheck ( id , { edit : true , movement : true , vision : true } ) ;
173191 accessCheck ( id2 , { edit : true , movement : true , vision : true } ) ;
174192 accessCheck ( id3 , { edit : true , movement : true , vision : true } ) ;
193+ accessCheck ( id4 , { edit : true , movement : true , vision : true } ) ;
194+ accessCheck ( id5 , { edit : true , movement : true , vision : true } ) ;
175195 // teardown
176196 gameSystem . setDm ( false ) ;
177197 } ) ;
178- it ( "should return according to the access rights for the DM with a limiter and the shape in the active filter" , ( ) => {
198+ it ( "should return true for the DM with a limiter and the shape in the active filter" , ( ) => {
179199 // setup
180200 gameSystem . setDm ( true ) ;
181- // test shape 1
201+ // test only shape 1 active
182202 accessSystem . setActiveVisionTokens ( id ) ;
183- accessCheck ( id , { edit : true , movement : false , vision : true } , true ) ;
203+ accessCheck ( id , { edit : true , movement : true , vision : true } , true ) ;
184204 // test shape 2
185205 accessSystem . setActiveVisionTokens ( id2 ) ;
186206 accessCheck ( id2 , { edit : true , movement : true , vision : true } , true ) ;
187207 // test shape 3
188208 accessSystem . setActiveVisionTokens ( id3 ) ;
189- accessCheck ( id3 , { edit : true , movement : false , vision : true } , true ) ;
209+ accessCheck ( id3 , { edit : true , movement : true , vision : true } , true ) ;
210+ // test shape 4
211+ accessSystem . setActiveVisionTokens ( id4 ) ;
212+ accessCheck ( id4 , { edit : true , movement : true , vision : true } , true ) ;
213+ // test shape 5
214+ accessSystem . setActiveVisionTokens ( id5 ) ;
215+ accessCheck ( id5 , { edit : true , movement : true , vision : true } , true ) ;
190216 // test all shapes
191- accessSystem . setActiveVisionTokens ( id , id2 , id3 ) ;
217+ accessSystem . setActiveVisionTokens ( id , id2 , id3 , id4 , id5 ) ;
192218 expect ( accessSystem . hasAccessTo ( id , "edit" , true ) ) . toBe ( true ) ;
193219 expect ( accessSystem . hasAccessTo ( id2 , "movement" , true ) ) . toBe ( true ) ;
194220 expect ( accessSystem . hasAccessTo ( id3 , "vision" , true ) ) . toBe ( true ) ;
221+ expect ( accessSystem . hasAccessTo ( id4 , "vision" , true ) ) . toBe ( true ) ;
222+ expect ( accessSystem . hasAccessTo ( id5 , "vision" , true ) ) . toBe ( true ) ;
195223 // teardown
196224 gameSystem . setDm ( false ) ;
197225 } ) ;
198226 it ( "should return false for the DM with a limiter and the shape not in the active filter" , ( ) => {
199227 // setup
200228 gameSystem . setDm ( true ) ;
229+ // test shape 1 active
201230 accessSystem . setActiveVisionTokens ( id ) ;
202- // test
203231 expect ( accessSystem . hasAccessTo ( id2 , "vision" , true ) ) . toBe ( false ) ;
204232 expect ( accessSystem . hasAccessTo ( id3 , "vision" , true ) ) . toBe ( false ) ;
233+ expect ( accessSystem . hasAccessTo ( id4 , "vision" , true ) ) . toBe ( false ) ;
234+ expect ( accessSystem . hasAccessTo ( id5 , "vision" , true ) ) . toBe ( false ) ;
235+ // test shape 2 active
236+ accessSystem . setActiveVisionTokens ( id2 ) ;
237+ expect ( accessSystem . hasAccessTo ( id , "vision" , true ) ) . toBe ( false ) ;
238+ expect ( accessSystem . hasAccessTo ( id3 , "vision" , true ) ) . toBe ( false ) ;
239+ expect ( accessSystem . hasAccessTo ( id4 , "vision" , true ) ) . toBe ( false ) ;
240+ expect ( accessSystem . hasAccessTo ( id5 , "vision" , true ) ) . toBe ( false ) ;
241+ // test shape 3 active
242+ accessSystem . setActiveVisionTokens ( id3 ) ;
243+ expect ( accessSystem . hasAccessTo ( id , "vision" , true ) ) . toBe ( false ) ;
244+ expect ( accessSystem . hasAccessTo ( id2 , "vision" , true ) ) . toBe ( false ) ;
245+ expect ( accessSystem . hasAccessTo ( id4 , "vision" , true ) ) . toBe ( false ) ;
246+ expect ( accessSystem . hasAccessTo ( id5 , "vision" , true ) ) . toBe ( false ) ;
247+ // test shape 4 active
248+ accessSystem . setActiveVisionTokens ( id4 ) ;
249+ expect ( accessSystem . hasAccessTo ( id , "vision" , true ) ) . toBe ( false ) ;
250+ expect ( accessSystem . hasAccessTo ( id2 , "vision" , true ) ) . toBe ( false ) ;
251+ expect ( accessSystem . hasAccessTo ( id3 , "vision" , true ) ) . toBe ( false ) ;
252+ expect ( accessSystem . hasAccessTo ( id5 , "vision" , true ) ) . toBe ( false ) ;
253+ // test shape 5 active
254+ accessSystem . setActiveVisionTokens ( id5 ) ;
255+ expect ( accessSystem . hasAccessTo ( id , "vision" , true ) ) . toBe ( false ) ;
256+ expect ( accessSystem . hasAccessTo ( id2 , "vision" , true ) ) . toBe ( false ) ;
257+ expect ( accessSystem . hasAccessTo ( id3 , "vision" , true ) ) . toBe ( false ) ;
258+ expect ( accessSystem . hasAccessTo ( id4 , "vision" , true ) ) . toBe ( false ) ;
205259 // teardown
206260 gameSystem . setDm ( false ) ;
207261 } ) ;
@@ -260,6 +314,10 @@ describe("Access System", () => {
260314 accessCheck ( id2 , { edit : false , movement : true , vision : false } ) ;
261315 // Shape 3
262316 accessCheck ( id3 , { edit : false , movement : false , vision : true } ) ;
317+ // Shape 4
318+ accessCheck ( id4 , { edit : false , movement : false , vision : false } ) ;
319+ // Shape 5
320+ accessCheck ( id5 , { edit : false , movement : false , vision : false } ) ;
263321 // User 2: Full access
264322 coreStore . setUsername ( "userWithFullRights" ) ;
265323 // Shape 1
@@ -268,6 +326,10 @@ describe("Access System", () => {
268326 accessCheck ( id2 , { edit : true , movement : true , vision : true } ) ;
269327 // Shape 3
270328 accessCheck ( id3 , { edit : false , movement : false , vision : true } ) ;
329+ // Shape 4
330+ accessCheck ( id4 , { edit : false , movement : false , vision : false } ) ;
331+ // Shape 5
332+ accessCheck ( id5 , { edit : false , movement : false , vision : false } ) ;
271333 // User 3: Mixed access
272334 coreStore . setUsername ( "userWithLimitedRights" ) ;
273335 // Shape 1
@@ -276,6 +338,10 @@ describe("Access System", () => {
276338 accessCheck ( id2 , { edit : false , movement : true , vision : false } ) ;
277339 // Shape 3
278340 accessCheck ( id3 , { edit : true , movement : false , vision : true } ) ;
341+ // Shape 4
342+ accessCheck ( id4 , { edit : false , movement : false , vision : false } ) ;
343+ // Shape 5
344+ accessCheck ( id5 , { edit : true , movement : false , vision : false } ) ;
279345 } ) ;
280346 } ) ;
281347 describe ( "getAccess" , ( ) => {
0 commit comments