Commit graph

256 commits

Author SHA1 Message Date
Brad Jorsch
82fb734740 Skip ApiFormatWddxTest under HHVM
wddx_serialize_value() fails to escape the ampersand under HHVM. It has
been fixed upstream https://github.com/facebook/hhvm/issues/4283 but
has not been released yet.

When running under HHVM and detecting the ampersand is not escaped, skip
the test..

Bug: T75531
Change-Id: Ia58ec20b4daf78cd90da1bdf8af6cac86015c5d7
2014-12-18 16:57:49 +00:00
umherirrender
b52e1fe2f7 Destroy session after running api tests
ApiLogin and ApiCreateAccount calling wfSetupSession, which leaks a
session over the test.
The test RequestContextText needs a clear session to work, so the api
tests should avoid leaking the session.
Doing this in the ApiTestCase because some tests calling ApiLogin over
FauxRequest and that also starts a session.

Change-Id: Icf5cb4d4a2c24c96698cac5bf32147c0c9149ef3
2014-12-16 20:50:35 +00:00
umherirrender
be3f554c95 Fix check for function wddx_deserialize in tests for hhvm
The @requires just works for other tests, not for php functions.

This fixed a failure for the hhvm test server:
1) ApiFormatWddxTest::testValidSyntax
Failed asserting that null is of type "array".

Change-Id: Iadd8238ce62d4803cdf56508886ad016f8ac8f1d
2014-12-10 22:25:25 +00:00
umherirrender
bae165bb9f Add tests for class names in the api main and query module manager
This found wrong class names for api modules

Change-Id: If1125cd5fa4ed836fe15fc79480d78ebd899be4e
2014-11-27 05:24:48 +00:00
umherirrender
aa09312ac0 Remove require_once from some tests by adding classes to TestsAutoLoader
Change-Id: If6d0a72acb98e0971fcce2facb239b67cbe639a5
2014-11-12 20:24:08 +01:00
umherirrender
f92ebf8aab Remove double semicolon
Change-Id: I96b6210d24ee110327feef01907d81630c9fb330
2014-10-30 17:58:21 +01:00
jenkins-bot
509d2fa1b2 Merge "Fix setting hooks in ApiQueryTest" 2014-10-23 17:56:57 +00:00
umherirrender
1c0235513e Use mergeMwGlobalArrayValue in ApiOptionsTest
Change-Id: Ic0a9ceab9e8fad7c408e32ba110a3543ef28b59e
2014-10-23 17:42:34 +00:00
jenkins-bot
0909973197 Merge "API: Warn when neither rawcontinue nor continue are given to action=query" 2014-10-22 16:16:25 +00:00
jenkins-bot
5309ad3df1 Merge "Allow for time-limited tokens" 2014-10-22 13:13:20 +00:00
Brad Jorsch
af11268d05 API: Warn when neither rawcontinue nor continue are given to action=query
The default behavior for continuation for action=query will be changing.
Warn clients that they will need to update.

Change-Id: I52d048040e898a0c9630e2aed071b339ec12de42
2014-10-21 19:16:05 +00:00
Matthias Mullie
0f07cb138e Add $tablesUsed for ApiTestCase
This test creates 2 TestUser objects on setUp. Due to recent
changes in TestUser, this isn't even possible anymore if
MediaWikiTestCase hasn't setupTestDB() properly.

Change-Id: Idadfb94bd48270ad085cfece2bf17024ed9d97cd
2014-10-20 13:57:13 +02:00
Brad Jorsch
b1e4006b44 Allow for time-limited tokens
Tokens returned from User::getEditToken will now include an encoded
timestamp (and therefore will be up to 16 bytes longer).

User::matchEditToken and User::matchEditTokenNoSuffix are gaining a
"maxage" parameter: when specified, only tokens with an encoded timestamp
within $maxage seconds will be accepted.

Change-Id: Ic4cf148cc1fa9d0561aac0bd2d68a09c7851896d
2014-10-17 17:07:38 -07:00
umherirrender
d52b393592 Fix setting hooks in ApiQueryTest
Also fix the comment

