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
  • AlphaDAOProviderFactory_Test
  • AlphaFeed_Test
  • AlphaFilters_Test
  • AlphaPHPServerUtils_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
  • RelationLookup_Test
  • Sequence_Test
  • String_Test
  • Tag_Test
  • Text_Test
  • Timestamp_Test
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  1: <?php
  2: 
  3: /**
  4:  * Test cases for implementations of the AlphaFilterInterface
  5:  * 
  6:  * @package alpha::tests
  7:  * @since 1.0
  8:  * @author John Collins <dev@alphaframework.org>
  9:  * @version $Id: AlphaFilters_Test.php 1548 2012-07-29 17:07:07Z alphadevx $
 10:  * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
 11:  * @copyright Copyright (c) 2012, John Collins (founder of Alpha Framework).  
 12:  * All rights reserved.
 13:  * 
 14:  * <pre>
 15:  * Redistribution and use in source and binary forms, with or 
 16:  * without modification, are permitted provided that the 
 17:  * following conditions are met:
 18:  * 
 19:  * * Redistributions of source code must retain the above 
 20:  *   copyright notice, this list of conditions and the 
 21:  *   following disclaimer.
 22:  * * Redistributions in binary form must reproduce the above 
 23:  *   copyright notice, this list of conditions and the 
 24:  *   following disclaimer in the documentation and/or other 
 25:  *   materials provided with the distribution.
 26:  * * Neither the name of the Alpha Framework nor the names 
 27:  *   of its contributors may be used to endorse or promote 
 28:  *   products derived from this software without specific 
 29:  *   prior written permission.
 30:  *   
 31:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
 32:  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
 33:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 34:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 35:  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
 36:  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 37:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
 38:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
 39:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 40:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 41:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
 42:  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 43:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 44:  * </pre>
 45:  *  
 46:  */
 47: class AlphaFilters_Test extends PHPUnit_Framework_TestCase {
 48:     /**
 49:      * Blacklisted client string
 50:      * 
 51:      * @var BlacklistedClientObject
 52:      * @since 1.0
 53:      */
 54:     private $blacklistedClient;
 55:     
 56:     /**
 57:      * A "bad" (banned) user agent string for us to test with
 58:      * 
 59:      * @var string
 60:      * @since 1.0
 61:      */
 62:     private $badAgent = 'curl/7.16.2 (i686-redhat-linux-gnu) libcurl/7.16.2 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.8';
 63:     
 64:     /**
 65:      * Used to keep track of the real user-agent of the user running the tests
 66:      * 
 67:      * @var string
 68:      * @since 1.0
 69:      */
 70:     private $oldAgent;
 71:     
 72:     /**
 73:      * Used to keep track of the real IP of the user running the tests
 74:      * 
 75:      * @var string
 76:      * @since 1.0
 77:      */
 78:     private $oldIP;
 79:     
 80:     /**
 81:      * A test BadRequestObject
 82:      * 
 83:      * @var BadRequestObject
 84:      * @since 1.0
 85:      */
 86:     private $badRequest1;
 87:     
 88:     /**
 89:      * A test BadRequestObject
 90:      * 
 91:      * @var BadRequestObject
 92:      * @since 1.0
 93:      */
 94:     private $badRequest2;
 95:     
 96:     /**
 97:      * A test BadRequestObject
 98:      * 
 99:      * @var BadRequestObject
100:      * @since 1.0
101:      */
102:     private $badRequest3;
103:     
104:     /**
105:      * A bad IP address
106:      * 
107:      * @var string
108:      * @since 1.0
109:      */
110:     private $badIP = '127.0.0.1';
111:     
112:     /**
113:      * Called before the test functions will be executed
114:      * this function is defined in PHPUnit_TestCase and overwritten
115:      * here
116:      * 
117:      * @since 1.0
118:      */
119:     protected function setUp() {
120:         $this->blacklistedClient = new BlacklistedClientObject();
121:         $this->blacklistedClient->rebuildTable();
122:         $this->blacklistedClient->set('client', $this->badAgent);
123:         $this->blacklistedClient->save();
124:         
125:         $this->badRequest1 = new BadRequestObject();
126:         $this->badRequest1->rebuildTable();
127:         $this->badRequest1->set('client', $this->badAgent);
128:         $this->badRequest1->set('IP', $this->badIP);
129:         $this->badRequest1->set('requestedResource', '/doesNotExist');
130:         $this->badRequest1->save();
131:         
132:         $this->badRequest2 = new BadRequestObject();
133:         $this->badRequest2->set('client', $this->badAgent);
134:         $this->badRequest2->set('IP', $this->badIP);
135:         $this->badRequest2->set('requestedResource', '/doesNotExist');
136:         $this->badRequest2->save();
137:         
138:         $this->badRequest3 = new BadRequestObject();
139:         $this->badRequest3->set('client', $this->badAgent);
140:         $this->badRequest3->set('IP', $this->badIP);
141:         $this->badRequest3->set('requestedResource', '/doesNotExist');
142:         $this->badRequest3->save();
143:         
144:         $this->oldAgent = $_SERVER['HTTP_USER_AGENT'];
145:         $this->oldIP = $_SERVER['REMOTE_ADDR'];
146:     }
147:     
148:     /** 
149:      * Called after the test functions are executed
150:      * this function is defined in PHPUnit_TestCase and overwritten
151:      * here
152:      * 
153:      * @since 1.0
154:      */    
155:     protected function tearDown() {
156:         $this->blacklistedClient->dropTable();
157:         unset($this->blacklistedClient);
158:         
159:         $this->badRequest1->dropTable();
160:         unset($this->badRequest1);
161:         
162:         unset($this->badRequest2);
163:         
164:         unset($this->badRequest3);
165:         
166:         $_SERVER['HTTP_USER_AGENT'] = $this->oldAgent;
167:         $_SERVER['REMOTE_ADDR'] = $this->oldIP;
168:     }
169:     
170:     /**
171:      * Testing that a blacklisted user agent string cannot pass the ClientBlacklistFilter filter
172:      * 
173:      * @since 1.0
174:      */
175:     public function testClientBlacklistFilter() {
176:         $_SERVER['HTTP_USER_AGENT'] = $this->badAgent;
177:         $_GET['act'] = 'Search';
178:         
179:         try {
180:             $front = new FrontController();
181:             $front->registerFilter(new ClientBlacklistFilter());
182:             $front->loadController(false);
183:             $this->fail('Testing that a blacklisted user agent string cannot pass the ClientBlacklistFilter filter');
184:         }catch (ResourceNotAllowedException $e) {
185:             $this->assertEquals('Not allowed!', $e->getMessage(), 'Testing that a blacklisted user agent string cannot pass the ClientBlacklistFilter filter');
186:         }
187:     }
188:     
189:     /**
190:      * Testing that a user agent string/IP compbo cannot pass the ClientTempBlacklistFilter filter beyond the config limit
191:      * 
192:      * @since 1.0
193:      */
194:     public function testClientTempBlacklistFilter() {
195:         global $config;
196:         $config->set('security.client.temp.blacklist.filter.limit', 3);
197:         
198:         $_SERVER['HTTP_USER_AGENT'] = $this->badAgent;
199:         $_SERVER['REMOTE_ADDR'] = $this->badIP;
200:         $_GET['act'] = 'doesNotExist';
201:         
202:         try {
203:             $front = new FrontController();
204:             $front->registerFilter(new ClientTempBlacklistFilter());
205:             $front->loadController(false);
206:             $this->fail('Testing that a user agent string/IP compbo cannot pass the ClientTempBlacklistFilter filter beyond the config limit');
207:         }catch (ResourceNotAllowedException $e) {
208:             $this->assertEquals('Not allowed!', $e->getMessage(), 'Testing that a user agent string/IP compbo cannot pass the ClientTempBlacklistFilter filter beyond the config limit');
209:         }
210:     }
211: }
212: 
213: ?>
Alpha Framework ${alpha.version.new} API Documentation API documentation generated by ApiGen 2.8.0