Commit graph

358 commits

Author SHA1 Message Date
Fomafix
f90af6c157 Use MediaWikiIntegrationTestCase::getConfVar in tests
Change-Id: I3a99f24da3d572281b49a8a8b92e006fde3eaa41
2024-08-06 12:52:34 +00:00
Wendy Quarshie
b5c9e740ed getParamSettings prohibited from using array type
Bug: T368133
Change-Id: I2af5880fdf4d6fb3f8047e24e3a3d69a08a433f7
2024-07-25 10:09:02 +00:00
Wendy Quarshie
53b9268e57 add structure test that checks if param schemas are valid
Bug: T368133
Change-Id: Ib0e881d13b4709bc31831e1bc7d88ad6041589a1
2024-07-23 00:25:55 +00:00
thiemowmde
26e54d49ab Merge @dataProviders in AbstractSchemaValidationTest
The two test functions are identical. They can as well use a single
@dataProvider to do the same as before. No coverage is lost.

Change-Id: I865b75f8e14e016ad4aa7ffdcf9e4023387b40bb
2024-07-19 10:18:29 +00:00
jenkins-bot
aef29a83c3 Merge "param-settings: Remove backward compatibility code from default" 2024-07-10 17:32:21 +00:00
Atieno
2b31f4c46f param-settings: Remove backward compatibility code from default
We no longer have to check for 'body' PARAM_SOURCE from within getParamSettings

Bug: T367394
Change-Id: I16075fde2db6ea47f61d1d2df1e07a4ef46b537b
2024-07-10 19:55:08 +03:00
Ebrahim Byagowi
fab78547ad Add namespace to the root classes of ObjectCache
And deprecated aliases for the the no namespaced classes.

ReplicatedBagOStuff that already is deprecated isn't moved.

Bug: T353458
Change-Id: Ie01962517e5b53e59b9721e9996d4f1ea95abb51
2024-07-10 00:14:54 +03:30
jenkins-bot
286f49b678 Merge "Add Special:RestSandbox for exploring REST API" 2024-06-14 01:19:30 +00:00
Umherirrender
f27c2433bb tests: Use namespaced classes (2)
Changes to the use statements done automatically via script
Addition of missing use statement done manually

Change-Id: I4ff4d0c10820dc2a3b8419b4115fadf81a76f7a2
2024-06-13 23:21:02 +02:00
daniel
c01b7c7b4b Add Special:RestSandbox for exploring REST API
Special:RestSandbox presents a Swagger-UI interface for exploring REST APIs. The available APIs can be configured using RestSandboxSpecs.

For now, the default is to support no APIs, so the feature is disabled in production. In the future, it would make sense to expose the wiki's own REST API per default. The corresponding entry in $wgRestSandboxSpecs in LocalSettings.php would look like this:

	'mw' => [
		'url' => $wgScriptPath . '/rest.php/',
		'name' => 'MediaWiki REST API',
	]

Note that the spec URL may still change.

To also explore the endpoints exposed through RESTbase, we might add:

	'wmf-restbase' => [
		'url' => $wgServer . '/api/rest_v1/',
		'name' => 'Wikimedia RESTbase API',
	]

Similarly, we could expose a spec for endpoints on api.wikimedia.org, which could then be explored using the new special page.

NOTE: This adds a dependency on the swagger-ui npm library. See T325558 for the security review.

Bug: T362006
Change-Id: I1dd5ed82680a28f9c15136b446a2de0398525061
2024-06-13 21:40:36 +02:00
Wendy Quarshie
e7fd78aed1 Migrate MediaWiki.rest_api to statslib
Bug: T359364
Change-Id: I3646140ee8e16800c43f37958fc4b6ff00edcad6
2024-06-11 18:13:21 +00:00
Ebrahim Byagowi
16197f7d76 Add namespace and deprecation alias to TextContentHandler
This patch introduces a namespace declaration for the
MediaWiki\Content to TextContentHandler and establishes a class
alias marked as deprecated since version 1.43.

