blob: cb7815084c7a4d5645867d71177c58598284d727 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
<?php
namespace Mediawiki\Api\Test\Integration;
use Exception;
use Mediawiki\Api\MediawikiApi;
use Mediawiki\Api\SimpleRequest;
/**
* @author Addshore
*/
class TestEnvironment {
/**
* Get a new TestEnvironment.
* This is identical to calling self::__construct() but is useful for fluent construction.
*
* @return TestEnvironment
*/
public static function newInstance() {
return new self();
}
/** @var MediawikiApi */
private $api;
/** @var string */
private $apiUrl;
/** @var string */
private $pageUrl;
/**
* Set up the test environment by creating a new API object pointing to a
* MediaWiki installation on localhost (or elsewhere as specified by the
* ADDWIKI_MW_API environment variable).
*
* @throws Exception If the ADDWIKI_MW_API environment variable does not end in 'api.php'
*/
public function __construct() {
$apiUrl = getenv( 'ADDWIKI_MW_API' );
if ( substr( $apiUrl, -7 ) !== 'api.php' ) {
$msg = "URL incorrect: $apiUrl"
." (Set the ADDWIKI_MW_API environment variable correctly)";
throw new Exception( $msg );
}
$this->apiUrl = $apiUrl;
$this->pageUrl = str_replace( 'api.php', 'index.php?title=Special:SpecialPages', $apiUrl );
$this->api = MediawikiApi::newFromApiEndpoint( $this->apiUrl );
}
/**
* Get the url of the api to test against, based on the MEDIAWIKI_API_URL environment variable.
* @return string
*/
public function getApiUrl() {
return $this->apiUrl;
}
/**
* Get the url of a page on the wiki to test against, based on the api url.
* @return string
*/
public function getPageUrl() {
return $this->pageUrl;
}
/**
* Get the MediawikiApi to test against
* @return MediawikiApi
*/
public function getApi() {
return $this->api;
}
/**
* Save a wiki page.
* @param string $title The title of the page.
* @param string $content The complete page text to save.
*/
public function savePage( $title, $content ) {
$params = [
'title' => $title,
'text' => $content,
'md5' => md5( $content ),
'token' => $this->api->getToken(),
];
$this->api->postRequest( new SimpleRequest( 'edit', $params ) );
}
}
|