diff --git a/karma.conf.js b/karma.conf.js
index 015b4c0cec49e1dde7fcaf217e0eaa145b9c6168..45656de537e783e858dc2c1f11c9f52b603e2b66 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -8,6 +8,7 @@ module.exports = function (config) {
         plugins: [
             require('karma-jasmine'),
             require('karma-chrome-launcher'),
+            require('karma-spec-reporter'),
             require('karma-jasmine-html-reporter'),
             require('karma-coverage-istanbul-reporter'),
             require('@angular-devkit/build-angular/plugins/karma')
@@ -20,7 +21,7 @@ module.exports = function (config) {
             reports: ['html', 'lcovonly', 'text-summary'],
             fixWebpackSourcePaths: true
         },
-        reporters: ['progress', 'kjhtml'],
+        reporters: ['progress', 'kjhtml', 'spec'],
         port: 9876,
         colors: true,
         logLevel: config.LOG_INFO,
diff --git a/package.json b/package.json
index 99b9274521eca1f947b7b4105f206f329838c720..4031258b3fe20397bc605747c9253c00fbbde53c 100644
--- a/package.json
+++ b/package.json
@@ -56,6 +56,7 @@
     "karma-coverage-istanbul-reporter": "~3.0.2",
     "karma-jasmine": "~4.0.0",
     "karma-jasmine-html-reporter": "^1.5.0",
+    "karma-spec-reporter": "^0.0.32",
     "protractor": "~7.0.0",
     "ts-node": "~9.0.0",
     "tslint": "~6.1.0",
diff --git a/src/app/core/components/nav.component.html b/src/app/core/components/nav.component.html
index 907084b5d641436a47c8fde33c296421d3f03a46..8161ec8052c17293c5444745d43fbae0cd7b8296 100644
--- a/src/app/core/components/nav.component.html
+++ b/src/app/core/components/nav.component.html
@@ -12,28 +12,29 @@
                     <span class="fas fa-home"></span> Home
                 </a>
             </li>
-            <li *ngIf="isSearchAllowed()" id="search_link" class="nav-item">
+            <li *ngIf="getConfig('search', 'allowed')" id="search_link" class="nav-item">
                 <a class="nav-link" routerLink="/search" routerLinkActive="active">
                     <span class="fas fa-search"></span> Search
                 </a>
             </li>
-            <li *ngIf="isSearchMultipleAllowed()" id="search_multiple_link" class="nav-item">
+            <li *ngIf="getConfig('search_multiple', 'allowed')" id="search_multiple_link" class="nav-item">
                 <a class="nav-link" routerLink="/search-multiple" routerLinkActive="active">
                     <span class="fas fa-search-plus"></span> Search multiple
                 </a>
             </li>
-            <li *ngIf="isDocumentationAllowed()" id="documentation_link" class="nav-item">
+            <li *ngIf="getConfig('documentation', 'allowed')" id="documentation_link" class="nav-item">
                 <a class="nav-link" routerLink="/documentation" routerLinkActive="active">
                     <span class="fas fa-question"></span> Documentation
                 </a>
             </li>
         </ul>
-        <button *ngIf="!isAuthenticated" class="btn btn-outline-success my-2 my-sm-0" 
+        <button *ngIf="getConfig('authentication', 'allowed') && !isAuthenticated"
+            class="btn btn-outline-success my-2 my-sm-0"
             id="button-sign-in"
-            (click)="emitLogin()">
+            (click)="login.emit()">
             Sign In / Register
         </button>
-        <span *ngIf="isAuthenticated" id="dropdown-menu" dropdown>
+        <span *ngIf="getConfig('authentication', 'allowed') && isAuthenticated" id="dropdown-menu" dropdown>
             <button id="button-basic" dropdownToggle type="button" class="btn btn-light" aria-controls="dropdown-basic">
                 <span class="fa-stack theme-color">
                     <span class="fas fa-circle fa-2x"></span>
@@ -49,15 +50,15 @@
                 </li>
                 <li class="divider dropdown-divider"></li>
                 <li role="menuitem">
-                    <a class="dropdown-item pointer" (click)="emitOpenEditProfile()">
+                    <button class="dropdown-item pointer" (click)="openEditProfile.emit()">
                         <span class="fas fa-id-card"></span> Edit profile
-                    </a>
+                    </button>
                 </li>
                 <li class="divider dropdown-divider"></li>
                 <li role="menuitem">
-                    <a class="dropdown-item text-danger pointer" (click)="emitLogout()">
+                    <button class="dropdown-item text-danger pointer" (click)="logout.emit()">
                         <span class="fas fa-sign-out-alt fa-fw"></span> Sign Out
-                    </a>
+                    </button>
                 </li>
             </ul>
         </span>
@@ -70,46 +71,48 @@
         </button>
         <ul id="basic-link-dropdown" *dropdownMenu class="dropdown-menu dropdown-menu-right dropdown-up" role="menu"
             aria-labelledby="basic-link">
-            <li *ngIf="isAuthenticated" role="menuitem">
+            <li *ngIf="getConfig('authentication', 'allowed') && isAuthenticated" role="menuitem">
                 <span class="dropdown-item font-italic">{{ userProfile.email }}</span>
             </li>
-            <li *ngIf="isAuthenticated" class="divider dropdown-divider"></li>
+            <li *ngIf="getConfig('authentication', 'allowed') && isAuthenticated" class="divider dropdown-divider"></li>
             <li role="menuitem">
                 <a class="dropdown-item" routerLink="/home">
                     <span class="fas fa-home fa-fw"></span> Home
                 </a>
             </li>
-            <li *ngIf="isSearchAllowed()" role="menuitem">
+            <li *ngIf="getConfig('search', 'allowed')" role="menuitem">
                 <a class="dropdown-item" routerLink="/search">
                     <span class="fas fa-search fa-fw"></span> Search
                 </a>
             </li>
-            <li *ngIf="isSearchMultipleAllowed()" role="menuitem">
+            <li *ngIf="getConfig('search_multiple', 'allowed')" role="menuitem">
                 <a class="dropdown-item" routerLink="/search-multiple">
                     <span class="fas fa-search-plus fa-fw"></span> Search multiple
                 </a>
             </li>
-            <li *ngIf="isDocumentationAllowed()" role="menuitem">
+            <li *ngIf="getConfig('documentation', 'allowed')" role="menuitem">
                 <a class="dropdown-item" routerLink="/documentation">
                     <span class="fas fa-question fa-fw"></span> Documentation
                 </a>
             </li>
-            <li *ngIf="isAuthenticated" class="divider dropdown-divider"></li>
-            <li *ngIf="isAuthenticated" role="menuitem">
-                <a class="dropdown-item pointer" (click)="emitOpenEditProfile()">
+            <li *ngIf="getConfig('authentication', 'allowed') && isAuthenticated" class="divider dropdown-divider"></li>
+            <li *ngIf="getConfig('authentication', 'allowed') && isAuthenticated" role="menuitem">
+                <button class="dropdown-item pointer" (click)="openEditProfile.emit()">
                     <span class="fas fa-id-card"></span> Edit profile
-                </a>
+                </button>
             </li>
-            <li class="divider dropdown-divider"></li>
+            <li *ngIf="getConfig('authentication', 'allowed')" class="divider dropdown-divider"></li>
             <li role="menuitem">
-                <a *ngIf="!isAuthenticated" class="dropdown-item text-success" routerLink="/login">
+                <button *ngIf="getConfig('authentication', 'allowed') && !isAuthenticated"
+                    class="dropdown-item text-success"
+                    (click)="login.emit()">
                     <span class="fas fa-sign-in-alt fa-fw"></span> Sign In / Register
-                </a>
+                </button>
             </li>
             <li role="menuitem">
-                <a *ngIf="isAuthenticated" class="dropdown-item pointer text-danger" (click)="logout.emit()">
+                <button *ngIf="getConfig('authentication', 'allowed') && isAuthenticated" class="dropdown-item pointer text-danger" (click)="logout.emit()">
                     <span class="fas fa-sign-out-alt fa-fw"></span> Sign Out
-                </a>
+                </button>
             </li>
         </ul>
     </span>
diff --git a/src/app/core/components/nav.component.spec.ts b/src/app/core/components/nav.component.spec.ts
index de8c2a03d969b89fe7536880a0c1a80b3d7012e6..7757e729087c4a2fe8f33b87b3a84797f491e5d0 100644
--- a/src/app/core/components/nav.component.spec.ts
+++ b/src/app/core/components/nav.component.spec.ts
@@ -19,49 +19,23 @@ describe('[Core] Component: NavComponent', () => {
         expect(component).toBeTruthy();
     });
 
-    it('should display the Sign In button if no user logged in', () => {
+    it('should display the Sign In button if authentication allowed and no user logged in', () => {
+        component.instance = INSTANCE;
         component.isAuthenticated = false;
         fixture.detectChanges();
         const template = fixture.nativeElement;
         expect(template.querySelector('#button-sign-in')).toBeTruthy();
     });
 
-    it('should not display the dropdown menu if no user logged in', () => {
-        component.isAuthenticated = false;
-        fixture.detectChanges();
-        const template = fixture.nativeElement;
-        expect(template.querySelector('#dropdown-menu')).toBeFalsy();
-    });
-
-    it('should display the dropdown menu if user logged in', () => {
-        component.isAuthenticated = true;
-        fixture.detectChanges();
-        const template = fixture.nativeElement;
-        expect(template.querySelector('#dropdown-menu')).toBeTruthy();
-    });
-
     it('should not display the Sign In button if user logged in', () => {
+        component.instance = INSTANCE;
         component.isAuthenticated = true;
         fixture.detectChanges();
         const template = fixture.nativeElement;
         expect(template.querySelector('#button-sign-in')).toBeFalsy();
     });
 
-    it('raises the logout event when clicked', () => {
-        component.logout.subscribe((event) => expect(event).toBe(undefined));
-        component.emitLogout();
-    });
-
-    it('should display search, search multiple and documentation links if instance config allows it', () => {
-        component.instance = INSTANCE;
-        fixture.detectChanges();
-        const template = fixture.nativeElement;
-        expect(template.querySelector('#search_link')).toBeTruthy();
-        expect(template.querySelector('#search_multiple_link')).toBeTruthy();
-        expect(template.querySelector('#documentation_link')).toBeNull();
-    });
-
-    it('should not display search, search multiple and documentation links if instance config don\'t allows it', () => {
+    it('should not display the Sign In button if authentication not allowed', () => {
         component.instance = {
             name: 'toto',
             label: 'Toto',
@@ -69,21 +43,28 @@ describe('[Core] Component: NavComponent', () => {
             nb_dataset_families: 1,
             nb_datasets: 1,
             config: {
-                search: false,
+                authentication: {
+                    allowed: false
+                },
+                search: {
+                    allowed: false
+                },
                 search_multiple: {
                     allowed: false,
                     all_datasets_selected: false
                 },
-                documentation: false
-            } };
+                documentation: {
+                    allowed: false
+                }
+            }
+        };
+        component.isAuthenticated = true;
         fixture.detectChanges();
         const template = fixture.nativeElement;
-        expect(template.querySelector('#search_link')).toBeFalsy();
-        expect(template.querySelector('#search_multiple_link')).toBeFalsy();
-        expect(template.querySelector('#documentation_link')).toBeFalsy();
+        expect(template.querySelector('#button-sign-in')).toBeFalsy();
     });
 
-    it('#isSearchAllowed() return if search link has to be displayed', () => {
+    it('should not display the dropdown menu if authentication not allowed', () => {
         component.instance = {
             name: 'toto',
             label: 'Toto',
@@ -91,33 +72,53 @@ describe('[Core] Component: NavComponent', () => {
             nb_dataset_families: 1,
             nb_datasets: 1,
             config: {
-                search: true,
+                authentication: {
+                    allowed: false
+                },
+                search: {
+                    allowed: false
+                },
                 search_multiple: {
                     allowed: false,
                     all_datasets_selected: false
                 },
-                documentation: false
+                documentation: {
+                    allowed: false
+                }
             }
         };
-        expect(component.isSearchAllowed()).toBeTruthy();
-        component.instance = {
-            name: 'toto',
-            label: 'Toto',
-            client_url: '',
-            nb_dataset_families: 1,
-            nb_datasets: 1,
-            config: {
-                search: false,
-                search_multiple: {
-                    allowed: false,
-                    all_datasets_selected: false
-                },
-                documentation: false
-            } };
-        expect(component.isSearchAllowed()).toBeFalsy();
+        component.isAuthenticated = true;
+        fixture.detectChanges();
+        const template = fixture.nativeElement;
+        expect(template.querySelector('#dropdown-menu')).toBeFalsy();
     });
 
-    it('#isSearchMultipleAllowed() return if search multiple link has to be displayed', () => {
+    it('should not display the dropdown menu if no user logged in', () => {
+        component.instance = INSTANCE;
+        component.isAuthenticated = false;
+        fixture.detectChanges();
+        const template = fixture.nativeElement;
+        expect(template.querySelector('#dropdown-menu')).toBeFalsy();
+    });
+
+    it('should display the dropdown menu if authentication allowed and user logged in', () => {
+        component.instance = INSTANCE;
+        component.isAuthenticated = true;
+        fixture.detectChanges();
+        const template = fixture.nativeElement;
+        expect(template.querySelector('#dropdown-menu')).toBeTruthy();
+    });
+
+    it('should display search, search multiple and documentation links if instance config allows it', () => {
+        component.instance = INSTANCE;
+        fixture.detectChanges();
+        const template = fixture.nativeElement;
+        expect(template.querySelector('#search_link')).toBeTruthy();
+        expect(template.querySelector('#search_multiple_link')).toBeTruthy();
+        expect(template.querySelector('#documentation_link')).toBeNull();
+    });
+
+    it('should not display search, search multiple and documentation links if instance config don\'t allows it', () => {
         component.instance = {
             name: 'toto',
             label: 'Toto',
@@ -125,34 +126,28 @@ describe('[Core] Component: NavComponent', () => {
             nb_dataset_families: 1,
             nb_datasets: 1,
             config: {
-                search: true,
-                search_multiple: {
-                    allowed: true,
-                    all_datasets_selected: false
+                authentication: {
+                    allowed: false
+                },
+                search: {
+                    allowed: false
                 },
-                documentation: false
-            }
-        };
-        expect(component.isSearchMultipleAllowed()).toBeTruthy();
-        component.instance = {
-            name: 'toto',
-            label: 'Toto',
-            client_url: '',
-            nb_dataset_families: 1,
-            nb_datasets: 1,
-            config: {
-                search: true,
                 search_multiple: {
                     allowed: false,
                     all_datasets_selected: false
                 },
-                documentation: false
-            }
-        };
-        expect(component.isSearchMultipleAllowed()).toBeFalsy();
+                documentation: {
+                    allowed: false
+                }
+            } };
+        fixture.detectChanges();
+        const template = fixture.nativeElement;
+        expect(template.querySelector('#search_link')).toBeFalsy();
+        expect(template.querySelector('#search_multiple_link')).toBeFalsy();
+        expect(template.querySelector('#documentation_link')).toBeFalsy();
     });
 
-    it('#isDocumentationAllowed() return if documentation link has to be displayed', () => {
+    it('#getConfig() return if the given kay is allowed for the given instance configuration propriety', () => {
         component.instance = {
             name: 'toto',
             label: 'Toto',
@@ -160,30 +155,23 @@ describe('[Core] Component: NavComponent', () => {
             nb_dataset_families: 1,
             nb_datasets: 1,
             config: {
-                search: true,
-                search_multiple: {
-                    allowed: true,
-                    all_datasets_selected: false
+                authentication: {
+                    allowed: false
+                },
+                search: {
+                    allowed: true
                 },
-                documentation: true
-            }
-        };
-        expect(component.isDocumentationAllowed()).toBeTruthy();
-        component.instance = {
-            name: 'toto',
-            label: 'Toto',
-            client_url: '',
-            nb_dataset_families: 1,
-            nb_datasets: 1,
-            config: {
-                search: true,
                 search_multiple: {
-                    allowed: true,
+                    allowed: false,
                     all_datasets_selected: false
                 },
-                documentation: false
+                documentation: {
+                    allowed: false
+                }
             }
         };
-        expect(component.isDocumentationAllowed()).toBeFalsy();
+        expect(component.getConfig('search', 'allowed')).toBeTruthy();
+        expect(component.getConfig('search_multiple', 'allowed')).toBeFalsy();
+        expect(component.getConfig('documentation', 'allowed')).toBeFalsy();
     });
 });
diff --git a/src/app/core/components/nav.component.ts b/src/app/core/components/nav.component.ts
index 0436c798a4b5b8b9d8a47a68d7982daf2f9bdc7c..d73dc178ffbd318d1760827fb19173bcc971e0ca 100644
--- a/src/app/core/components/nav.component.ts
+++ b/src/app/core/components/nav.component.ts
@@ -34,65 +34,17 @@ export class NavComponent {
     baseHref: string = environment.baseHref;
 
     /**
-     * Checks if search link is allowed.
+     * Checks if given key for the given configuration propriety is allowed.
      *
-     * @return boolean
-     */
-    isSearchAllowed(): boolean {
-        if (this.instance && this.instance.config.search) {
-            return this.instance.config.search;
-        }
-        return false;
-    }
-
-    /**
-     * Checks if search multiple link is allowed.
-     *
-     * @return boolean
-     */
-    isSearchMultipleAllowed(): boolean {
-        if (this.instance && this.instance.config.search_multiple) {
-            return this.instance.config.search_multiple.allowed;
-        }
-        return false;
-    }
-
-    /**
-     * Checks if documentation link is allowed.
+     * @param {string} prop - The configuration propriety.
+     * @param {string} key - The key in configuration propriety.
      *
      * @return boolean
      */
-    isDocumentationAllowed(): boolean {
-        if (this.instance && this.instance.config.documentation) {
-            return this.instance.config.documentation;
+    getConfig(prop: string, key: string): boolean {
+        if (this.instance && this.instance.config[prop] && this.instance.config[prop][key]) {
+            return this.instance.config[prop][key];
         }
         return false;
     }
-
-    /**
-     * Emits event to log in.
-     *
-     * @fires EventEmitter<any>
-     */
-    emitLogin(): void {
-        this.login.emit();
-    }
-
-    /**
-     * Emits event to log out.
-     *
-     * @return EventEmitter<any>
-     */
-    emitLogout(): void {
-        this.logout.emit();
-    }
-
-    /**
-     * Emits event to go to edit profile page.
-     *
-     * @return EventEmitter<any>
-     */
-    emitOpenEditProfile(): void {
-        this.openEditProfile.emit();
-    }
 }
diff --git a/src/app/core/containers/app.component.spec.ts b/src/app/core/containers/app.component.spec.ts
index 251c368adb593ddddb56ca84b0e20e7347f75e0a..eaa996ec954c77c0f21146e9c34f145ba3c5e360 100644
--- a/src/app/core/containers/app.component.spec.ts
+++ b/src/app/core/containers/app.component.spec.ts
@@ -53,6 +53,14 @@ describe('[Core] Container: AppComponent', () => {
         expect(spy).toHaveBeenCalledWith(loadInstanceMetaAction);
     });
 
+    it('#login() should dispatch LoginAction', () => {
+        const loginAction = new authActions.LoginAction();
+        const spy = spyOn(store, 'dispatch');
+        component.login();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith(loginAction);
+    });
+
     it('#logout() should dispatch LogoutAction', () => {
         const logoutAction = new authActions.LogoutAction();
         const spy = spyOn(store, 'dispatch');
@@ -60,4 +68,12 @@ describe('[Core] Container: AppComponent', () => {
         expect(spy).toHaveBeenCalledTimes(1);
         expect(spy).toHaveBeenCalledWith(logoutAction);
     });
+
+    it('#openEditProfile() should dispatch OpenEditProfileAction', () => {
+        const openEditProfileAction = new authActions.OpenEditProfileAction();
+        const spy = spyOn(store, 'dispatch');
+        component.openEditProfile();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith(openEditProfileAction);
+    });
 });
diff --git a/src/app/core/navigation.guard.spec.ts b/src/app/core/navigation.guard.spec.ts
index fe70d890a98c7d55c002371db05e6bd17c1dddc3..e2ab1545fdbf0364d1c87791dd7b3524ddae5ea7 100644
--- a/src/app/core/navigation.guard.spec.ts
+++ b/src/app/core/navigation.guard.spec.ts
@@ -15,9 +15,7 @@ describe('[Guard] NavigationGuard', () => {
 
     beforeEach(() => {
         TestBed.configureTestingModule({
-            providers: [
-                provideMockStore({ initialState })
-            ]
+            providers: [ provideMockStore({ initialState }) ]
         });
         guard = TestBed.inject(NavigationGuard);
     });
@@ -26,9 +24,14 @@ describe('[Guard] NavigationGuard', () => {
         expect(guard).toBeTruthy();
     });
 
-    it('#isModuleAllowed() should return if module is allowed or not', () => {
-        guard.isModuleAllowed('search').subscribe(allowed => expect(allowed).toBeTruthy());
-        guard.isModuleAllowed('search-multiple').subscribe(allowed => expect(allowed).toBeTruthy());
-        guard.isModuleAllowed('documentation').subscribe(allowed => expect(allowed).toBeFalsy());
+    // it('#isModuleAllowed() should return if module is allowed or not', () => {
+    //     guard.isModuleAllowed('search').subscribe(allowed => expect(allowed).toBeTruthy());
+    //     guard.isModuleAllowed('search-multiple').subscribe(allowed => expect(allowed).toBeTruthy());
+    //     guard.isModuleAllowed('documentation').subscribe(allowed => expect(allowed).toBeFalsy());
+    // });
+
+    it('#url2module() should return correct module name', () => {
+        expect(guard.url2module('search')).toEqual('search');
+        expect(guard.url2module('search-multiple')).toEqual('search_multiple');
     });
 });
diff --git a/src/app/core/navigation.guard.ts b/src/app/core/navigation.guard.ts
index ef00ac1eb32c187cd9175ab0ffe4a3071b75172d..27a606437cf6f65798717d9654272a60fcf25b5d 100644
--- a/src/app/core/navigation.guard.ts
+++ b/src/app/core/navigation.guard.ts
@@ -38,7 +38,7 @@ export class NavigationGuard implements CanActivate {
     canActivate(
         next: ActivatedRouteSnapshot,
         state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
-        const module: string = next.routeConfig.path;
+        const module: string = this.url2module(next.routeConfig.path);
         return this.isModuleAllowed(module);
     }
 
@@ -53,13 +53,18 @@ export class NavigationGuard implements CanActivate {
         return this.store$.select(state => state.metamodel.instance.instance)
             .pipe(
                 filter( instance => instance !== null),
-                map(instance => {
-                    if (module === 'search-multiple') {
-                        return instance.config.search_multiple.allowed;
-                    } else {
-                        return instance.config[module];
-                    }
-                })
+                map(instance => instance.config[module].allowed)
             );
     }
+
+    /**
+     * Translates URL segment to a module name.
+     *
+     * @param  {string} url - The URL segment.
+     *
+     * @return string
+     */
+    url2module(url: string): string {
+        return url.replace(/-/, '_');
+    }
 }
diff --git a/src/app/metamodel/model/instance.model.ts b/src/app/metamodel/model/instance.model.ts
index 17f967b57ffcb81b8cb743c2e942ef625b3105d2..bdc1e3d6f75953a358433697470faa044960762d 100644
--- a/src/app/metamodel/model/instance.model.ts
+++ b/src/app/metamodel/model/instance.model.ts
@@ -19,11 +19,18 @@ export interface Instance {
     nb_dataset_families: number;
     nb_datasets: number;
     config: {
-        search: boolean;
+        authentication: {
+            allowed: boolean;
+        };
+        search: {
+            allowed: boolean;
+        };
         search_multiple: {
             allowed: boolean;
             all_datasets_selected: boolean;
         };
-        documentation: boolean;
+        documentation: {
+            allowed: boolean;
+        };
     };
 }
diff --git a/src/app/shared/validator/nan-validator.directive.spec.ts b/src/app/shared/validator/nan-validator.directive.spec.ts
index 60b884fc0dfa7045b2cc1801edc92826832ae952..53e36d820a65aacf6bb527c5eb7844026b5aa276 100644
--- a/src/app/shared/validator/nan-validator.directive.spec.ts
+++ b/src/app/shared/validator/nan-validator.directive.spec.ts
@@ -2,7 +2,7 @@ import { FormControl } from '@angular/forms';
 
 import { nanValidator } from './nan-validator.directive';
 
-describe('nanValidator', () => {
+describe('[Shared] nanValidator', () => {
     it('should return valid', () => {
         let field = new FormControl('');
         expect(nanValidator(field)).toBeNull();
diff --git a/src/app/shared/validator/range-validator.directive.spec.ts b/src/app/shared/validator/range-validator.directive.spec.ts
index 366075e1bd787ae888b53fa35fa875ce7f0f087e..d0cdd22ca20cd7eeda676841809c0b78fc3003f8 100644
--- a/src/app/shared/validator/range-validator.directive.spec.ts
+++ b/src/app/shared/validator/range-validator.directive.spec.ts
@@ -2,7 +2,7 @@ import { FormControl } from '@angular/forms';
 
 import { rangeValidator } from './range-validator.directive';
 
-describe('rangeValidator', () => {
+describe('[Shared] rangeValidator', () => {
     it('should return valid', () => {
         let field = new FormControl('', rangeValidator(0, 10));
         field.setValue(7);
diff --git a/src/settings/test-data/instance.ts b/src/settings/test-data/instance.ts
index afb9dd175e59465eaf112e57afa6b267d75202e8..05ee7ba7cb2eedc70bbb094ad895dffe245ecdb9 100644
--- a/src/settings/test-data/instance.ts
+++ b/src/settings/test-data/instance.ts
@@ -7,11 +7,18 @@ export const INSTANCE: Instance = {
     nb_dataset_families: 2,
     nb_datasets: 3,
     config: {
-        search: true,
+        authentication: {
+            allowed: true
+        },
+        search: {
+            allowed: true
+        },
         search_multiple: {
             allowed: true,
             all_datasets_selected: true,
         },
-        documentation: false
+        documentation: {
+            allowed: false
+        }
     }
 };
diff --git a/yarn.lock b/yarn.lock
index 7325fde6986a18468374484748cc5878cec6c3ba..d02bbfcf45979565e9199f6ad146b128804ed176 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3025,7 +3025,7 @@ colorette@^1.2.1:
   resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
   integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
 
-colors@1.4.0, colors@^1.4.0:
+colors@1.4.0, colors@^1.1.2, colors@^1.4.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
   integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
@@ -5991,6 +5991,13 @@ karma-source-map-support@1.4.0:
   dependencies:
     source-map-support "^0.5.5"
 
+karma-spec-reporter@^0.0.32:
+  version "0.0.32"
+  resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz#2e9c7207ea726771260259f82becb543209e440a"
+  integrity sha1-LpxyB+pyZ3EmAln4K+y1QyCeRAo=
+  dependencies:
+    colors "^1.1.2"
+
 karma@~5.0.0:
   version "5.0.9"
   resolved "https://registry.yarnpkg.com/karma/-/karma-5.0.9.tgz#11a119b0c763a806fdc471b40c594a2240b5ca13"