Change-Id: I4245a5f515980c743965996aecc67b42b616b50c
2014-10-15 17:50:36 +02:00
Brad Jorsch
d25cb99202 API: Clean up and internationalize pretty-printed output
The syntax highlighting applied to the XML format is not all that great,
and applying it to other formats is just wrong. Instead of doing it
ourselves, let's just add a hook and let Extension:SyntaxHighlight_GeSHi
do it for us.

But for that to work, we have to add RL support to the pretty-printed
output, which means OutputPage. At the same time, lets internationalize
the header.

Bug: 65403
Change-Id: I04b1a3842abdf1fb360c54aa7164fc7cd2e50f4b
2014-10-13 16:17:37 -07:00
Brad Jorsch
af0121f9c8 API: Add "batchcomplete" to simplified continuation result
With the query-continue style of continuation, it's easy for the client
to know when a batch of pages from the generator is complete. The
simplified continuation should support this too, and without requiring
the client to parse the "continue" result property.

Change-Id: Ie407e2e27c017e8813143859cc58674553bc641b
2014-10-13 15:26:45 -07:00
Brad Jorsch
df457f3809 API: HTMLize and internationalize the help, add Special:ApiHelp
The existing API help, formatted as basically a plain-text document
embedded in XML and with a little bolding and a few links
syntax-highlighted in after the fact, works ok for experienced programmers
but isn't at all newbie-friendly. Further, all the help is hard-coded in
English, which isn't very friendly to non-English speakers.

So let's rewrite it. The help text is now obtained from i18n messages
and output in HTML, with the default display consisting of help for a
single module with links to help for other modules. This, of course,
necessitates deprecating many of the existing help-related methods and
hooks and replacing them with new ones, but backwards compatibility is
maintained for almost everything.

At the same time, action=paraminfo also needs to support the
'description' and other help-related fields being output in wikitext or
HTML, and I11cb063d (to access all modules via the 'modules' parameter
instead of having 'modules', 'formatmodules', 'querymodules', and so on)
is folded in.

And we also add Special:ApiHelp. When directly accessed, it simply
redirects to api.php with appropriate parameters. But it's also
transcludable to allow up-to-date API help text to be included within
the on-wiki documentation.

Note this patch doesn't actually add i18n messages for any API modules
besides ApiMain and ApiHelp. That will come in a followup patch, but for
the moment the backwards-compatibility code handles them nicely.

