Commit graph

131 commits

Author SHA1 Message Date
jenkins-bot
0335c4c6e1 Merge "(bug 42639) Fix API action=options for multiselect prefs" 2012-12-14 14:55:04 +00:00
Brad Jorsch
13f0f58f76 (bug 42639) Fix API action=options for multiselect prefs
Preferences options using HTMLForm's "multiselect" type are stored in
the user preferences table as one key with a boolean value for each
option in the multiselect. The validation code added in change I98df55f2
does not take this into account, and therefore considers all of these
option keys invalid.

This changeset fixes that, and adds a unit test to verify correct
behavior.

Change-Id: I137c74a6045c7b39e2119a8edde2705738879bc9
2012-12-08 10:09:04 +01:00
Niklas Laxström
49b3acb7ee Less wild whitespace
Change-Id: I3048b23b50aa284b3471dfb8033122c913909b01
2012-12-07 21:44:53 +00:00
Brad Jorsch
fb7c95f567 (bug 42638) Fix API action=options&reset=1 & unit tests
Change I98df55f2 broke action=options&reset=1, causing it to return an
error "No changes were requested" rather than resetting the options as
it should. Unfortunately, that change also broke the unit test that
would have caught this regression.

This changeset fixes the bug and the unit tests.

Change-Id: I7fe63640d54efab4572538e9d08f5b75c61243a4
2012-12-02 23:22:18 -05:00
Catrope
fe45ba8752 (bug 42202) Validate preference values in action=options
Previously, there was no validation whatsoever and the module would
happily write any preference you asked it to. This, combined with the
fact that the code using the 'editfont' preference didn't perform any
validation or escaping, led to a CSS injection vulnerability.

Using Preferences::getPreferences breaks some existing test cases
because a MockUser doesn't have groups for preferences.

Change-Id: I98df55f2b16ac1b6fce578798b6f58b5dad96775
2012-11-29 16:42:56 -08:00
Antoine Musso
bc77c6376f mark ApiEditPageTest as being slow tests
The edit conflict tests can take quiet a while to execute, definitely
more than the default 2 seconds we allocated to test. Marking the class
with '@group medium', in the comment, instructs PHPUnit to apply a
timeout of 10 seconds.

Change-Id: Icdd78ea43c91eeca7d4a00bfe6bb368bb3b8f891
2012-11-26 14:49:52 +01:00
Anomie
f950401ed2 Merge "Regression test for detecting edit conflicts." 2012-11-16 16:56:34 +00:00
daniel
1aed5382d2 Regression test for detecting edit conflicts.
Change-Id: I9f8f3850ff0d6d51f173f5be73ffcb3b64886235
2012-11-15 20:23:37 +01:00
daniel
cef8005d3a When returning rev content, always include model.
query=revisions can be used with rvprop=content to retrieve the
content of revisions. The contentmodel should always be included
with the content (just like the contenformat is), so the client
is able to interpret the structure contained in the content blob.

Change-Id: I67cf48f905ff83a86992e1a54f7ad0feaf2b2c94
2012-11-14 14:53:34 +01:00
jeroendedauw
cab98d9fdd Some cleanup of doApiRequest in test module
Change-Id: Ia5bdf04c5b43c551f383af9fd078528e14d07efc
2012-11-01 18:36:10 +01:00
Brad Jorsch
3756f810bc (bug 41042) Regression: API action=parse with nonexistent page
Changeset Iec98e472 changed the behavior of action=parse&page=... when
passed a page that does not exist: previously, it would return a
"missingtitle" error instead of assuming an empty page. As some people
had been depending on this old behavior, restore the error checking.

Change-Id: I4c76ce458ceb01e233c6074cd9251879013ec143
2012-10-29 13:38:33 -04:00
Demon
996e570652 Merge "(bug 40930) Fix regression: ContentHandler prevents action=edit append to blank page" 2012-10-15 15:02:27 +00:00
Brad Jorsch
07c796d520 (bug 40930) Fix regression: ContentHandler prevents action=edit append to blank page
Before the ContentHandler merge, using action=edit&appendtext=... on a
non-existent page would treat the page as if it existed but had no
content. After the merge, it throws an error incorrectly claiming that
appending is not supported for wikitext.

