'../config/database-local.json', 'database' => '../config/database.json', 'dispatcher-extensions' => '../config/dispatcher-extensions.json', 'dispatcher-tree' => '../config/dispatcher-tree.json', 'menu' => '../config/menu.json', 'modules' => '../config/modules.json', 'repositories' =>'../config/repositories.json', 'upload-auth' =>'../config/upload-auth.json', 'views' =>'../config/views.json' ); /* [1] config/database-local.json =========================================================*/ public function testDatabaseLocal(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['database-local'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu */ $this->assertArrayHasKey('host',$json_content); $this->assertArrayHasKey('dbname',$json_content); $this->assertArrayHasKey('user',$json_content); $this->assertArrayHasKey('password',$json_content); } /* [2] config/database.json =========================================================*/ public function testDatabaseRemote(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['database'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu */ $this->assertArrayHasKey('host', $json_content); $this->assertArrayHasKey('dbname', $json_content); $this->assertArrayHasKey('user', $json_content); $this->assertArrayHasKey('password', $json_content); } /* [3] config/dispatcher-extensions.json =========================================================*/ public function testDispatcherExtensions(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['dispatcher-extensions'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu */ foreach($json_content as $ext=>$mime){ // On verifie les extensions $this->assertTrue( preg_match('/^\w+$/i', $ext) == true ); // On verifie les mime/type $this->assertTrue( preg_match('/^\w+\/[\+\w]+$/i', $mime) == true ); } } /* [3] config/dispatcher-tree.json =========================================================*/ public function testDispatcherTree(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['dispatcher-tree'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu */ foreach($json_content as $name=>$path){ // On verifie les extensions $this->assertTrue( preg_match('/^\w+$/i', $name) == true ); // On verifie les mime/type $this->assertTrue( preg_match('/^[\w\/]+$/i', $path) == true ); } } /* [3] config/menu.json =========================================================*/ public function testMenu(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['menu'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu de chaque catégorie */ foreach($json_content as $category){ $this->assertArrayHasKey( 'icon', $category ); $this->assertTrue( is_string($category['icon']) ); $this->assertArrayHasKey( 'text', $category ); $this->assertTrue( is_string($category['text']) ); $this->assertArrayHasKey( 'attributes', $category ); $this->assertTrue( is_array($category['attributes']) ); $this->assertArrayHasKey( 'children', $category ); $this->assertTrue( is_array($category['children']) ); /* (4) Contenu de chaque sous-catégorie */ foreach($category['children'] as $children){ $this->assertArrayHasKey( 'permissions', $children ); $this->assertTrue( is_array($children['permissions']) ); $this->assertArrayHasKey( 'text', $children ); $this->assertTrue( is_string($children['text']) ); $this->assertArrayHasKey( 'attributes', $children ); $this->assertTrue( is_array($children['attributes']) ); } } } /* [4] config/modules.json =========================================================*/ public function testModules(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['modules'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu de chaque module */ foreach($json_content as $moduleName=>$methods){ $this->assertTrue( is_string($moduleName) ); /* (4) Liste des méthodes du module */ foreach($methods as $methodName=>$method){ $this->assertTrue( is_string($methodName) ); $this->assertArrayHasKey( 'description', $method ); $this->assertTrue( is_string($method['description']) ); $this->assertArrayHasKey( 'permissions', $method ); $this->assertTrue( is_array($method['permissions']) ); $this->assertArrayHasKey( 'parameters', $method ); $this->assertTrue( is_array($method['parameters']) ); /* (5) Pour chaque paramètre */ foreach($method['parameters'] as $parameterName=>$parameter){ $this->assertTrue( is_string($parameterName) ); $this->assertArrayHasKey( 'description', $parameter ); $this->assertTrue( is_string($parameter['description']) ); $typeIsDefined = isset($parameter['type']); if( $typeIsDefined ) $this->assertTrue( is_string($parameter['type']) ); } } } } /* [5] config/repositories.json =========================================================*/ public function testRepositories(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['repositories'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu de chaque repository */ foreach($json_content as $repoName=>$methods){ $this->assertTrue( is_string($repoName) ); /* (4) Liste des méthodes du repository */ foreach($methods as $methodName) $this->assertTrue( is_string($methodName) ); } } /* [6] config/upload-auth.json =========================================================*/ public function testUploadAuth(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['upload-auth'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Racine des uploads */ $this->assertTrue( isset($json_content['root']) ); /* (4) Liste des répertoires autorisés */ foreach($json_content['directories'] as $dir) $this->assertTrue( preg_match('/^[a-z0-9_-]+$/', $dir) == true ); } /* [7] config/views.json =========================================================*/ public function testViews(){ /* (1) Lecture du fichier */ $file_content = file_get_contents( self::$config['views'] ); $this->assertNotFalse( $file_content ); /* (2) Parsage en JSON */ $json_content = json_decode( $file_content, true ); $this->assertNotNull( $json_content ); /* (3) Contenu de chaque repository */ foreach($json_content as $viewName) $this->assertTrue( is_string($viewName) ); } } ?>