Changeset 1441

Show
Ignore:
Timestamp:
03/19/08 18:18:13 (2 months ago)
Author:
mikey
Message:

refactoring #137, part 4: front controller now supports forceSSL - stubAbstractPageProcessor can now be removed in the next step

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/websites/processors/stubAbstractProcessor.php

    r1439 r1441  
    9797     * @return  bool 
    9898     */ 
    99     public function forcesSSL() 
     99    public function forceSSL() 
    100100    { 
    101101        return false; 
  • trunk/src/main/php/net/stubbles/websites/processors/stubProcessor.php

    r1439 r1441  
    4949     * @return  bool 
    5050     */ 
    51     public function forcesSSL(); 
     51    public function forceSSL(); 
    5252 
    5353    /** 
  • trunk/src/main/php/net/stubbles/websites/stubFrontController.php

    r1435 r1441  
    120120        $processorResolverFactory->init(); 
    121121        $processor = $processorResolverFactory->getResolver()->resolve($this->request, $this->session, $this->response); 
     122        if ($processor->forceSSL() === true && $processor->isSSL() === false) { 
     123            $this->response->addHeader('Location', 'https://' . $this->request->getURI()); 
     124            $this->request->cancel(); 
     125            $this->response->send(); 
     126            return; 
     127        } 
     128         
    122129        $interceptorInitializer = $this->websiteInitializer->getInterceptorInitializer(); 
    123130        $interceptorInitializer->setDescriptor($processor->getInterceptorDescriptor()); 
  • trunk/src/test/php/net/stubbles/websites/processors/stubAbstractProcessorTestCase.php

    r1439 r1441  
    9797    public function neverForcesSSLByDefault() 
    9898    { 
    99         $this->assertFalse($this->abstractProcessor->forcesSSL()); 
     99        $this->assertFalse($this->abstractProcessor->forceSSL()); 
    100100    } 
    101101 
  • trunk/src/test/php/net/stubbles/websites/stubFrontControllerTestCase.php

    r1435 r1441  
    126126                                    ->will($this->returnValue($this->mockProcessor)); 
    127127        $this->mockInterceptorInitializer = $this->getMock('stubInterceptorInitializer'); 
    128         $mockWebsiteInitializer->expects($this->once())->method('getInterceptorInitializer')->will($this->returnValue($this->mockInterceptorInitializer)); 
     128        $mockWebsiteInitializer->expects($this->any())->method('getInterceptorInitializer')->will($this->returnValue($this->mockInterceptorInitializer)); 
    129129        stubRegistry::setConfig(stubRequest::CLASS_REGISTRY_KEY, get_class($this->getMock('stubRequest'))); 
    130130        stubRegistry::setConfig(stubSession::CLASS_REGISTRY_KEY, get_class($this->getMock('stubSession'))); 
     
    151151    public function processWithPreInterceptorCancellingRequest() 
    152152    { 
     153        $this->mockProcessor->expects($this->any())->method('forceSSL')->will($this->returnValue(false)); 
    153154        $preInterceptor1 = $this->getMock('stubPreInterceptor'); 
    154155        $preInterceptor1->expects($this->once())->method('preProcess'); 
     
    177178    public function processWithProcessorCancellingRequest() 
    178179    { 
     180        $this->mockProcessor->expects($this->any())->method('forceSSL')->will($this->returnValue(false)); 
    179181        $postInterceptor1 = $this->getMock('stubPostInterceptor'); 
    180182        $postInterceptor1->expects($this->never())->method('postProcess'); 
     
    199201    public function processWithPostInterceptorCancellingRequest() 
    200202    { 
     203        $this->mockProcessor->expects($this->any())->method('forceSSL')->will($this->returnValue(false)); 
    201204        $postInterceptor1 = $this->getMock('stubPostInterceptor'); 
    202205        $postInterceptor1->expects($this->once())->method('postProcess'); 
     
    224227    public function processWithoutCancellingRequest() 
    225228    { 
     229        $this->mockProcessor->expects($this->any())->method('forceSSL')->will($this->returnValue(false)); 
    226230        $preInterceptor1 = $this->getMock('stubPreInterceptor'); 
    227231        $preInterceptor1->expects($this->once())->method('preProcess'); 
     
    245249        $this->frontController->process(); 
    246250    } 
     251 
     252    /** 
     253     * assure that processing ends when request is cancelled 
     254     * 
     255     * @test 
     256     */ 
     257    public function forcesSSLAndIsSSL() 
     258    { 
     259        $this->mockProcessor->expects($this->any())->method('forceSSL')->will($this->returnValue(true)); 
     260        $this->mockProcessor->expects($this->any())->method('isSSL')->will($this->returnValue(true)); 
     261        $preInterceptor1 = $this->getMock('stubPreInterceptor'); 
     262        $preInterceptor1->expects($this->once())->method('preProcess'); 
     263        $preInterceptor2 = $this->getMock('stubPreInterceptor'); 
     264        $preInterceptor2->expects($this->once())->method('preProcess'); 
     265        $this->mockInterceptorInitializer->expects($this->once()) 
     266                                         ->method('getPreInterceptors') 
     267                                         ->will($this->returnValue(array($preInterceptor1, $preInterceptor2))); 
     268        $postInterceptor1 = $this->getMock('stubPostInterceptor'); 
     269        $postInterceptor1->expects($this->once())->method('postProcess'); 
     270        $postInterceptor2 = $this->getMock('stubPostInterceptor'); 
     271        $postInterceptor2->expects($this->once())->method('postProcess'); 
     272        $this->mockInterceptorInitializer->expects($this->once()) 
     273                                         ->method('getPostInterceptors') 
     274                                         ->will($this->returnValue(array($postInterceptor1, $postInterceptor2))); 
     275        $this->mockRequest->expects($this->any())->method('isCancelled')->will($this->returnValue(false)); 
     276        $this->mockProcessor->expects($this->any())->method('process'); 
     277        $this->mockResponse->expects($this->once())->method('send'); 
     278        $this->mockWebsiteCacheFactory->expects($this->once())->method('configure'); 
     279        $this->frontController->setWebsiteCacheFactory($this->mockWebsiteCacheFactory); 
     280        $this->frontController->process(); 
     281    } 
     282 
     283    /** 
     284     * redirect to ssl if required 
     285     * 
     286     * @test 
     287     */ 
     288    public function forcesSSLButIsNotSSL() 
     289    { 
     290        $this->mockProcessor->expects($this->any())->method('forceSSL')->will($this->returnValue(true)); 
     291        $this->mockProcessor->expects($this->any())->method('isSSL')->will($this->returnValue(false)); 
     292        $this->mockInterceptorInitializer->expects($this->never()) 
     293                                         ->method('getPreInterceptors'); 
     294        $this->mockInterceptorInitializer->expects($this->never()) 
     295                                         ->method('getPostInterceptors'); 
     296        $this->mockProcessor->expects($this->never())->method('process'); 
     297        $this->mockResponse->expects($this->once())->method('addHeader'); 
     298        $this->mockResponse->expects($this->once())->method('send'); 
     299        $this->frontController->process(); 
     300    } 
    247301} 
    248302?>