The fix is to create a new, empty content object when appending and
there is no existing content.

Change-Id: I61f2cf3911a7d9d8553fc3f745e545cb1bcfd270
2012-10-15 15:45:39 +02:00
Reedy
7358afdde1 (bug 39665) optimize API query generator list
List of query generators is now not built using reflection, instead it
is defined in code. Per Domas, make this a hard coded list instead of
loading all the child classes.

Added $wgAPIGeneratorModules for people to register their API generator
modules.

Change-Id: I12da92da33527e414c9b125a50b82c9bdbb3ed99
2012-10-12 20:24:15 +00:00
daniel
329d5b3516 Merge branch 'Wikidata' into master.
This introduces the ContentHandler facility into MediaWiki,
see docs/contenthandler.txt.

For convenient review, a squashed version is available at
https://gerrit.wikimedia.org/r/27191

The ContentHandler facility is a major building block of the Wikidata project.
It has been discussed repeatedly on wikitech-l.

Change-Id: I3804e2d5f6f59e6a39db80744bdf61bfe8c14f98
2012-10-09 11:34:24 +02:00
Timo Tijhof
181c7cdc8e Clean and repair many phpunit tests (+ fix implied configuration)
This commit depends on the introduction of
MediaWikiTestCase::setMwGlobals in change Iccf6ea81f4.

Various tests already set their globals, but forgot to restore
them afterwards, or forgot to call the parent setUp, tearDown...

Either way they won't have to anymore with setMwGlobals.

Consistent use of function characteristics:
* protected function setUp
* protected function tearDown
* public static function (provide..)

(Matching the function signature with PHPUnit/Framework/TestCase.php)