Bug: T353458
Change-Id: I2c72dacf28ee72fb70b15acdd81d0eb717ea949a
2024-05-20 05:34:31 +03:30
Func
4e6158a6fb Use constants provided by MainConfigNames for config names
Change-Id: I2f29ea8227da64b79b70fcce3decb6e34ea8da5b
2024-05-18 01:26:46 +08:00
daniel
91a1741787 Introduce Modules into the REST framework
Modules group together endpoints by a shared prefix. The idea is that each module has its own version and can generated self-contained self-documentation. This allows clients to have clear expectations about the endpoints of each module, no matter what wiki they are accessing. So far, each wiki may be exposing a different set of endpoints, with no way to provide a spec that describes that set of endpoints in a way that would be consistent across wikis and stable over time.

Bug: T362480
Change-Id: Iebcde4645d472d27eee5a30adb6eee12cc7d046b
2024-05-08 16:12:30 +02:00
daniel
97eae33cf5 REST: introduce getBodyParamSettings
Since we introduced support for the "body" PARAM_SOURCE in
getParamSettings, fields in the request body can be defined in the same
way that path and query parameters are defined. However, body fields are
treated separately by the framework, and the value of body fields are
available through getValidatedBody(), rather than getValidatedParams().

Because of that, it makes sense to have a method that returns the param
settings just for the body fields. This also allows handler classes to
override this method separately to specify body fields. That way, it
also becomes possible to have body fields that have the same name as
other parameters.

Bug: T362850
Change-Id: Ia85bf7e46c949a999052d91f1b0d7d579a880108
2024-05-07 17:35:36 +00:00
Bartosz Dziewoński
eae0341415 ResourcesTest: Test 'packageFiles' existence too
Also, reset logo settings to avoid failures caused by them.

Change-Id: I666141ff776d52e578f0cad4e00d3ec14e444b42
2024-04-16 17:58:03 +00:00
Wendy Quarshie
47f28ecd2d rest: use new body validation in creation and update handler
Bug: T358850
Change-Id: Idce281198604e0983f35776e03d607b7a280cc7e
2024-04-03 13:17:20 +00:00
jenkins-bot
9a24b39080 Merge "handler: Declare known sources in Validator" 2024-03-28 14:28:53 +00:00
Atieno
36c16d9c96 handler: Declare known sources in Validator
Bug: T358558
Change-Id: I0536e0d659b53c8f85bf7685beffbb5c5d027998
2024-03-28 16:42:59 +03:00
Derick Alangi
d372626b97
objectcache: Introduce ObjectCacheFactory MW service
ObjectCache is already doing a lot of factory pattern logic like
creating instances of the various BagOStuff, this should really be
the responsibility of the factory servicet.

This patch introduces a proper factory (ObjectCacheFactory) to handle
the responsibility of creating various instances of BagOStuff. Since
`newFromParams()` is a static function that gets passed in configuration
of $wgObjectCaches, that can stay that way (to keep supporting how we do
this in prod today).

Technical Breaking Change: `ObjectCache::makeLocalServerCache()` now has
a parameter and requires it but there are no callers of this method outside
MW core hence it is safe to change (and this patch update all callers) to
work correctly. Cache prefix is gotten from global state because sometimes
at this stage, the services container is not available.

Bug: T358346
Change-Id: I3179a387486377c6a575d173f39f82870c49c321
2024-03-19 12:38:39 +03:00
jenkins-bot
5d8b59b3ea Merge "ResourceLoader: Add module property skipStructureTest" 2024-03-13 22:09:01 +00:00
daniel
ae9d8e6054 Rest: Turn Rest\EntryPoint into a MediaWikiEntryPoint subclass
The idea is for all entry points to use the MediaWikiEntryPoint
base class, to improve consistency and testability.

Bug: T354216
Change-Id: I3678afe32c7c1a313d2dcb1808286c25ecd167eb
2024-03-12 14:37:18 +01:00
Tim Starling
c45ca5c0e3 ResourceLoader: Add module property skipStructureTest
Allow extensions with very special modules that can't be called in a
testing environment to skip ResourcesTest::testRespond().

Needed by If1186797fd047d4f for ext.wikisource.OCR.

Change-Id: Id02915d9633c2d8209d2ff2e60f6748095ec10fe
2024-03-11 17:01:16 +00:00
Matěj Suchánek
45390a52eb Clean up tests
Replace strpos with str_contains, str_starts_with, etc.
Fix spelling of "cannot" and other typos.

