mirror of
https://github.com/silverstripe/silverstripe-subsites
synced 2024-10-22 11:05:55 +02:00
Merge pull request #471 from creative-commoners/pulls/2/sapphire-test-nine
API phpunit 9 support
This commit is contained in:
commit
5049a5e13c
@ -5,5 +5,4 @@ import:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- COMPOSER_ROOT_VERSION="2.x-dev"
|
|
||||||
- BEHAT_SUITE="@subsites"
|
- BEHAT_SUITE="@subsites"
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"silverstripe/framework": "^4.4@dev",
|
"php": "^7.3 || ^8.0",
|
||||||
|
"silverstripe/framework": "^4.10",
|
||||||
"silverstripe/cms": "^4.4@dev",
|
"silverstripe/cms": "^4.4@dev",
|
||||||
"silverstripe/admin": "^1.4@dev",
|
"silverstripe/admin": "^1.4@dev",
|
||||||
"silverstripe/asset-admin": "^1.4@dev",
|
"silverstripe/asset-admin": "^1.4@dev",
|
||||||
@ -23,7 +24,7 @@
|
|||||||
"silverstripe/versioned": "^1.4@dev"
|
"silverstripe/versioned": "^1.4@dev"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"sminnee/phpunit": "^5.7",
|
"phpunit/phpunit": "^9.5",
|
||||||
"squizlabs/php_codesniffer": "^3.0"
|
"squizlabs/php_codesniffer": "^3.0"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<phpunit bootstrap="vendor/silverstripe/cms/tests/bootstrap.php" colors="true">
|
<phpunit bootstrap="vendor/silverstripe/cms/tests/bootstrap.php" colors="true">
|
||||||
<testsuite name="Default">
|
<testsuites>
|
||||||
<directory>tests/php</directory>
|
<testsuite name="Default">
|
||||||
</testsuite>
|
<directory>tests/php</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<whitelist addUncoveredFilesFromWhitelist="true">
|
<whitelist addUncoveredFilesFromWhitelist="true">
|
||||||
|
@ -9,7 +9,7 @@ use SilverStripe\Subsites\State\SubsiteState;
|
|||||||
|
|
||||||
class BaseSubsiteTest extends SapphireTest
|
class BaseSubsiteTest extends SapphireTest
|
||||||
{
|
{
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ class GroupSubsitesTest extends BaseSubsiteTest
|
|||||||
|
|
||||||
public function testTrivialFeatures()
|
public function testTrivialFeatures()
|
||||||
{
|
{
|
||||||
$this->assertInternalType('array', singleton(GroupSubsites::class)->extraStatics());
|
$this->assertIsArray(singleton(GroupSubsites::class)->extraStatics());
|
||||||
$this->assertInternalType('array', singleton(GroupSubsites::class)->providePermissions());
|
$this->assertIsArray(singleton(GroupSubsites::class)->providePermissions());
|
||||||
$this->assertInstanceOf(FieldList::class, singleton(Group::class)->getCMSFields());
|
$this->assertInstanceOf(FieldList::class, singleton(Group::class)->getCMSFields());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,14 +19,14 @@ class InitStateMiddlewareTest extends BaseSubsiteTest
|
|||||||
*/
|
*/
|
||||||
protected $origServer = [];
|
protected $origServer = [];
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$this->origServer = $_SERVER;
|
$this->origServer = $_SERVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown(): void
|
||||||
{
|
{
|
||||||
$_SERVER = $this->origServer;
|
$_SERVER = $this->origServer;
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ class ThemeResolverTest extends SapphireTest
|
|||||||
SSViewer::DEFAULT_THEME,
|
SSViewer::DEFAULT_THEME,
|
||||||
];
|
];
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class SiteTreeSubsitesTest extends BaseSubsiteTest
|
|||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
// We have our own home page fixtures, prevent the default one being created in this test suite.
|
// We have our own home page fixtures, prevent the default one being created in this test suite.
|
||||||
Config::modify()->set(SiteTree::class, 'create_default_pages', false);
|
Config::modify()->set(SiteTree::class, 'create_default_pages', false);
|
||||||
|
@ -14,7 +14,7 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
|
|
||||||
protected $autoFollowRedirection = false;
|
protected $autoFollowRedirection = false;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
// Ensure all pages are published
|
// Ensure all pages are published
|
||||||
@ -48,14 +48,18 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
$this->logOut();
|
$this->logOut();
|
||||||
|
|
||||||
$response = $this->getAndFollowAll('admin/pages/?SubsiteID=0');
|
$response = $this->getAndFollowAll('admin/pages/?SubsiteID=0');
|
||||||
$this->assertContains('Security/login', $this->mainSession->lastUrl(), 'Admin is disallowed');
|
$this->assertStringContainsString('Security/login', $this->mainSession->lastUrl(), 'Admin is disallowed');
|
||||||
|
|
||||||
$subsite1 = $this->objFromFixture(Subsite::class, 'subsite1');
|
$subsite1 = $this->objFromFixture(Subsite::class, 'subsite1');
|
||||||
$response = $this->getAndFollowAll("admin/pages/?SubsiteID={$subsite1->ID}");
|
$response = $this->getAndFollowAll("admin/pages/?SubsiteID={$subsite1->ID}");
|
||||||
$this->assertContains('Security/login', $this->mainSession->lastUrl(), 'Admin is disallowed');
|
$this->assertStringContainsString('Security/login', $this->mainSession->lastUrl(), 'Admin is disallowed');
|
||||||
|
|
||||||
$response = $this->getAndFollowAll('admin/subsite_xhr');
|
$response = $this->getAndFollowAll('admin/subsite_xhr');
|
||||||
$this->assertContains('Security/login', $this->mainSession->lastUrl(), 'SubsiteXHRController is disallowed');
|
$this->assertStringContainsString(
|
||||||
|
'Security/login',
|
||||||
|
$this->mainSession->lastUrl(),
|
||||||
|
'SubsiteXHRController is disallowed'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,17 +71,21 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
|
|
||||||
$this->getAndFollowAll('admin/pages/?SubsiteID=0');
|
$this->getAndFollowAll('admin/pages/?SubsiteID=0');
|
||||||
$this->assertEquals(0, $this->session()->get('SubsiteID'), 'Can access main site.');
|
$this->assertEquals(0, $this->session()->get('SubsiteID'), 'Can access main site.');
|
||||||
$this->assertContains('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
$this->assertStringContainsString('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
||||||
|
|
||||||
$subsite1 = $this->objFromFixture(Subsite::class, 'subsite1');
|
$subsite1 = $this->objFromFixture(Subsite::class, 'subsite1');
|
||||||
$this->getAndFollowAll("admin/pages/?SubsiteID={$subsite1->ID}");
|
$this->getAndFollowAll("admin/pages/?SubsiteID={$subsite1->ID}");
|
||||||
|
|
||||||
// Check the session manually, since the state is unique to the request, not this test
|
// Check the session manually, since the state is unique to the request, not this test
|
||||||
$this->assertEquals($subsite1->ID, $this->session()->get('SubsiteID'), 'Can access other subsite.');
|
$this->assertEquals($subsite1->ID, $this->session()->get('SubsiteID'), 'Can access other subsite.');
|
||||||
$this->assertContains('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
$this->assertStringContainsString('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
||||||
|
|
||||||
$response = $this->getAndFollowAll('admin/subsite_xhr');
|
$response = $this->getAndFollowAll('admin/subsite_xhr');
|
||||||
$this->assertNotContains('Security/login', $this->mainSession->lastUrl(), 'SubsiteXHRController is reachable');
|
$this->assertStringNotContainsString(
|
||||||
|
'Security/login',
|
||||||
|
$this->mainSession->lastUrl(),
|
||||||
|
'SubsiteXHRController is reachable'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAdminIsRedirectedToObjectsSubsite()
|
public function testAdminIsRedirectedToObjectsSubsite()
|
||||||
@ -92,7 +100,7 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
$response = $this->get("admin/pages/edit/show/$subsite1Home->ID");
|
$response = $this->get("admin/pages/edit/show/$subsite1Home->ID");
|
||||||
|
|
||||||
$this->assertEquals(302, $response->getStatusCode());
|
$this->assertEquals(302, $response->getStatusCode());
|
||||||
$this->assertContains(
|
$this->assertStringContainsString(
|
||||||
'admin/pages/edit/show/' . $subsite1Home->ID . '?SubsiteID=' . $subsite1Home->SubsiteID,
|
'admin/pages/edit/show/' . $subsite1Home->ID . '?SubsiteID=' . $subsite1Home->SubsiteID,
|
||||||
$response->getHeader('Location')
|
$response->getHeader('Location')
|
||||||
);
|
);
|
||||||
@ -102,7 +110,7 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
|
|
||||||
$response = $this->get("admin/pages/edit/show/$subsite1Home->ID");
|
$response = $this->get("admin/pages/edit/show/$subsite1Home->ID");
|
||||||
$this->assertEquals(302, $response->getStatusCode());
|
$this->assertEquals(302, $response->getStatusCode());
|
||||||
$this->assertContains(
|
$this->assertStringContainsString(
|
||||||
'admin/pages/edit/show/' . $subsite1Home->ID . '?SubsiteID=' . $subsite1Home->SubsiteID,
|
'admin/pages/edit/show/' . $subsite1Home->ID . '?SubsiteID=' . $subsite1Home->SubsiteID,
|
||||||
$response->getHeader('Location')
|
$response->getHeader('Location')
|
||||||
);
|
);
|
||||||
@ -122,15 +130,19 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
|
|
||||||
$this->get('admin/pages/?SubsiteID=0');
|
$this->get('admin/pages/?SubsiteID=0');
|
||||||
$this->assertEquals(0, $this->session()->get('SubsiteID'), 'Can access main site.');
|
$this->assertEquals(0, $this->session()->get('SubsiteID'), 'Can access main site.');
|
||||||
$this->assertContains('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
$this->assertStringContainsString('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
||||||
|
|
||||||
$subsite1 = $this->objFromFixture(Subsite::class, 'subsite1');
|
$subsite1 = $this->objFromFixture(Subsite::class, 'subsite1');
|
||||||
$this->get("admin/pages/?SubsiteID={$subsite1->ID}");
|
$this->get("admin/pages/?SubsiteID={$subsite1->ID}");
|
||||||
$this->assertEquals($subsite1->ID, $this->session()->get('SubsiteID'), 'Can access other subsite.');
|
$this->assertEquals($subsite1->ID, $this->session()->get('SubsiteID'), 'Can access other subsite.');
|
||||||
$this->assertContains('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
$this->assertStringContainsString('admin/pages', $this->mainSession->lastUrl(), 'Lands on the correct section');
|
||||||
|
|
||||||
$response = $this->get('admin/subsite_xhr');
|
$response = $this->get('admin/subsite_xhr');
|
||||||
$this->assertNotContains('Security/login', $this->mainSession->lastUrl(), 'SubsiteXHRController is reachable');
|
$this->assertStringNotContainsString(
|
||||||
|
'Security/login',
|
||||||
|
$this->mainSession->lastUrl(),
|
||||||
|
'SubsiteXHRController is reachable'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -146,7 +158,11 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
// Check allowed URL.
|
// Check allowed URL.
|
||||||
$this->getAndFollowAll("admin/pages/?SubsiteID={$subsite1->ID}");
|
$this->getAndFollowAll("admin/pages/?SubsiteID={$subsite1->ID}");
|
||||||
$this->assertEquals($subsite1->ID, $this->session()->get('SubsiteID'), 'Can access own subsite.');
|
$this->assertEquals($subsite1->ID, $this->session()->get('SubsiteID'), 'Can access own subsite.');
|
||||||
$this->assertContains('admin/pages', $this->mainSession->lastUrl(), 'Can access permitted section.');
|
$this->assertStringContainsString(
|
||||||
|
'admin/pages',
|
||||||
|
$this->mainSession->lastUrl(),
|
||||||
|
'Can access permitted section.'
|
||||||
|
);
|
||||||
|
|
||||||
// Check forbidden section in allowed subsite.
|
// Check forbidden section in allowed subsite.
|
||||||
$this->getAndFollowAll("admin/assets/?SubsiteID={$subsite1->ID}");
|
$this->getAndFollowAll("admin/assets/?SubsiteID={$subsite1->ID}");
|
||||||
@ -172,10 +188,14 @@ class SubsiteAdminFunctionalTest extends FunctionalTest
|
|||||||
$subsite1->ID,
|
$subsite1->ID,
|
||||||
'Is redirected to first permitted subsite.'
|
'Is redirected to first permitted subsite.'
|
||||||
);
|
);
|
||||||
$this->assertNotContains('Security/login', $this->mainSession->lastUrl(), 'Is not denied access');
|
$this->assertStringNotContainsString('Security/login', $this->mainSession->lastUrl(), 'Is not denied access');
|
||||||
|
|
||||||
// Check the standalone XHR controller.
|
// Check the standalone XHR controller.
|
||||||
$response = $this->getAndFollowAll('admin/subsite_xhr');
|
$response = $this->getAndFollowAll('admin/subsite_xhr');
|
||||||
$this->assertNotContains('Security/login', $this->mainSession->lastUrl(), 'SubsiteXHRController is reachable');
|
$this->assertStringNotContainsString(
|
||||||
|
'Security/login',
|
||||||
|
$this->mainSession->lastUrl(),
|
||||||
|
'SubsiteXHRController is reachable'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ class SubsiteAdminTest extends FunctionalTest
|
|||||||
{
|
{
|
||||||
protected static $fixture_file = 'SubsiteTest.yml';
|
protected static $fixture_file = 'SubsiteTest.yml';
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ class SubsiteTest extends BaseSubsiteTest
|
|||||||
*/
|
*/
|
||||||
protected $origServer = [];
|
protected $origServer = [];
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ class SubsiteTest extends BaseSubsiteTest
|
|||||||
$this->origServer = $_SERVER;
|
$this->origServer = $_SERVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function tearDown()
|
protected function tearDown(): void
|
||||||
{
|
{
|
||||||
$_SERVER = $this->origServer;
|
$_SERVER = $this->origServer;
|
||||||
|
|
||||||
|
@ -36,12 +36,12 @@ class SubsiteXHRControllerTest extends FunctionalTest
|
|||||||
|
|
||||||
$this->assertEquals(200, $result->getStatusCode());
|
$this->assertEquals(200, $result->getStatusCode());
|
||||||
// SilverStripe 4.0-4.2: text/json. >=4.3: application/json
|
// SilverStripe 4.0-4.2: text/json. >=4.3: application/json
|
||||||
$this->assertContains('json', $result->getHeader('Content-Type'));
|
$this->assertStringContainsString('json', $result->getHeader('Content-Type'));
|
||||||
|
|
||||||
$body = $result->getBody();
|
$body = $result->getBody();
|
||||||
$this->assertContains('Main site', $body);
|
$this->assertStringContainsString('Main site', $body);
|
||||||
$this->assertContains('Test 1', $body);
|
$this->assertStringContainsString('Test 1', $body);
|
||||||
$this->assertContains('Test 2', $body);
|
$this->assertStringContainsString('Test 2', $body);
|
||||||
$this->assertContains('Test 3', $body);
|
$this->assertStringContainsString('Test 3', $body);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ class SubsitesVirtualPageTest extends BaseSubsiteTest
|
|||||||
'SubsitesVirtualPageTest.yml',
|
'SubsitesVirtualPageTest.yml',
|
||||||
];
|
];
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ class SubsitesVirtualPageTest extends BaseSubsiteTest
|
|||||||
$page->write();
|
$page->write();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tearDown()
|
protected function tearDown(): void
|
||||||
{
|
{
|
||||||
TestAssetStore::reset();
|
TestAssetStore::reset();
|
||||||
parent::tearDown();
|
parent::tearDown();
|
||||||
|
Loading…
Reference in New Issue
Block a user