While we're messing with the documentation, we may as well add the
"internal" flag requested in bug 62905 (although the 'includeinternal'
parameter it also requests doesn't make much sense anymore) and a
"deprecated" flag that's needed by several modules now.

Bug: 30936
Bug: 38126
Bug: 42343
Bug: 45641
Bug: 62905
Bug: 63211
Change-Id: Ib14c00df06d85c2f6364d83b2b10ce34c7f513cc
2014-10-10 10:46:39 -04:00
Kunal Mehta
26ded3a545 Add @covers tags to ApiModuleManagerTest
Change-Id: Iaac773576a663d2f426632ad95f94b3556ef15b2
2014-09-08 10:52:10 +00:00
Kunal Mehta
ad9bb085a6 Add ApiModuleManager::getClassName()
In cases where an extension has multiple API modules that
have the same exact factory requirements, it would let them
use the same factory function and check with the module manager
what the class name to construct should be. This is already possible
using getNamesWithClasses, but this makes it much more
straightforward.

Change-Id: I889e3e6f15907896a8df376913125d903debe984
2014-09-08 02:06:33 -07:00
Kunal Mehta
a1a78972a0 Add a test for ApiFormatNone
Because lolz.

Change-Id: I9c472131746a722737300b7d2d2291c70f80bb2e
2014-08-22 23:27:51 -07:00
jenkins-bot
6353df13f7 Merge "Change @return to start with type" 2014-08-22 23:20:36 +00:00
Kunal Mehta
6f7e29a773 Make ApiModuleManagerTest::testAddModules un-risky
Change-Id: Idbea51cf45fc95676759e5ac9abb342701e5b551
2014-08-21 22:47:24 -07:00
umherirrender
cd80906d4a Change @return to start with type
MediaWiki default is "@return type Description", so set a type after
return and start the description with a capital letter. Also use the
more common spelling of boolean.

See http://phpdoc.org/docs/latest/references/phpdoc/tags/return.html for
more about @return

Change-Id: I4e5198822fe92836f9cef9918a9fc1a1a1e0a043
2014-08-20 20:35:41 +02:00
umherirrender
6b4c44c2db Add missing @param to function docs
Change-Id: Ib26407bc55dff7969d8a3b1e2ae51751b202d8fb
2014-08-18 16:24:59 +00:00
addshore
dcaa81c743 Fix phpcs errors in tests dir
Change-Id: I79fa3b8f92e958f4a0dc4fe892703f37d711ca95
2014-08-17 22:57:09 +01:00
addshore
dfd4c8c2a2 Use public instead of var in classes
Change-Id: I16d1714ba37667d8c9c7c79a765c7199ea0023e4
2014-08-17 21:07:37 +01:00
umherirrender
ab20f80116 Fixed spacing
- Added newline at end of files
- Added/Removed spaces around comma, parentheses and negation
- Added space after function word

Change-Id: I2dd338153aeb5f07702ba015945e95c7d0ae673b
2014-08-13 20:14:56 +00:00
umherirrender
21e0c1c533 Correct variable names in @param to match method declarations
Some @param have a typo in the variable name,
some @param's were in wrong order.

Change-Id: Ie25806831027112b398f6f4a909c59147ac3a5fa
2014-08-13 21:48:28 +02:00
Bartosz Dziewoński
b43624d3e0 ApiTestCase: Avoid notices about undefined indices
We're going to throw an exception right away here, but this is still
problematic because of PHPUnit:

"By default, PHPUnit converts PHP errors, warnings, and notices that
are triggered during the execution of a test to an exception."
http://phpunit.de/manual/4.2/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.errors

Also change the exception message to something saner.

Change-Id: I766c36076d34428035be78bbb3cf36cc572b565b
2014-08-13 19:47:57 +02:00
umherirrender
26837cd280 Cleanup some docs (tests)
- Swap "$variable type" to "type $variable"
- Fixed spacing inside docs
- Makes beginning of @param/@var/@throws in capital
- Changed some types to match the more common spelling

Change-Id: Ia041964250d8b7c0349d79dc9b131c5b8696e795
2014-08-11 20:06:52 +02:00
rillke
c31fbf073e Unify the spelling of MIME in documentation
Writing MIME as written in Wikipedia and some documentation clean up.

Change-Id: I9dfc36d2bf55d72d9374c4075bd6d45eef0415a4
2014-08-07 23:38:45 +02:00
daniel
baa11f7430 Allow factory functions for creating API modules.
This enables factory functions to be registered for API modules,
in addition to the module class itself. This allows modules to
use proper dependency injection via the modules constructor.

Example:

  $wgAPIModules['foo'] = array(
    'class' => 'ApiFoo',
    'factory' => function( $main, $action ) { ... }
  )

Change-Id: Ieb85493a7765f466317f5fa74b0b0e262220deab
2014-08-06 22:58:14 +02:00
Kunal Mehta
a83669c745 Tests for API action=revisiondelete
Change-Id: Ida8acb8a58fe3e871ac30727d90e22fff04f488d
2014-08-04 16:00:16 +00:00
csteipp
fe32899523 SECURITY: Prepend jsonp callback with comment
Mitigate CVE-2014-4671 for unpatched flash players

Bug: 68187
Change-Id: I2f46e623c1f541dbbafb6e8333e0929055098b15
2014-07-30 20:26:39 +02:00
jenkins-bot
825f0701d8 Merge "Remove text output while running tests" 2014-07-27 12:21:13 +00:00
Niklas Laxström
d670850aab Remove text output while running tests
Change-Id: I65d9ee70adfe53267b7c0acd59fce43d4683777b
2014-07-27 12:10:31 +02:00
Étienne Beaulé
c3fcaba02f Enable the creation of empty pages
This change enables the direct creation of empty pages without needing
to use a work-around (such as "{{subst:ns:0}}"). A warning is added as
the message "blankarticle" to request confirmation that the empty page
was meant to be blank. A automatic edit summary has been added when
creating a blank page. The message is: "autosumm-newblank."

The API has been updated to permit the creation of empty pages, when
"text" is null, but not non-existant.

Unit tests have also been added to test these features.

Bug: 57238
Bug: 65206
Change-Id: I3457c36a909d1dbfaeed04a1f0568c69e0ef3386
2014-07-25 23:26:18 -04:00
umherirrender
4ee680a8b3 Fixed spacing
- Removed spaces after not operator (!)
- Removed spaces inside array index
- use tab as indent instead of spaces
- Add newline at end of file
- Removed spaces after casts

Change-Id: I9ba17c4385fcb43d38998d45f89cf42952bc791b
2014-07-24 11:53:04 +02:00
Chad Horohoe
f129b1baf9 Limit test leakage, $wgCapitalLinks expected to be true
Change-Id: I0f837d29595abefaebeb67d6cc62ea48838d626a
2014-07-07 16:54:35 -07:00
Timo Tijhof
820bb47490 ApiOptionsTest: Simplify hook restoration
Change-Id: I2afc35b45caf9ddfd34fb0bba0839987b7fb2ed4
2014-07-01 18:32:05 +02:00
jenkins-bot
166191535f Merge "Add tests for API's assert={user|bot}" 2014-06-16 01:33:24 +00:00
Adam Roses Wight
5971b2c39a API: Enforce section=new constraint when using 'redirect' mode
Finish implementation of the 'redirect' edit API parameter.  This flag
should only be used as a convenience when adding a new section, appending,
or prepending.  Any other usage must be done using the long-cut (fetch page,
determine if it is a redirect, follow redirects and edit the target page's
content).

This patch takes apart the "EditConflict_redirect" test, because it no
longer makes sense--unless you dear reader can figure out how to force an
edit conflict when only adding a section?

Bug: 24330
Change-Id: Ie3f7273c18e156da1e50e1a36aac2e5341710982
2014-05-22 16:08:22 -04:00
Thiemo Mättig
23632a4ecd Use precise ApiMain/ApiQuery type hints in all API modules
Which type is used depends on the ApiModuleManager responsible for
the API module. There are two managers, one in ApiMain and one in
ApiQuery. Both contain a list of API modules they instantiate.
Both use $this as the first parameter in the constructors of the
individual modules. There is no other regular way to instantiate the
modules, so we know the type must either be ApiMain or ApiQuery.

The lists don't intersect.

I would have prefered the naming scheme $mainModule for ApiMain
modules and $queryModule for ApiQuery modules but since this
doesn't add much I left the shorter variable names untouched.

Change-Id: Ie6bf19150f1c9b619655a06a8e051412665e54db
2014-05-16 11:07:23 -04:00
Siebrand Mazeland
e1d58d9071 Pass phpcs-strict on some test files (8/11)
Change-Id: I138c1f9bf2c3c7e9218d5fa29365e78b309fb459
2014-04-24 13:49:48 -07:00
Siebrand Mazeland
80a8a8e85c Pass phpcs-strict on some test files (5/x)
Change-Id: I690645cd8a9b1165dcc8271b201c695ea9391226
2014-04-24 18:51:45 +02:00
umherirrender
092cd8ee31 Fixed some @params documentation (tests)
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Also added some missing @param.

Change-Id: Ic8aaf0a93796b97d0fa4617c1f86ff59f4b36131
2014-04-17 20:43:42 +02:00
umherirrender
725d9d125d Removed unneeded spaces and colons in @param and friends
Also swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.

Change-Id: Ic36c8c7820a6c2d603f1138130670c6bf6a1ca59
2014-04-08 16:02:49 +00:00
Niklas Laxström
da73cf89d7 Fix order of expected, actual in some tests
Change-Id: Iabd431517586c06d411a0894e5d3621a4c4ddf05
2014-04-01 11:59:46 +00:00
addshore
9e85aabe52 Cleanup a bunch of tests and add todos
Change-Id: Iae44427edee3ed2a62abdb5a8f5d9f1ed2e7d660
2014-03-09 15:12:45 +01:00
jenkins-bot
47e233e8fa Merge "Use setMwGlobals in ApiEditPageTest" 2014-03-08 05:33:30 +00:00