Change-Id: Ie52900b323f46d1978a9dd9ea3b17619b8942160
2024-02-12 09:25:25 +01:00
James D. Forrester
4bae64d1c7 Namespace includes/context
Bug: T353458
Change-Id: I4dbef138fd0110c14c70214282519189d70c94fb
2024-02-08 11:07:01 -05:00
Bartosz Dziewoński
e4c7272976 Change uses of getDBLoadBalancerFactory() to getConnectionProvider()
Update cases where one of the IConnectionProvider methods is called
immediately.

This doesn't really change anything, but I hope it helps promote
getConnectionProvider() as the common way to do this.

Follow-up to 8604c384f6.

Change-Id: Id0e7d02bab0c570343c2b1f03c70b44ee39db112
2024-01-22 22:27:45 +01:00
Alexander Vorwerk
cd6ac532ce tests: Replace usages of wfGetDB
Change-Id: I4f57ef084da8f0404e7bc2b4c466b7512e89670f
2024-01-18 00:12:59 +00:00
Daimona Eaytoy
605d12b9b3 Update tests for PHPUnit 9.6 (part 1)
- Avoid defining abstract test classes (ending in "Test")
- Avoid withConsecutive()
- Avoid getMockClass()

Bug: T342110
Change-Id: I131e0d85bd14e75aaebd6f212b2e64a45d4c73a2
2024-01-16 23:36:15 +01:00
James D. Forrester
273cc042ae ResourceLoader: Drop targets system, deprecated in 1.41
Bug: T340802
Depends-On: Ie936afed7042d5a4713b027c30d7487565a35eaf
Change-Id: Icad30d62301be5d7390ebdf34e818519e3fe56c4
2024-01-12 16:42:38 -05:00
Tim Starling
c55379d5b8 Deprecate and stop using Database::listViews()
Follow up Id9ab64fc8b09d9 which made listTables() consistently exclude
views.

Hard deprecate Database::listViews() which was only used for view
filtering of listTables(), conditional on database type.

Add an integration test for the new listTables() behaviour.

Change-Id: I3402a227f92b35192c6385c6aeab461de43b9f58
2023-12-14 14:35:36 +11:00
Umherirrender
388b0374fa tests: Use namespaced classes
Changes to the use statements done automatically via script
Addition of missing use statements and changes to docs done manually

Change-Id: Ib326ae1e5c8409a98398c721e8b8ce42c73bd012
2023-12-11 15:59:55 +01:00
Tim Starling
c5d182eb01 rdbms: Map PostgreSQL boolean values to MySQL-compatible forms
Also fix callers that were checking for t/f.

In CASE and COALESCE expressions, using 't' and 'f' did actually work,
because those literals have an unknown type and the other argument is
boolean, so PG coerces them to boolean. But it seems safer and clearer
to use the strongly typed literals TRUE and FALSE.

Bug: T352229
Change-Id: Ia01b76d3d6d2e048feac8e3118d9faff63a9ac56
2023-11-29 13:31:42 +11:00
jenkins-bot
800f1b19f4 Merge "Remove deprecated methods from Content interface" 2023-11-28 15:52:14 +00:00
James D. Forrester
4ed5ca48b1 Follow-up 71ff05267: Stop writing to tablesUsed in tests, now unnecessary
Bug: T342301
Change-Id: I5ea01f7ee103570165261bde0965c5b65e04c369
2023-11-21 09:02:48 -05:00
daniel
eb881d9b59 Remove deprecated methods from Content interface
Several methods on the Content interface had been deprecated in 1.35 and
1.36 in favor of corresponding methods on the ContentHandler base class,
to allow implementations of these methods to use proper dependency
injection. This patch removes backwards compatibility support for
subclasses that were overriding these methods.

Change-Id: I8e474a1cc4dec760a7f6db25e4b313392f3723b1
2023-11-21 12:40:11 +01:00
Timo Tijhof
c7e29903ac ResourceLoader: Remove ResourcesTest::testCommentedLocalFileReferences
* Unrelated to the ResourcesTest structure test as it isn't testing
  any of core's resources.

* Moved to the libs/Minify repo in change Ia9018a966a5325d.