Replaces:
 * public function (setUp|tearDown)\(
 * protected function $1(

 * \tfunction (setUp|tearDown)\(
 * \tprotected function $1(

 * \tfunction (data|provide)\(
 * \tpublic static function $1\(

Also renamed a few "data#", "provider#" and "provides#" functions
to "provide#" for consistency. This also removes confusion where
the /media tests had a few private methods called dataFile(),
which were sometimes expected to be data providers.

Fixes:

TimestampTest often failed due to a previous test setting a
different language (it tests "1 hour ago" so need to make sure
it is set to English).

MWNamespaceTest became a lot cleaner now that it executes with
a known context. Though the now-redundant code that was removed
didn't work anyway because wgContentNamespaces isn't keyed by
namespace id, it had them was values...

FileBackendTest:
* Fixed: "PHP Fatal: Using $this when not in object context"

HttpTest
* Added comment about:
  "PHP Fatal: Call to protected MWHttpRequest::__construct()"
  (too much unrelated code to fix in this commit)

ExternalStoreTest
* Add an assertTrue as well, without it the test is useless
  because regardless of whether wgExternalStores is true or false
  it only uses it if it is an array.

Change-Id: I9d2b148e57bada64afeb7d5a99bec0e58f8e1561
2012-10-09 03:01:51 +02:00
daniel
bb51a58e57 Cleanup of Wikidata branch.
This cleans up several issues raised in comments to I3b2dad3a,
mostly style and merge artifacts.

Change-Id: I99f5e300a671db1353db151cd187ffd2e4478d03
2012-10-08 17:34:47 +02:00
daniel
c546fae8ed merge latest master into Wikidata branch
Change-Id: Id4e0f40c03679c13d8934a6add99b5cd86d0437d
2012-10-08 13:58:54 +02:00
jeroendedauw
430b31415f Replace remaining Array occurences with array
Change-Id: Id7c2fdd6814a8239acbe050d857b56350e691a49
2012-10-05 16:11:54 +02:00
Chad Horohoe
99556232ae Remove completely broken test
Change-Id: I6a9897a533b0d57dab9b65d6100e267a73c710ed
2012-09-26 17:04:36 +00:00
Tim Starling
343cbf7463 Add an API log
During incident response, it was not possible to tell what API modules
were being requested and by whom, since the action parameter is often
posted. This change logs the API parameters whether they are posted or
sent in the query string.

I did try to get the API parameters from the module, but that turns out
to be difficult. Modules create submodules (generators, page sets) as
local variables, which are created in a procedural style and destroyed
before logging is done, so there is no easy way to query them for
parameter lists after execution completes.

In ApiOptionsTest, use a real ApiMain object like all the other API test
cases, rather than a mock object. Otherwise the test fails.

Change-Id: Idc786007fe61811d1874f29b5ce4762dd97b1847
2012-09-24 21:22:09 +00:00
daniel
a1fb3de7d2 Clear token cache when resetting session.
ApiTestCase resets global session data in setup, invalidating any existing cookies.
ApiQueryInfo caches all tokens, these need to be cleared out so tokens are re-generated
to match the fresh session.

Until now, individual tests have been doing that, but there's no not to do this per
default.

Change-Id: Icefa362190c2e7d87d09bda30079255741824f55
2012-09-24 15:07:36 +02:00
daniel
63f42295c3 Don't assume main namespace contains wikitext
Change-Id: Ie5bb593f850ab97b2e63f064e3fc52bc17edfdd1
2012-09-20 16:18:30 +02:00
daniel
b6b686c13b merged master
Change-Id: I0ef7c7f33a5dc5855f38b20c03ddc5306f38ec66
2012-09-19 12:34:10 +02:00
Siebrand Mazeland
59ec5a325c Move api/ApiTestUser.php to TestUser.php and make available in MediaWikiTestCase class.
* Renamed class ApiTestUser to TestUser.

Change-Id: I1c3c659c3ba5c54a314d879132f760008983372d
2012-09-13 18:40:23 +00:00
daniel
2bced58af3 Make EditPage fail on non-textual content.
Change-Id: Ida542340cab75de2540632c8116d8ebe074522cb
2012-09-12 13:43:52 +02:00
daniel
9994968774 merged master
Change-Id: Ib2b879c4daa17401eeeb50767c0e5a54254855c3
2012-08-29 15:20:15 +02:00
Daniel Kinzler
392af46809 Revert "merged master"
This reverts commit 67bfdc7a68
2012-08-29 13:14:49 +00:00
daniel
67bfdc7a68 merged master
Change-Id: Ib2b879c4daa17401eeeb50767c0e5a54254855c3
2012-08-29 12:06:38 +02:00
daniel
a1f145591b EditPage cleanup - parser errors, etc
Cleaned up EditPage, removing and fixing comments etc.

The most prominent changes are:
* improved handing for parse errors
* improved handling for image redirects
* better readability because one huge try/catch block was removed

Change-Id: Ie33720922eb05dda89a22ca1f5f0cba4b1d31129
2012-08-28 16:38:02 +02:00
jeroendedauw
38c7f444e1 Use __DIR__ instead of dirname( __FILE__ )
We can now do this since we finally switched to PHP 5.3 for MW 1.20 and get rid of the silly dirname(__FILE__) stuff :)

Change-Id: Id9b2c9cd2e678197aa81c78adced5d1d31ff57b1
2012-08-27 21:45:00 +02:00
daniel
78b4f237ef very basic test for ApiEditPage
Based on the generic Api logging system in APITestCase.

Change-Id: I28c0bd41f585cca199fdef9a78e60ef66625d37f
2012-08-27 13:56:52 +02:00
daniel
29719f846b merging latest master
Change-Id: I36b7f2f63ab8c08f8412d521dc68ea45c8b67711
2012-08-20 16:55:28 +02:00
Reedy
b7ce0372b0 Merge "Fix ApiWatchTest" 2012-08-02 16:26:37 +00:00
daniel
d87135d706 merged master
Change-Id: Iad12ee382d6aeb1fab6fefb611d290b74865ea4b
2012-07-23 22:07:18 +02:00
Platonides
de01120467 Disable unneeded database requisite of generateRandomImages.php
Change-Id: I56a2d7baa21a6082e088db3e6a41381b92168eed
2012-06-26 19:02:55 +02:00
daniel
436b2d37ad make ApiEditPage aware of content model and format.
Change-Id: I2ec9a8b38b10eecf47a51855ae8010a91c8acc90
2012-06-25 16:09:08 +02:00
daniel
b0fd13578e merged master
Change-Id: I0028e0ae01c7d025e60691cb4ad9d04869b9778c
2012-06-25 13:39:29 +02:00
daniel
d9bd44c4eb Fix ApiWatchTest
Based on fixes for session and token handling.

Change-Id: I626855c757b8d2a3ac10f87ff82fedc6c077c99e
2012-06-22 23:57:55 +02:00
daniel
62ac6f3722 Make session persist between calls to doApiRequest
Make sure the global session data in $wgRequest is used for doApiRequest
per default, and return it's content among with the request's results.

Previously, an empty session was used per default, and the local context's
session data would get out of sync with $wgRequest.

This change allows for the following assumptions to hold in test cases:

* within the same function, changes to the session made by one api call
  will be visible to subsequent api calls.

* the session data returned by doApiRequest is the actual status of the
  session as manipulated by the api call. This session data can be passed
  to subsequent api calls.

Note that the session data is still reset for every call to a test
function.

Change-Id: Ia20cf0ccfcdca736dd5da3444b14fbdd1c5def46
2012-06-22 23:22:34 +02:00
daniel
7d3d38748a Fix session handling in API test cases.
* Use the API module's own context to check edit tokens.
* Use the global session if none is provided to doApiRequest.
* Fix ApiFlockTest to not pass an empty session, so the tokens from
  the global request can be used.

Change-Id: I2bff2390f43beb984b1b451bcf4e41271b2f054f
2012-06-21 22:29:19 +02:00
Szymon Świerkosz
a6cd69d83a (bug 18195) Allow changing preferences via API
I have created an API module for changing the preferences.
It allows resetting preferences (reset argument) and bulk changes
of preferences (change argument) in a format:
name1=value1|name2=value2

The change argument has a limitation imposed by the current API
implementation as it cannot accept | in values. There is
available a pair of arguments optionname and optionvalue, the
latter accepts values with |.

I have created optionstoken parameter in meta=userinfo to provide
a token. There is already preferencestoken there, but I would
like to have a consistent naming.

Change-Id: I0d6c654a7354ba77e65e338423952a6a78c1150f
2012-04-20 16:56:27 +10:00
Reedy
a521673dc2 Merge "tests related to API block action and its gettoken" 2012-04-06 15:38:25 +00:00
Reedy
cdbfe8db86 tests related to API block action and its gettoken
Add tests for:
 - action=block and action=unblock gettoken
 - attempting to block or unblock a user with no token passed.

Patchset2: use a provider to have tests run against both 'block' and
'unblock' actions.

Change-Id: I686348ff4e2fe419c556acea2fa59dd203dc9440
2012-04-03 22:27:57 +02:00
Reedy
6eb4171a07 Un-marking testMakeNormalBlock as broken...
Change-Id: I5960d71409dc6338249817bc67de5227845dc3d8
2012-04-03 21:16:40 +01:00
Antoine Musso
633c4542c6 disable broken ApiBlockTest::testMakeNormalBlock()
That test has probably always been broken and use an invalid token. The
bug tracking brokenness is http://bugzilla.wikimedia.org/35646

Since the broken test is merged in master, that block the integration of
Jenkins and Gerrit by having any submitted patchset to be reported as
failling :-(

Root cause is https://gerrit.wikimedia.org/r/3434 which made the
Block/Unblock API to actually verify the token previously always
considered valid (bug 34212).

Change-Id: Iecf6b083163c214c734360b2f6d9b4bed8af07dc
2012-04-03 15:08:57 +02:00
Antoine Musso
da8ba7c544 Regroup all API tests in the 'API' PHPUnit group
That will let us tests all the API tests by using PHPUnit group
filtering such as:

 php phpunit.php --group API

Also cleaned some whitespaces

Patchset-4: skipped files that had only whitespace changes

Change-Id: I51e03d910521b061f505e3a9b11a08c7b95f1538
2012-04-02 16:55:31 +02:00
Max Semenik
66cb810778 Test that verifies uniqueness of query module prefixes 2012-02-24 18:49:48 +00:00
Antoine Musso
c9c00ef397 disable ApiUploadTest
ApiUploadTest gives inconsistent results which trigger false alamrs to all
the ops team. We are disabling those tests for now.

See https://bugzilla.wikimedia.org/26169
2012-02-06 21:39:56 +00:00
Antoine Musso
fc6bc233be Fix doxygen docs before REL1_19 branching 2012-02-01 20:53:38 +00:00