The NonSerializableTrait prevents object serialization via php's native serialization mechanism. Most objects are not safe to serialize, and NonSerializableTrait provides a covenient and uniform way to protect against serialization attempts. This patch applies the NonSerializableTrait to some key classes in MediaWiki. Bug: T187731 Bug: T259181 Change-Id: I0c3b558d97e3415413bbaa3d98f6ebd5312c4a67
77 lines
2.1 KiB
PHP
77 lines
2.1 KiB
PHP
<?php
|
|
|
|
class ArticleTest extends \MediaWikiIntegrationTestCase {
|
|
|
|
/**
|
|
* @var Title
|
|
*/
|
|
private $title;
|
|
/**
|
|
* @var Article
|
|
*/
|
|
private $article;
|
|
|
|
/** creates a title object and its article object */
|
|
protected function setUp() : void {
|
|
parent::setUp();
|
|
$this->title = Title::makeTitle( NS_MAIN, 'SomePage' );
|
|
$this->article = new Article( $this->title );
|
|
}
|
|
|
|
/** cleanup title object and its article object */
|
|
protected function tearDown() : void {
|
|
parent::tearDown();
|
|
$this->title = null;
|
|
$this->article = null;
|
|
}
|
|
|
|
/**
|
|
* @covers Article::__get
|
|
*/
|
|
public function testImplementsGetMagic() {
|
|
$this->filterDeprecated( '/Accessing Article::\$mLatest/' );
|
|
$this->assertFalse( $this->article->mLatest, "Article __get magic" );
|
|
}
|
|
|
|
/**
|
|
* @depends testImplementsGetMagic
|
|
* @covers Article::__set
|
|
*/
|
|
public function testImplementsSetMagic() {
|
|
$this->filterDeprecated( '/Accessing Article::\$mLatest/' );
|
|
$this->filterDeprecated( '/Setting Article::\$mLatest/' );
|
|
$this->article->mLatest = 2;
|
|
$this->assertEquals( 2, $this->article->mLatest, "Article __set magic" );
|
|
}
|
|
|
|
/**
|
|
* @covers Article::__get
|
|
* @covers Article::__set
|
|
*/
|
|
public function testGetOrSetOnNewProperty() {
|
|
$this->filterDeprecated(
|
|
'/Accessing Article::\$ext_someNewProperty/'
|
|
);
|
|
$this->filterDeprecated(
|
|
'/Setting Article::\$ext_someNewProperty/'
|
|
);
|
|
$this->article->ext_someNewProperty = 12;
|
|
$this->assertEquals( 12, $this->article->ext_someNewProperty,
|
|
"Article get/set magic on new field" );
|
|
$this->assertEquals( 12, $this->article->getPage()->ext_someNewProperty,
|
|
"Article get/set magic on new field" );
|
|
$this->article->ext_someNewProperty = -8;
|
|
$this->assertEquals( -8, $this->article->ext_someNewProperty,
|
|
"Article get/set magic on update to new field" );
|
|
$this->assertEquals( -8, $this->article->getPage()->ext_someNewProperty,
|
|
"Article get/set magic on new field" );
|
|
}
|
|
|
|
/**
|
|
* @covers Article::__sleep
|
|
*/
|
|
public function testSerialization_fails() {
|
|
$this->expectException( LogicException::class );
|
|
serialize( $this->article );
|
|
}
|
|
}
|