From 8b39730e8904fe0639b1155e526c1f3c149ca2f6 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 18 Apr 2016 10:30:40 +0200 Subject: [PATCH] Tests et opti de ModuleRequest --- config/dispatcher-tree.json | 9 +- config/modules.json | 22 ++++ js/action-script.js | 34 +++--- js/includes/test.js | 1 + js/lib/reset.js | 14 ++- manager/ManagerError.php | 6 +- manager/ModuleRequest.php | 35 +++--- manager/module/module.php | 25 +++++ phpunit/bootstrap.php | 6 +- phpunit/coverage/Database.php.html | 28 ++--- phpunit/coverage/ManagerError.php.html | 6 +- phpunit/coverage/ResourceDispatcher.php.html | 94 ++++++++-------- phpunit/coverage/autoloader.php.html | 14 +-- phpunit/coverage/index.html | 110 ++++++++++++++++--- phpunit/coverage/sessionManager.php.html | 2 +- phpunit/phpunit.xml | 12 +- phpunit/tests/ModuleRequest.php | 98 +++++++++++++++++ phpunit/tests/sessionManager.php | 4 +- 18 files changed, 384 insertions(+), 136 deletions(-) create mode 100644 js/includes/test.js create mode 100644 manager/module/module.php create mode 100644 phpunit/tests/ModuleRequest.php diff --git a/config/dispatcher-tree.json b/config/dispatcher-tree.json index a99e550..6e7558d 100755 --- a/config/dispatcher-tree.json +++ b/config/dispatcher-tree.json @@ -9,9 +9,6 @@ "css" : "/css", "js" : "/js", - "highcharts": "/js/lib/highcharts", - "sigma": "/js/lib/sigma", - - "cssview" : "/view/css", - "jsview" : "/view/js" -} \ No newline at end of file + "highcharts": "/js/lib/highcharts", + "sigma": "/js/lib/sigma" +} diff --git a/config/modules.json b/config/modules.json index 6c390b0..c341857 100755 --- a/config/modules.json +++ b/config/modules.json @@ -1,4 +1,26 @@ { + "module": { + "method": { + "description": "Test de l'API", + "permissions": [], + "parameters": {} + }, + + "phpunitParams": { + "description": "Méthode utile à phpunit pour le test des paramètres.", + "permissions": [], + "parameters": { + "p1": { "description": "Texte", "type": "text" }, + "p2": { "description": "Entier positif", "type": "id" } + } + }, + + "phpunitPermissions": { + "description": "Méthode utile à phpunit pour le test des permissions.", + "permissions": ["a", "b"], + "parameters": {} + } + }, "user": { "login": { diff --git a/js/action-script.js b/js/action-script.js index 9f038b3..c12ba0f 100755 --- a/js/action-script.js +++ b/js/action-script.js @@ -28,7 +28,7 @@ function navSubMenu(subsection){ var target = null; // si @subsection est un element, on le prends - target = (subsection instanceof Element) ? subsection : null; + target = (subsection instanceof Element) ? subsection : null; // Si string, on trouve l'element correspondant target = (typeof subsection == 'string') ? document.querySelector('#MENU-SIDE > span[data-link='+pageManager.page+'] + div.sub > span[data-sublink="'+subsection+'"]') : target; @@ -44,7 +44,7 @@ function navSubMenu(subsection){ // On desactive l'element courant if( current != null ) current.remClass('active'); - + // On cache les sections visibles var visibleSections = document.querySelectorAll('#CONTAINER > section[data-sublink].active'); for( var i = 0 ; i < visibleSections.length ; i++ ) @@ -84,7 +84,7 @@ function navSubMenu(subsection){ /* [4 Toggle du side-menu <-> navigation ===========================================*/ function navMenu(section){ - + /* [1] Format du param ------------------------------------------------*/ // Contient l'element courant @@ -94,7 +94,7 @@ function navMenu(section){ var target = null; // si @section est un element, on le prends - target = (section instanceof Element) ? section : null; + target = (section instanceof Element) ? section : null; // Si string, on trouve l'element correspondant target = (typeof section == 'string') ? document.querySelector('#WRAPPER > #MENU-SIDE > span[data-link="'+section+'"]') : target; @@ -190,22 +190,22 @@ DOM.MENUSIDE.addEventListener('click', function(e){ /* [6] Gestion du rechargement de page -=========================================================*/ +=========================================================*/ function reload(){ navMenu( pageManager.page ); } -/* [7] Gestion du toggle de la page de login -=========================================================*/ -var LOGIN = { - show: document.getElementById('user-data'), - hide: document.getElementById('login-close'), - page: document.getElementById('LOGIN') -}; +/* [7] Gestion du toggle de la page de login +=========================================================*/ +var LOGIN = { + show: document.getElementById('user-data'), + hide: document.getElementById('login-close'), + page: document.getElementById('LOGIN') +}; -/* (1) Gestion de l'affichage de la page de login */ -LOGIN.show.addEventListener('click', function(e){ LOGIN.page.className = 'active'; }, false); +/* (1) Gestion de l'affichage de la page de login */ +LOGIN.show.addEventListener('click', function(e){ LOGIN.page.className = 'active'; }, false); -/* (2) Gestion de la fermeture de la page de login */ -LOGIN.hide.addEventListener('click', function(e){ LOGIN.page.className = ''; }, false); +/* (2) Gestion de la fermeture de la page de login */ +LOGIN.hide.addEventListener('click', function(e){ LOGIN.page.className = ''; }, false); @@ -229,4 +229,4 @@ pageManagerClass.prototype.ajax('/f/json/menu/conf', function(pagelistSerialized /* (2) On charge la premiere page */ navMenu(pageManager.page); -}, 'GET'); \ No newline at end of file +}, 'GET'); diff --git a/js/includes/test.js b/js/includes/test.js new file mode 100644 index 0000000..84d02ea --- /dev/null +++ b/js/includes/test.js @@ -0,0 +1 @@ +var a = 'Hello World!'; diff --git a/js/lib/reset.js b/js/lib/reset.js index b3c32a4..25be8eb 100755 --- a/js/lib/reset.js +++ b/js/lib/reset.js @@ -105,9 +105,21 @@ Element.prototype.anim = function(className, timeout){ } +// INCLUSION D'UN SCRIPT JAVASCRIPT +function include(jsResource, callback){ + var tag = document.createElement('script'); + tag.type = 'text/javascript'; + tag.src = jsResource; + + document.head.appendChild( tag ); + + tag.onload = callback; +} + + /* DEFINITION DES FORMATS UTILES POUR INPUT-CHECKER * */ -var format_code = new formatChecker(null, 'HH-HH-HH-HH', { 'H' : '[0-9A-F]'} ) \ No newline at end of file +var format_code = new formatChecker(null, 'HH-HH-HH-HH', { 'H' : '[0-9A-F]'} ) diff --git a/manager/ManagerError.php b/manager/ManagerError.php index d724603..509fa59 100755 --- a/manager/ManagerError.php +++ b/manager/ManagerError.php @@ -1,6 +1,6 @@ \ No newline at end of file +?> diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index d7e38fd..9a93ed4 100755 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -1,4 +1,4 @@ -modules = json_decode( ResourceDispatcher::getResource(self::$config_path), true ); - + // Gestion de l'erreur de parsage if( $this->modules == null ){ $this->error = ManagerError::ParsingFailed; @@ -63,7 +62,7 @@ } // Type de @data (optionnel) - $params = (is_array($params)) ? $params : array(); + $params = (is_array($params)) ? $params : array(); /* [2] Verification du chemin (existence module+methode) @@ -72,14 +71,11 @@ return false; + /* [3] Verification des droits =========================================================*/ - if( !$this->checkPermission($token) ){ // Si on a pas les droits - - // Si on a un token -> erreur de token, sinon erreur de permission - $this->error = ($token===null) ? ManagerError::PermissionError : ManagerError::TokenError; + if( !$this->checkPermission($token) ) // Si on a pas les droits return false; - } /* [4] Verification des parametres (si @type est defini) @@ -159,7 +155,7 @@ // On definit $params au cas ou il soit vide $params = $json; // On retire le @path de @params - unset($params['path']); + unset($params['path']); return new ModuleRequest($json['path'], $params); } @@ -192,7 +188,7 @@ =========================================================*/ // Si variable n'existe pas, on cree un tableau vide $params = $post; - + // On retire le @path de @params unset($params['path']); @@ -226,6 +222,7 @@ $module = $matches[1]; $method = $matches[2]; + /* [2] Verification de l'existence du module (conf) =========================================================*/ if( !array_key_exists($module, $this->modules) ){ // Si le module n'est pas specifie dans la conf @@ -239,7 +236,7 @@ $this->error = ManagerError::UnknownMethod; return false; // On retourne FALSE, si erreur } - + /* [4] Enregistrement du chemin et renvoi de SUCCESS @@ -283,9 +280,12 @@ $checkToken = new Repo('token/check', array($token) ); $token_permissions = $checkToken->answer(); - // Si le token est invalide, on retourne FAUX - if( $token_permissions === false ) return false; - + // Si le token est invalide, on retourne une erreur -> FAUX + if( $token_permissions === false ){ + $this->error = ManagerError::TokenError; + return false; + } + $local_permissions = $token_permissions; @@ -310,6 +310,7 @@ /* [5] On retourne FAUX si aucun droit n'a ete trouve =========================================================*/ + $this->error = ManagerError::PermissionError; return false; } @@ -344,7 +345,7 @@ // Si le type n'est pas defini, on reboucle if( !isset($paramsdata['type']) ) continue; - + // Si la verification est fausse, on retourne faux if( !Database::check($paramsdata['type'], $params[$name]) ) return false; } @@ -370,4 +371,4 @@ } -?> \ No newline at end of file +?> diff --git a/manager/module/module.php b/manager/module/module.php new file mode 100644 index 0000000..3c2e195 --- /dev/null +++ b/manager/module/module.php @@ -0,0 +1,25 @@ + ManagerError::Success, + 'ReceivedArguments' => $arguments + ); + + } + + + + + } + + +?> diff --git a/phpunit/bootstrap.php b/phpunit/bootstrap.php index bdac929..5eb0795 100755 --- a/phpunit/bootstrap.php +++ b/phpunit/bootstrap.php @@ -5,8 +5,12 @@ $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0'; + + $_SESSION = array(); + $_SESSION['permission'] = array('phpunit'); + require_once __ROOT__.'/manager/autoloader.php'; -?> \ No newline at end of file +?> diff --git a/phpunit/coverage/Database.php.html b/phpunit/coverage/Database.php.html index 63205f8..491f6fb 100755 --- a/phpunit/coverage/Database.php.html +++ b/phpunit/coverage/Database.php.html @@ -297,7 +297,7 @@
45
46
        /* retourne une instance de la classe */
47
        public static function getInstance(){ -
48
            if( self::$instance == null || self::$error != ManagerError::Success ){ // Si aucune instance existante OU erreur de connection +
48
            if( self::$instance == null || self::$error != ManagerError::Success ){ // Si aucune instance existante OU erreur de connection
49
50
                // chargement de la configuration du server SQL
51
                if( !isset($_SERVER['HTTP_HOST']) || isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] == 'socioview' ) @@ -310,14 +310,14 @@
58
59
            }
60
             -
61
            return self::$instance; +
61
            return self::$instance;
62
        }
63
64
        /* retourne la connection statique */
65
        public static function getPDO(){ -
66
            $instance = self::getInstance(); +
66
            $instance = self::getInstance();
67
-
68
            return self::$pdo; +
68
            return self::$pdo;
69
        }
70
71
@@ -435,17 +435,17 @@
183
        *
184
        */
185
        public static function check($type, $value){ -
186
            $checker = true; +
186
            $checker = true;
187
188
            /* [0] On verifie que $value n'est pas nul
189
            =========================================================*/ -
190
            if( is_null($value) ) return false; +
190
            if( is_null($value) ) return false;
191
192
193
194
            /* [1] Si de type VARCHAR(min, max)
195
            =========================================================*/ -
196
            if( preg_match('/^varchar\((\d+), ?(\d+)\)$/', $type, $match) ){ +
196
            if( preg_match('/^varchar\((\d+), ?(\d+)\)$/', $type, $match) ){
197
                // On recupere la taille min
198
                $min = (int) $match[1];
199
                // On recupere la taille max @@ -458,7 +458,7 @@
206
207
            /* [2] Si de type ARRAY(type_elements)
208
            =========================================================*/ -
209
            if( preg_match('/^array<(.+)>$/', $type, $match) ){ +
209
            if( preg_match('/^array<(.+)>$/', $type, $match) ){
210
                // Si c'est pas un tableau on retourne une erreur
211
                if( !is_array($value) )
212
                    return false; @@ -480,22 +480,22 @@
228
            =========================================================*/            
229
            switch($type){
230
                // Entier positif (id dans BDD) -
231
                case 'id': +
231
                case 'id':
232
                    return $checker && is_numeric($value) && $value <= 2147483647 && $value >= 0;
233
                    break;
234
235
                // String quelconque (peut etre vide) -
236
                case 'text': +
236
                case 'text':
237
                    return $checker && is_string($value);
238
239
                // Adresse mail (255 caracteres max) -
240
                case 'mail': +
240
                case 'mail':
241
                    return $checker && is_string($value) && strlen($value) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $value);
242
                    break;
243
                
244
                // Hash sha1 -
245
                case 'sha1': -
246
                    return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value); +
245
                case 'sha1': +
246
                    return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value);
247
                    break;
248
                
249
                default: @@ -559,7 +559,7 @@ Dead Code

- Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 6:41:06 UTC 2016. + Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 8:26:51 UTC 2016.

diff --git a/phpunit/coverage/ManagerError.php.html b/phpunit/coverage/ManagerError.php.html index 51d9c4c..3951256 100755 --- a/phpunit/coverage/ManagerError.php.html +++ b/phpunit/coverage/ManagerError.php.html @@ -126,7 +126,7 @@
1
<?php
2
-
3
     +
3
4
    namespace manager;
5
6
@@ -205,7 +205,7 @@
79
                case self::Success:             return "Tout s'est bien deroule";                                             break;
80
81
                case self::ParsingFailed:       return "La lecture du fichier JSON ou XML a echoue";                          break; -
82
                 +
82
83
                case self::InvalidFlags:        return "Les specifications (drapeaux) sont incorrects";                       break;
84
                case self::UnreachableResource: return "La ressource n'existe pas (404)";                                     break;
85
                case self::MissingPath:         return "Le chemin de delegation n'a pas ete renseigne";                       break; @@ -247,7 +247,7 @@ Dead Code

- Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 6:41:06 UTC 2016. + Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 8:26:51 UTC 2016.

diff --git a/phpunit/coverage/ResourceDispatcher.php.html b/phpunit/coverage/ResourceDispatcher.php.html index 0fd0aff..03af216 100755 --- a/phpunit/coverage/ResourceDispatcher.php.html +++ b/phpunit/coverage/ResourceDispatcher.php.html @@ -262,49 +262,49 @@
31
        *
32
        */
33
        public function __construct($url, $view=false){ -
34
            $this->error = ManagerError::Success; +
34
            $this->error = ManagerError::Success;
35
36
37
            /* [0] On met a jour la configuration
38
            =====================================================*/
39
            // Extensions supportees -
40
            $extensions_conf = json_decode( file_get_contents(__ROOT__.self::$extension_config_path), true ); +
40
            $extensions_conf = json_decode( file_get_contents(__ROOT__.self::$extension_config_path), true );
41
42
            // Gestion de l'erreur de parsage -
43
            if( $extensions_conf == null ){ +
43
            if( $extensions_conf == null ){
44
                $this->error = ManagerError::ParsingFailed;
45
                return false;
46
            }
47
-
48
            self::$supported_extensions = $extensions_conf; +
48
            self::$supported_extensions = $extensions_conf;
49
50
            // Dossiers supportes -
51
            $parents_conf = json_decode( file_get_contents(__ROOT__.self::$parents_config_path), true ); +
51
            $parents_conf = json_decode( file_get_contents(__ROOT__.self::$parents_config_path), true );
52
            
53
            // Gestion de l'erreur de parsage -
54
            if( $parents_conf == null ){ +
54
            if( $parents_conf == null ){
55
                $this->error = ManagerError::ParsingFailed;
56
                return false;
57
            }
58
-
59
            self::$supported_parents = $parents_conf; +
59
            self::$supported_parents = $parents_conf;
60
61
62
63
            /* [1] On recupere les donnees de l'URL
64
            ==================================================*/ -
65
            $serialFlags = array_slice( explode('/',$url), 1 ); +
65
            $serialFlags = array_slice( explode('/',$url), 1 );
66
67
            /* [2] On check/cree les drapeaux avec ces donnees
68
            ==================================================*/ -
69
            if( !$this->createFlags($serialFlags) ){ // Creation des drapeaux +
69
            if( !$this->createFlags($serialFlags) ){ // Creation des drapeaux
70
                $this->error = ManagerError::InvalidFlags;
71
                return false;
72
            }
73
74
            /* [3] On construit le chemin a partir des tags
75
            ==================================================*/ -
76
            if( !$this->buildPath() ){ // Construction du chemin +
76
            if( !$this->buildPath() ){ // Construction du chemin
77
                $this->error = ManagerError::UnreachableResource;
78
                return false;
79
            } @@ -312,10 +312,10 @@
81
            /* [4] On gere l'affichage pour l'appel externe/interne
82
            ==================================================*/
83
            if( $view ) // Appel externe -
84
                $this->view(); +
84
                $this->view();
85
86
             -
87
            return true; +
87
            return true;
88
89
        }
90
@@ -328,8 +328,8 @@
97
        *
98
        */
99
        public static function getResource($route){ -
100
            $instance = new ResourceDispatcher($route); -
101
            return $instance->getContent(); +
100
            $instance = new ResourceDispatcher($route); +
101
            return $instance->getContent();
102
        }
103
104
@@ -345,51 +345,51 @@
114
            /* [1] Verification des flags (version serialisee)
115
            ======================================================*/
116
-
117
            $correct = true; +
117
            $correct = true;
118
119
            // Verification du nombre de drapeaux () au moins 3 -
120
            $correct = $correct && count($serialFlags) >= 3; +
120
            $correct = $correct && count($serialFlags) >= 3;
121
122
            // Verification que l'extension est correcte -
123
            $correct = $correct && array_key_exists($serialFlags[0], self::$supported_extensions); +
123
            $correct = $correct && array_key_exists($serialFlags[0], self::$supported_extensions);
124
125
            // Verification du filename -
126
            $correct = $correct && preg_match('/^[\w_\.-]+$/i', $serialFlags[1]); +
126
            $correct = $correct && preg_match('/^[\w_\.-]+$/i', $serialFlags[1]);
127
128
            // Verification du parent -
129
            $correct = $correct && array_key_exists($serialFlags[2], self::$supported_parents); +
129
            $correct = $correct && array_key_exists($serialFlags[2], self::$supported_parents);
130
131
            // Verification du sous-parent (optionnel) -
132
            $opt_subParent = count($serialFlags) >= 4; +
132
            $opt_subParent = count($serialFlags) >= 4;
133
134
            if( $opt_subParent ) -
135
                $correct = $correct && preg_match('/^[\w_-]+$/i', $serialFlags[3]); +
135
                $correct = $correct && preg_match('/^[\w_-]+$/i', $serialFlags[3]);
136
137
            // Verification de la couleur (optionnel) -
138
            $opt_color = count($serialFlags) >= 5 && preg_match('/^[\da-f]{6,8}+$/i', $serialFlags[4]); +
138
            $opt_color = count($serialFlags) >= 5 && preg_match('/^[\da-f]{6,8}+$/i', $serialFlags[4]);
139
-
140
            if( !$correct ) -
141
                return false; +
140
            if( !$correct ) +
141
                return false;
142
143
                
144
            /* [2] Creation (non serialisee) des flags
145
            ======================================================*/
146
            // Si tout se deroule bien, on cree les flags -
147
            $this->flags = array( -
148
                'extension' => $serialFlags[0], -
149
                'filename'  => $serialFlags[1], -
150
                'parent'    => $serialFlags[2] -
151
            ); +
147
            $this->flags = array( +
148
                'extension' => $serialFlags[0], +
149
                'filename'  => $serialFlags[1], +
150
                'parent'    => $serialFlags[2] +
151
            );
152
153
            // Ajout du sous-parent optionnel
154
            if( $opt_subParent ) -
155
                $this->flags['subparent'] = $serialFlags[3]; +
155
                $this->flags['subparent'] = $serialFlags[3];
156
157
            // Ajout du color optionnel
158
            if( $opt_color ) -
159
                $this->flags['color'] = '#'.$serialFlags[4]; +
159
                $this->flags['color'] = '#'.$serialFlags[4];
160
-
161
            return true; +
161
            return true;
162
163
164
        } @@ -408,10 +408,10 @@
177
            /* [1] On recupere le HEADER associe a l'extension
178
            ==========================================================*/
179
            // Si aucun header pour cet cle, on retourne une erreur -
180
            if( !isset(self::$supported_extensions[$this->flags['extension']]) ) return false; +
180
            if( !isset(self::$supported_extensions[$this->flags['extension']]) ) return false;
181
182
            // On recupere le header associe -
183
            $header = self::$supported_extensions[$this->flags['extension']]; +
183
            $header = self::$supported_extensions[$this->flags['extension']];
184
185
186
@@ -420,23 +420,23 @@
189
            /* [2] On recupere le chemin associe au parent
190
            ==========================================================*/
191
            // Si aucun dossier pour cet indice, on retourne une erreur -
192
            if( !isset(self::$supported_parents[$this->flags['parent']]) ) return false; +
192
            if( !isset(self::$supported_parents[$this->flags['parent']]) ) return false;
193
194
            // On recupere le dossier associe -
195
            $parent = self::$supported_parents[$this->flags['parent']]; +
195
            $parent = self::$supported_parents[$this->flags['parent']];
196
197
198
            /* [3] Gestion du sous-parent optionnel
199
            ==========================================================*/ -
200
            $opt_subParent = (isset($this->flags['subparent'])) ? $this->flags['subparent'].'/' : ''; +
200
            $opt_subParent = (isset($this->flags['subparent'])) ? $this->flags['subparent'].'/' : '';
201
202
203
            /* [4] Gestion du color optionnel
204
            =========================================================*/ -
205
            $this->stylesheet = ""; +
205
            $this->stylesheet = "";
206
207
            // si le color est defini -
208
            if( isset($this->flags['color']) ){ +
208
            if( isset($this->flags['color']) ){
209
                $this->stylesheet = "\n<style type='text/css'>\n";
210
                    $this->stylesheet .= "\t#stylisable{\n";
211
                        $this->stylesheet .= "\t\tfill: ".$this->flags['color']." !important;\n"; @@ -449,15 +449,15 @@
218
219
            /* [5] On definit le header
220
            ==========================================================*/ -
221
            $this->header = $header; +
221
            $this->header = $header;
222
223
            /* [6] On construit le chemin 
224
            ==========================================================*/ -
225
            $this->path = __ROOT__.$parent.'/'.$opt_subParent.$this->flags['filename'].'.'.$this->flags['extension']; +
225
            $this->path = __ROOT__.$parent.'/'.$opt_subParent.$this->flags['filename'].'.'.$this->flags['extension'];
226
227
            /* [7] On retourne si le fichier existe ou non
228
            ==========================================================*/ -
229
            return @file_get_contents( $this->path ) != false; +
229
            return @file_get_contents( $this->path ) != false;
230
231
        }
232
@@ -489,15 +489,15 @@
258
        */
259
        public function getContent(){
260
            // S'il y a eu une erreur en amont -
261
            if( $this->error != ManagerError::Success ) -
262
                return false; // on retourne faux +
261
            if( $this->error != ManagerError::Success ) +
262
                return false; // on retourne faux
263
264
265
            // On inclut le contenu -
266
            $content = file_get_contents($this->path); +
266
            $content = file_get_contents($this->path);
267
268
            // On retourne tout -
269
            return str_replace( '</svg>', $this->stylesheet.'</svg>', $content ); +
269
            return str_replace( '</svg>', $this->stylesheet.'</svg>', $content );
270
        }
271
272
@@ -517,7 +517,7 @@ Dead Code

- Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 6:41:06 UTC 2016. + Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 8:26:51 UTC 2016.

diff --git a/phpunit/coverage/autoloader.php.html b/phpunit/coverage/autoloader.php.html index edb67cf..074336c 100755 --- a/phpunit/coverage/autoloader.php.html +++ b/phpunit/coverage/autoloader.php.html @@ -167,19 +167,19 @@
27
    *
28
    */
29
    function autoloader($className){ -
30
        $path = ''; +
30
        $path = '';
31
32
        /* [1] On utilise le namespace pour localiser
33
        ===============================================*/
34
        // On remplace les '\' par des '/' -
35
        $path = str_replace('\\', '/', $className) . '.php'; -
36
        $path = __ROOT__.'/'.$path; +
35
        $path = str_replace('\\', '/', $className) . '.php'; +
36
        $path = __ROOT__.'/'.$path;
37
38
        // Si le fichier existe -
39
        if( file_exists($path) ) -
40
            require_once $path; // on inclue le fichier +
39
        if( file_exists($path) ) +
40
            require_once $path; // on inclue le fichier
41
-
42
    } +
42
    }
43
    
44
    // On definit l'autoloader comme autoloader (obvious)
45
    spl_autoload_register('autoloader', false, true); @@ -214,7 +214,7 @@ Dead Code

- Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 6:41:06 UTC 2016. + Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 8:26:51 UTC 2016.

diff --git a/phpunit/coverage/index.html b/phpunit/coverage/index.html index 0c88c4e..ebe8e60 100755 --- a/phpunit/coverage/index.html +++ b/phpunit/coverage/index.html @@ -43,29 +43,57 @@ Total
-
- 72.54% covered (warning) +
+ 63.81% covered (warning)
-
72.54%
-
140 / 193
+
63.81%
+
231 / 362
-
- 50.00% covered (danger) +
+ 36.11% covered (danger)
-
50.00%
-
9 / 18
+
36.11%
+
13 / 36
-
- 25.00% covered (danger) +
+ 14.29% covered (danger)
-
25.00%
-
1 / 4
+
14.29%
+
1 / 7
+ + + + repo +
+
+ 13.95% covered (danger) +
+
+ +
13.95%
+
6 / 43
+
+
+ 0.00% covered (danger) +
+
+ +
0.00%
+
0 / 5
+
+
+ 0.00% covered (danger) +
+
+ +
0.00%
+
0 / 1
@@ -124,6 +152,62 @@
1 / 1
+ + ModuleRequest.php +
+
+ 68.60% covered (warning) +
+
+ +
68.60%
+
59 / 86
+
+
+ 25.00% covered (danger) +
+
+ +
25.00%
+
2 / 8
+
+
+ 0.00% covered (danger) +
+
+ +
0.00%
+
0 / 1
+ + + + Repo.php +
+
+ 65.00% covered (warning) +
+
+ +
65.00%
+
26 / 40
+
+
+ 40.00% covered (danger) +
+
+ +
40.00%
+
2 / 5
+
+
+ 0.00% covered (danger) +
+
+ +
0.00%
+
0 / 1
+ + ResourceDispatcher.php
@@ -210,7 +294,7 @@ High: 90% to 100%

- Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 6:41:06 UTC 2016. + Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 8:26:51 UTC 2016.

diff --git a/phpunit/coverage/sessionManager.php.html b/phpunit/coverage/sessionManager.php.html index 718c853..bceb5a7 100755 --- a/phpunit/coverage/sessionManager.php.html +++ b/phpunit/coverage/sessionManager.php.html @@ -315,7 +315,7 @@ Dead Code

- Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 6:41:06 UTC 2016. + Generated by PHP_CodeCoverage 2.1.7 using PHP 5.6.11-1ubuntu3.1 and PHPUnit 4.7.6 at Mon Apr 18 8:26:51 UTC 2016.

diff --git a/phpunit/phpunit.xml b/phpunit/phpunit.xml index 2b70fd8..676aac4 100755 --- a/phpunit/phpunit.xml +++ b/phpunit/phpunit.xml @@ -1,19 +1,23 @@ - + ./tests/ - + ./tests/ManagerError.php - + ./tests/config.php - + + + ./tests/ModuleRequest.php + + diff --git a/phpunit/tests/ModuleRequest.php b/phpunit/tests/ModuleRequest.php new file mode 100644 index 0000000..24022bb --- /dev/null +++ b/phpunit/tests/ModuleRequest.php @@ -0,0 +1,98 @@ +assertEquals( $req->error, \manager\ManagerError::Success ); + } + public function testConstructNoPath(){ + $req = new \manager\ModuleRequest(); + $this->assertEquals( $req->error, \manager\ManagerError::MissingPath ); + } + public function testConstructIncorrectPathType(){ + $reqArray = new \manager\ModuleRequest( array(1) ); + $this->assertEquals( $reqArray->error, \manager\ManagerError::WrongPathModule ); + + + $reqNumber = new \manager\ModuleRequest( 10 ); + $this->assertEquals( $reqNumber->error, \manager\ManagerError::WrongPathModule ); + } + public function testConstructIncorrectPathSyntax(){ + $req = new \manager\ModuleRequest('wrong.syntax'); + $this->assertEquals( $req->error, \manager\ManagerError::WrongPathModule ); + } + public function testConstructIncorrectPathModule(){ + $req = new \manager\ModuleRequest( 'unknownModule/method' ); + $this->assertEquals( $req->error, \manager\ManagerError::UnknownModule ); + } + public function testConstructIncorrectPathMethod(){ + $req = new \manager\ModuleRequest( 'module/unknownMethod' ); + $this->assertEquals( $req->error, \manager\ManagerError::UnknownMethod ); + } + + + /* (2) Tests des permissions */ + // {1} Gestion des permissions quand l'utilisateur est connecté // + public function testConstructNoPermissionsRequired(){ + $_SESSION['permission'] = array(); + + $req = new \manager\ModuleRequest( 'module/method' ); + $this->assertEquals( $req->error, \manager\ManagerError::Success ); + } + public function testConstructPermissionsMissing(){ + $_SESSION['permission'] = array(); + + $req = new \manager\ModuleRequest( 'module/phpunitPermissions' ); + $this->assertEquals( $req->error, \manager\ManagerError::PermissionError ); + } + public function testConstructPermissionsMatch(){ + $_SESSION['permission'] = array('a'); + + $req = new \manager\ModuleRequest( 'module/phpunitPermissions' ); + $this->assertEquals( $req->error, \manager\ManagerError::Success ); + } + public function testConstructPermissionsMatchOther(){ + $_SESSION['permission'] = array('b'); + + $req = new \manager\ModuleRequest( 'module/phpunitPermissions' ); + $this->assertEquals( $req->error, \manager\ManagerError::Success ); + } + public function testConstructPermissionsMatchAll(){ + $_SESSION['permission'] = array('a', 'b'); + + $req = new \manager\ModuleRequest( 'module/phpunitPermissions' ); + $this->assertEquals( $req->error, \manager\ManagerError::Success ); + } + public function testConstructPermissionsDontMatch(){ + $_SESSION['permission'] = array('c'); + + $req = new \manager\ModuleRequest( 'module/phpunitPermissions' ); + $this->assertEquals( $req->error, \manager\ManagerError::PermissionError ); + } + + // {2} Gestion des permissions quand un token est joint // + public function testConstructNoTokenAndNoConnection(){ + // $_SESSION['permission'] = array(); + $postdata = array( 'path' => 'module/method' ); + + $req = \manager\ModuleRequest::fromPost( $postdata ); + $this->assertEquals( $req->error, \manager\ManagerError::TokenError ); + } + public function testConstructInvalidToken(){ + $_SERVER['PHP_AUTH_DIGEST'] = str_repeat('f', 40); + $_SESSION['permission'] = array(); + $postdata = array( 'path' => 'module/method' ); + + $req = \manager\ModuleRequest::fromPost( $postdata ); + $this->assertEquals( $req->error, \manager\ManagerError::TokenError ); + } + } + + +?> diff --git a/phpunit/tests/sessionManager.php b/phpunit/tests/sessionManager.php index fbfc251..8430ea5 100755 --- a/phpunit/tests/sessionManager.php +++ b/phpunit/tests/sessionManager.php @@ -243,9 +243,9 @@ $this->assertEquals( $first_token_prefix, $second_token_prefix ); } - + } -?> \ No newline at end of file +?>