Change-Id: If87035777633635fe4ad0f01790e7084f56f65a0
2023-10-20 19:47:50 -07:00
jenkins-bot
23e070865d Merge "Structure tests: Alter resources test to also check skinStyles" 2023-10-19 13:52:22 +00:00
Jon Robson
2dc2af1d28 Structure tests: Alter resources test to also check skinStyles
Bug: T348676
Change-Id: I804bda05901e38dc2b0ba12ec954aafcfed3fcbc
2023-10-19 13:09:59 +00:00
Ammarpad
88c21717e9 ApiStructureTest: Improve error message
Make message to actually communicate errors instead of
confirming success, this will reduce confusion like in T348934

Change-Id: I0b9cd5aed26be539db429a79c486217a69f74cdb
2023-10-17 09:53:37 -04:00
DannyS712
8b66151b73 Update references to config-vars.php
Moved to docs/ rather than includes/, update references and remove
from phan exclusion list

Follow-up: I32c034d05bf2354cdaa5f02d19031421cbae78a1
Change-Id: I8d71c29c8cbfa413db47066f00d71783259f0916
2023-09-23 03:37:44 +00:00
Amir Sarabadani
abbb4281cb tests: Migrate more cases to SQB
Bug: T344971
Change-Id: Ia69d82d6a6e623b9032240dc910fb47ff5887661
2023-09-21 18:30:37 +00:00
James D. Forrester
c1599c91b3 Namespace Config-related classes under \MediaWiki\Config
Bug: T166010
Change-Id: I4066885a7ea071d22497abcdb3f95e73e154d08c
2023-09-21 05:41:58 +00:00
James D. Forrester
1d0b7ae1e2 Namespace User under \MediaWiki\User
Bug: T166010
Change-Id: I7257302b485588af31384d4f7fc8e30551f161f1
2023-09-19 19:18:16 +00:00
Amir Sarabadani
5bd33d46ef Reorg: Move WebRequest to includes\Request
This has been approved as part of RFC T166010

Bug: T321882
Change-Id: I6bbdbbe6ea48cc1f50bc568bb8780fc7c5361a6f
2023-09-11 21:44:34 +01:00
jenkins-bot
f415979f2c Merge "Make all limits function as user rights." 2023-09-11 12:34:48 +00:00
daniel
9143649f48 Make all limits function as user rights.
In order to check all existing rate limits through Authority, the limit
keys must function as user rights. However, we do not want them to be
"normal" permissions, since they cannot sensibly be revoked, and they
should not clutter the user interface.

To solve this, we introduce the concept of "implicit rights", which are
always granted, but limitable.

Change-Id: I0ea6f29130da1d68d022d47d9221fe878bc9beae
2023-09-11 12:03:57 +00:00
Daimona Eaytoy
f83e611efa Make MediaWikiIntegrationTestCase::addCoreDBData a noop
The method should never be called directly, so make it throw an exception.
Nonetheless, mark it as deprecated and detect overrides in the
constructor, so that anyone who tries to override this method will see a
warning.

Fix the few tests that were relying on the existence of the test page.

Bug: T342428
Depends-On: Ic64ded5e2c0b59e7c888ece9566076058a125be4
Change-Id: I308617427309815062d54c14f3438cab31b08a73
2023-09-05 00:36:36 +00:00
Umherirrender
d7f959e528 tests: Use namespaced Wikimedia\Rdbms\IDatabase
Bug: T344536
Change-Id: I29c80fe2ac3effd5e9df4402c598dc33c1b23d5e
2023-08-20 15:18:57 +02:00
Daimona Eaytoy
c6bd1e842c Do not use UTSysop directly in tests
If the test expects the user to exist, it should use getTestSysop to
guarantee the account creation. Otherwise, use mocks or different
usernames to clarify that the username is not relevant to the test.

Change-Id: I87a27f01e1874af410e5d43e2e7fc3b10bb14eb8
2023-08-16 00:35:25 +00:00
Tim Starling
f2a5946375 ResourceLoader: wrap module definitions in functions
This is an intermediate step towards the linked bug, to help untangle
the performance impacts.

Bug: T343407
Change-Id: I086f173f811fb44683f4a67bf6bc415d7e27f593
2023-08-11 00:36:52 +00:00