Overview

Packages

  • alpha::controller
  • alpha::controller::front
  • alpha::exceptions
  • alpha::model
  • alpha::model::types
  • alpha::tasks
  • alpha::tests
  • alpha::util
  • alpha::util::cache
  • alpha::util::codehighlight
  • alpha::util::convertors
  • alpha::util::feeds
  • alpha::util::filters
  • alpha::util::graphs
  • alpha::util::helpers
  • alpha::util::metrics
  • alpha::view
  • alpha::view::renderers
  • alpha::view::widgets

Classes

  • AlphaAgentUtils_Test
  • AlphaConfig_Test
  • AlphaController_Test
  • AlphaDAO_Test
  • AlphaFeed_Test
  • AlphaFilters_Test
  • AlphaValidator_Test
  • AlphaView_Test
  • Boolean_Test
  • Date_Test
  • DEnum_Test
  • Double_Test
  • Enum_Test
  • Exceptions_Test
  • FrontController_Test
  • Image_Test
  • Integer_Test
  • Relation_Test
  • Sequence_Test
  • String_Test
  • Tag_Test
  • Text_Test
  • Timestamp_Test
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  1: <?php
  2: 
  3: /**
  4:  *
  5:  * Test cases for the AlphaController class.
  6:  * 
  7:  * @package alpha::tests
  8:  * @since 1.0
  9:  * @author John Collins <dev@alphaframework.org>
 10:  * @version $Id: FrontController_Test.php 1548 2012-07-29 17:07:07Z alphadevx $
 11:  * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
 12:  * @copyright Copyright (c) 2012, John Collins (founder of Alpha Framework).  
 13:  * All rights reserved.
 14:  * 
 15:  * <pre>
 16:  * Redistribution and use in source and binary forms, with or 
 17:  * without modification, are permitted provided that the 
 18:  * following conditions are met:
 19:  * 
 20:  * * Redistributions of source code must retain the above 
 21:  *   copyright notice, this list of conditions and the 
 22:  *   following disclaimer.
 23:  * * Redistributions in binary form must reproduce the above 
 24:  *   copyright notice, this list of conditions and the 
 25:  *   following disclaimer in the documentation and/or other 
 26:  *   materials provided with the distribution.
 27:  * * Neither the name of the Alpha Framework nor the names 
 28:  *   of its contributors may be used to endorse or promote 
 29:  *   products derived from this software without specific 
 30:  *   prior written permission.
 31:  *   
 32:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
 33:  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
 34:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 35:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 36:  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
 37:  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 38:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
 39:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
 40:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 41:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 42:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
 43:  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 44:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 45:  * </pre>
 46:  *  
 47:  */
 48: class FrontController_Test extends PHPUnit_Framework_TestCase {
 49:     /**
 50:      * A controller token to test with
 51:      * 
 52:      * @var string
 53:      * @since 1.0
 54:      */
 55:     private $token;
 56:         
 57:     /**
 58:      * (non-PHPdoc)
 59:      * @see alpha/lib/PEAR/PHPUnit-3.2.9/PHPUnit/Framework/PHPUnit_Framework_TestCase::setUp()
 60:      * 
 61:      * @since 1.0
 62:      */
 63:     protected function setUp() {
 64:         if(!isset($this->token))
 65:             $this->token = $_GET['tk'];
 66:         $_GET['tk'] = null;
 67:         $_GET['act'] = null;
 68:     }
 69:     
 70:     /**
 71:      * (non-PHPdoc)
 72:      * @see alpha/lib/PEAR/PHPUnit-3.2.9/PHPUnit/Framework/PHPUnit_Framework_TestCase::tearDown()
 73:      * 
 74:      * @since 1.0
 75:      */
 76:     protected function tearDown() {
 77:         $_GET['tk'] = $this->token;
 78:     }
 79:     
 80:     /**
 81:      * Testing that the constructor will detect the page controller action we want to invoke from the global _GET array
 82:      * 
 83:      * @since 1.0
 84:      */
 85:     public function testConstructActParam() {
 86:         $_GET['act'] = 'ViewArticle';
 87:         $front = new FrontController();
 88:         
 89:         $this->assertEquals('ViewArticle', $front->getPageController(), 'testing that the constructor will detect the page controller action we want to invoke from the global _GET array');
 90:     }
 91: 
 92:     /**
 93:      * Testing that the constructor can parse the correct page controller action from a mod_rewrite style URL
 94:      * 
 95:      * @since 1.0
 96:      */
 97:     public function testConstructModRewrite() {
 98:         global $config;
 99:         
100:         $request = $config->get('app.url').'ViewArticleTitle/title/Test_Title';
101:         $_SERVER['REQUEST_URI'] = str_replace('http://'.$_SERVER['HTTP_HOST'], '', $request);
102:         $front = new FrontController();
103:         
104:         $this->assertEquals('ViewArticleTitle', $front->getPageController(), 'testing that the constructor can parse the correct page controller action from a mod_rewrite style URL');
105:     }
106:     
107:     /**
108:      * Testing that the constructor can parse the correct page controller action from a mod_rewrite style URL when a controller alias is used
109:      * 
110:      * @since 1.0
111:      */
112:     public function testConstructModRewriteWithAlias() {
113:         global $config;
114:         
115:         $request = $config->get('app.url').'article/Test_Title';
116:         $_SERVER['REQUEST_URI'] = str_replace('http://'.$_SERVER['HTTP_HOST'], '', $request);
117:         $front = new FrontController();
118:         $front->registerAlias('ViewArticleTitle','article','title');
119:         
120:         $this->assertEquals('ViewArticleTitle', $front->getPageController(), 'testing that the constructor can parse the correct page controller action from a mod_rewrite style URL when a controller alias is used');
121:     }
122:     
123:     /**
124:      * Testing that the constructor can parse the correct page controller action from an encrypted token param
125:      * 
126:      * @since 1.0
127:      */
128:     public function testConstructorWithEncryptedToken() {
129:         global $config;
130:         
131:         $params = 'act=ViewArticleTitle&title=Test_Title';
132:         $_GET['tk'] = FrontController::encodeQuery($params);
133:         $front = new FrontController();
134:         
135:         $this->assertEquals('ViewArticleTitle', $front->getPageController(), 'testing that the constructor can parse the correct page controller action from an encrypted token param');
136:     }
137:     
138:     /**
139:      * Testing that the constructor can parse the correct page controller action from an encrypted token param provided on a mod-rewrite style URL
140:      * 
141:      * @since 1.0
142:      */
143:     public function testConstructorModRewriteWithEncryptedToken() {
144:         global $config;
145:         
146:         $params = 'act=ViewArticleTitle&title=Test_Title';
147:         $request = $config->get('app.url').'tk/'.FrontController::encodeQuery($params);
148:         $_SERVER['REQUEST_URI'] = str_replace('http://'.$_SERVER['HTTP_HOST'], '', $request);
149:         $front = new FrontController();
150:         
151:         $this->assertEquals('ViewArticleTitle', $front->getPageController(), 'testing that the constructor can parse the correct page controller action from an encrypted token param provided on a mod-rewrite style URL');
152:     }
153:     
154:     /**
155:      * Testing the encodeQuery method with a known encrypted result for a test key
156:      * 
157:      * @since 1.0
158:      */
159:     public function testEncodeQuery() {
160:         global $config;
161:         
162:         $oldKey = $config->get('security.query.string.key');
163:         $config->set('security.query.string.key', 'testkey');
164:         $params = 'act=ViewArticleTitle&title=Test_Title';
165:         
166:         $this->assertEquals(FrontController::encodeQuery($params), '8kqoeebEej0V-FN5-DOdA1HBDDieFcNWTib2yLSUNjq0B0FWzAupIA==', 'testing the encodeQuery method with a known encrypted result for a test key');
167:         
168:         $config->set('security.query.string.key', $oldKey);
169:     }
170:     
171:     /**
172:      * Testing the decodeQueryParams method with a known encrypted result for a test key
173:      * 
174:      * @since 1.0
175:      */
176:     public function testDecodeQueryParams() {
177:         global $config;
178:         
179:         $oldKey = $config->get('security.query.string.key');
180:         $config->set('security.query.string.key', 'testkey');
181:         $tk = '8kqoeebEej0V-FN5-DOdA1HBDDieFcNWTib2yLSUNjq0B0FWzAupIA==';
182:         
183:         $this->assertEquals('act=ViewArticleTitle&title=Test_Title', FrontController::decodeQueryParams($tk), 'testing the decodeQueryParams method with a known encrypted result for a test key');
184:     }
185:     
186:     /**
187:      * Testing that the getDecodeQueryParams method will return the known params with a known encrypted result for a test key
188:      * 
189:      * @since 1.0
190:      */
191:     public function testGetDecodeQueryParams() {
192:         global $config;
193:         
194:         $oldKey = $config->get('security.query.string.key');
195:         $config->set('security.query.string.key', 'testkey');
196:         $tk = '8kqoeebEej0V-FN5-DOdA1HBDDieFcNWTib2yLSUNjq0B0FWzAupIA==';
197:         
198:         $decoded = FrontController::getDecodeQueryParams($tk);
199:         
200:         $this->assertEquals('ViewArticleTitle', $decoded['act'], 'testing that the getDecodeQueryParams method will return the known params with a known encrypted result for a test key');
201:         $this->assertEquals('Test_Title', $decoded['title'], 'testing that the getDecodeQueryParams method will return the known params with a known encrypted result for a test key');
202:     }
203:     
204:     /**
205:      * Testing that a request to a bad URL will result in a ResourceNotFoundException exception
206:      * 
207:      * @since 1.0
208:      */
209:     public function testLoadControllerFileNotFound() {
210:         global $config;
211:         
212:         $request = $config->get('app.url').'doesNotExists';
213:         $_SERVER['REQUEST_URI'] = str_replace('http://'.$_SERVER['HTTP_HOST'], '', $request);
214:         $front = new FrontController();
215:         
216:         try{
217:             $front->loadController(false);
218:             $this->fail('testing that a request to a bad URL will result in a ResourceNotFoundException exception');
219:         }catch (ResourceNotFoundException $e) {
220:             $this->assertTrue($e->getMessage() != '', 'testing that a request to a bad URL will result in a ResourceNotFoundException exception');
221:         }
222:     }
223:     
224:     /**
225:      * Testing the setting up and checking for the existence of a controller alias
226:      * 
227:      * @since 1.0
228:      */
229:     public function testDefineAlias() {
230:         $front = new FrontController();
231:         $front->registerAlias('ViewArticleTitle','article','title');
232:         
233:         $this->assertTrue($front->hasAlias('ViewArticleTitle'), 'testing the setting up and checking for the existence of a controller alias');
234:         $this->assertTrue($front->checkAlias('article'), 'testing the setting up and checking for the existence of a controller alias');
235:         $this->assertEquals('ViewArticleTitle', $front->getAliasController('article'), 
236:             'testing the setting up and checking for the existence of a controller alias');
237:         $this->assertEquals('article', $front->getControllerAlias('ViewArticleTitle'), 
238:             'testing the setting up and checking for the existence of a controller alias');
239:     }
240:     
241:     /**
242:      * Testing the accessing of the expected param for a given alias/controller
243:      * 
244:      * @since 1.0
245:      */
246:     public function testAccessingAliasParamNames() {
247:         $front = new FrontController();
248:         $front->registerAlias('ViewArticleTitle','article','title');
249:         
250:         $this->assertEquals('title', $front->getAliasParam('article'), 'testing the accessing of the expected param for a given alias/controller');
251:         $this->assertEquals('title', $front->getControllerParam('ViewArticleTitle'), 'testing the accessing of the expected param for a given alias/controller');
252:     }
253:     
254:     /**
255:      * Testing the registerFilter method with a valid filter object
256:      * 
257:      * @since 1.0
258:      */
259:     public function testRegisterFilterGood() {
260:         try {
261:             $front = new FrontController();
262:             $front->registerFilter(new ClientBlacklistFilter());
263:             
264:             $found = false;
265:             
266:             foreach ($front->getFilters() as $filter) {
267:                 if($filter instanceof ClientBlacklistFilter)
268:                     $found = true;
269:             }
270:             $this->assertTrue($found, 'testing the registerFilter method with a valid filter object');
271:         }catch (IllegalArguementException $e) {
272:             $this->fail('testing the registerFilter method with a valid filter object');
273:         }
274:     }
275:     
276:     /**
277:      * Testing the registerFilter method with a bad filter object
278:      * 
279:      * @since 1.0
280:      */
281:     public function testRegisterFilterBad() {
282:         try {
283:             $front = new FrontController();
284:             $front->registerFilter(new FrontController());
285:             
286:             $this->fail('testing the registerFilter method with a bad filter object');
287:         }catch (IllegalArguementException $e) {
288:             $this->assertEquals('Supplied filter object is not a valid AlphaFilterInterface instance!', $e->getMessage(), 'testing the registerFilter method with a bad filter object');
289:         }
290:     }
291: }
292: 
293: ?>
Alpha Framework API Documentation API documentation generated by ApiGen 2.8.0