@@ -10,6 +10,7 @@ import React from 'react';
1010import { Route , Routes } from 'react-router-dom' ;
1111
1212import {
13+ AuthProvider ,
1314 CreateContextProvider ,
1415 DataProvider ,
1516 Form ,
@@ -28,7 +29,10 @@ import {
2829import { CreateController } from './CreateController' ;
2930
3031import { TestMemoryRouter } from '../../routing' ;
31- import { CanAccess } from './useCreateController.security.stories' ;
32+ import {
33+ CanAccess ,
34+ DisableAuthentication ,
35+ } from './useCreateController.security.stories' ;
3236
3337describe ( 'useCreateController' , ( ) => {
3438 const defaultProps = {
@@ -70,8 +74,8 @@ describe('useCreateController', () => {
7074 let saveCallback ;
7175 const dataProvider = testDataProvider ( {
7276 getOne : ( ) => Promise . resolve ( { data : { id : 12 } } as any ) ,
73- // @ts -ignore
7477 create : ( _ , { data } ) =>
78+ // @ts -ignore
7579 Promise . resolve ( { data : { id : 123 , ...data } } ) ,
7680 } ) ;
7781
@@ -224,8 +228,8 @@ describe('useCreateController', () => {
224228 let saveCallback ;
225229 const dataProvider = testDataProvider ( {
226230 getOne : ( ) => Promise . resolve ( { data : { id : 12 } } as any ) ,
227- // @ts -ignore
228231 create : ( _ , { data } ) =>
232+ // @ts -ignore
229233 Promise . resolve ( { data : { id : 123 , ...data } } ) ,
230234 } ) ;
231235 const onSuccess = jest . fn ( ) ;
@@ -262,8 +266,8 @@ describe('useCreateController', () => {
262266 let saveCallback ;
263267 const dataProvider = testDataProvider ( {
264268 getOne : ( ) => Promise . resolve ( { data : { id : 12 } } as any ) ,
265- // @ts -ignore
266269 create : ( _ , { data } ) =>
270+ // @ts -ignore
267271 Promise . resolve ( { data : { id : 123 , ...data } } ) ,
268272 } ) ;
269273 const onSuccess = jest . fn ( ) ;
@@ -692,5 +696,39 @@ describe('useCreateController', () => {
692696 await screen . findByText ( 'Loading...' ) ;
693697 await screen . findByText ( 'Create view' ) ;
694698 } ) ;
699+
700+ it ( 'should not call checkAuth nor canAccess when disableAuthentication is true' , async ( ) => {
701+ const authProvider : AuthProvider = {
702+ checkAuth : jest . fn ( ) . mockResolvedValue ( true ) ,
703+ login : ( ) => Promise . resolve ( ) ,
704+ logout : ( ) => Promise . resolve ( ) ,
705+ checkError : ( ) => Promise . resolve ( ) ,
706+ getPermissions : ( ) => Promise . resolve ( ) ,
707+ canAccess : jest . fn ( ) . mockResolvedValue ( false ) ,
708+ } ;
709+ render ( < DisableAuthentication authProvider = { authProvider } /> ) ;
710+ await screen . findByText ( 'Create view' ) ;
711+ expect ( authProvider . checkAuth ) . not . toHaveBeenCalled ( ) ;
712+ expect ( authProvider . canAccess ) . not . toHaveBeenCalled ( ) ;
713+ } ) ;
714+
715+ it ( 'should not call checkAuth nor canAccess when disableAuthentication is true even if useAuthState was called before' , async ( ) => {
716+ const authProvider : AuthProvider = {
717+ checkAuth : jest . fn ( ) . mockResolvedValue ( true ) ,
718+ login : ( ) => Promise . resolve ( ) ,
719+ logout : ( ) => Promise . resolve ( ) ,
720+ checkError : ( ) => Promise . resolve ( ) ,
721+ getPermissions : ( ) => Promise . resolve ( ) ,
722+ canAccess : jest . fn ( ) . mockResolvedValue ( false ) ,
723+ } ;
724+ render ( < DisableAuthentication authProvider = { authProvider } /> ) ;
725+ await screen . findByText ( 'Create view' ) ;
726+ fireEvent . click ( await screen . findByText ( 'List' ) ) ;
727+ await screen . findByText ( 'List view' ) ;
728+ fireEvent . click ( await screen . findByText ( 'Create' ) ) ;
729+ await screen . findByText ( 'Create view' ) ;
730+ expect ( authProvider . checkAuth ) . toHaveBeenCalledTimes ( 1 ) ;
731+ expect ( authProvider . canAccess ) . not . toHaveBeenCalled ( ) ;
732+ } ) ;
695733 } ) ;
696734} ) ;
0 commit comments