Reduce dependence on session state for accessing draft stages

This commit is contained in:
Daniel Hensby 2017-09-25 13:55:33 +01:00 committed by Daniel Hensby
parent 1ea14382ee
commit 7f7fe73b77
No known key found for this signature in database
GPG Key ID: D8DEBC4C8E7BC8B9

View File

@ -4,6 +4,7 @@ namespace SilverStripe\Dev;
use SilverStripe\Control\Controller; use SilverStripe\Control\Controller;
use SilverStripe\Control\Director; use SilverStripe\Control\Director;
use SilverStripe\Control\HTTP;
use SilverStripe\Control\Session; use SilverStripe\Control\Session;
use SilverStripe\Control\HTTPResponse; use SilverStripe\Control\HTTPResponse;
use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Config;
@ -12,6 +13,7 @@ use SilverStripe\Security\BasicAuth;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\Security\Security; use SilverStripe\Security\Security;
use SilverStripe\Security\SecurityToken; use SilverStripe\Security\SecurityToken;
use SilverStripe\Versioned\Versioned;
use SilverStripe\View\SSViewer; use SilverStripe\View\SSViewer;
use PHPUnit_Framework_AssertionFailedError; use PHPUnit_Framework_AssertionFailedError;
use SimpleXMLElement; use SimpleXMLElement;
@ -161,6 +163,9 @@ class FunctionalTest extends SapphireTest implements TestOnly
public function get($url, $session = null, $headers = null, $cookies = null) public function get($url, $session = null, $headers = null, $cookies = null)
{ {
$this->cssParser = null; $this->cssParser = null;
if (Versioned::get_stage() === Versioned::DRAFT) {
$url = HTTP::setGetVar('stage', Versioned::DRAFT, $url);
}
$response = $this->mainSession->get($url, $session, $headers, $cookies); $response = $this->mainSession->get($url, $session, $headers, $cookies);
if ($this->autoFollowRedirection && is_object($response) && $response->getHeader('Location')) { if ($this->autoFollowRedirection && is_object($response) && $response->getHeader('Location')) {
$response = $this->mainSession->followRedirection(); $response = $this->mainSession->followRedirection();
@ -411,11 +416,9 @@ class FunctionalTest extends SapphireTest implements TestOnly
public function useDraftSite($enabled = true) public function useDraftSite($enabled = true)
{ {
if ($enabled) { if ($enabled) {
$this->session()->set('readingMode', 'Stage.Stage'); Versioned::set_stage(Versioned::DRAFT);
$this->session()->set('unsecuredDraftSite', true);
} else { } else {
$this->session()->set('readingMode', 'Stage.Live'); Versioned::set_stage(Versioned::LIVE);
$this->session()->set('unsecuredDraftSite', false);
} }
} }