Commit graph

33 commits

Author SHA1 Message Date
Umherirrender
167fb2a979 unit tests: Use MainConfigNames constant to refer configs
When creating ServiceOptions objects or fake HashConfigs use the
constant to refer the config name

Change-Id: I59a29f25b76e896c07e82156c6cc4494f98e64cc
2022-08-17 22:33:58 +02:00
Bartosz Dziewoński
990fd8f0b2 EditPage: Disentangle edit summary and section title
Previously, `$this->summary` was used for two different purposes.
Usually it was just the summary. But when `$this->section` was 'new',
then it was actually the section title most of the time – unless
`$this->sectiontitle` was also set (in which case it took priority),
and until it was replaced by the real edit summary (near the end of
the processing, after copying the section title to the page content
and before saving changes).

Unsurprisingly some of the code didn't handle this duality correctly,
causing T191722 and T311533.

Now `$this->summary` is always the summary, and when `$this->section`
is 'new', then `$this->sectiontitle` is always the new section title.

The only place where this duality remains is in the input attributes
and query parameters, where 'wpSummary' is still used for both the
summary and the section title inputs (only one of them can appear,
depending on whether `$this->section` is 'new'). It would be an
unreasonable backwards-compatibility break to change this, and the
code handling this is somewhat isolated from the rest of the logic.

Bug: T191722
Bug: T311533
Change-Id: I5313ca9a045d112ece390b011a34192220e2abc1
2022-07-19 09:56:05 +00:00
DannyS712
ab43a98dd6 CreationPermissionConstraintTest: remove unused $title
Follow-up: I12a2f71f52a1ba7e94bf325621e62ed0e255601b
Change-Id: Idb7c9afefb2faea5da61d52fa5ff81bf1522adde
2022-06-29 23:34:57 +00:00
Daimona Eaytoy
2012fe3b2b Improve error messages in EditFilterMergedContentHookConstraint
Use multiple error boxes instead of a wikitext list of error messages,
as the latter has several issues (as reported on phab). Also, remove the
edit-error-* messages as they don't seem to add any value. Also, don't
use the passed-in context, inject what the class actually needs instead
(but keep the context for the hook).

Bug: T303060
Bug: T230229
Change-Id: I2806e57826e7ab062b45dd1d9972b05fd6baeafb
2022-03-22 14:53:02 +01:00
daniel
e239b02a5e Add convenience methods for asserting status.
This ensures that assertions work in a uniform way,
and provides meaningful messages in cause of failure.

Change-Id: Ic01715b9a55444d3df6b5d4097e78cb8ac082b3e
2022-03-16 22:44:25 +01:00
DannyS712
bea9165e61 Tests: use UserIdentityValue instead of mock User objects
- ParserMethodsTest for creating ParserOptions
- SimpleAntiSpamConstraintTest

Change-Id: I5f8ffbee5ee1ff8e08cae7e6ace30ff7b186539c
2021-05-03 15:41:48 +00:00
jenkins-bot
89b00fcfbe Merge "Remove unnecessary ->equalTo() from tests" 2021-04-23 14:43:04 +00:00
Thiemo Kreuz
c1ee8250e9 Remove unnecessary ->equalTo() from tests
This is the default anyway when using ->with(). The test code
becomes so much more readable without this, I would like to
argue. Let it just say "with these values".

Because of the way I split my changes into multiple patches
there are a few other changes in this patch I could not split,
e.g. removing unnecessary ->any(). This is the default anyway
and doesn't make the test more specific.

Change-Id: I34990799fa9258ba8dc64c7e78ec43f7903b7681
2021-04-23 12:02:42 +02:00
Thiemo Kreuz
f10f4e05de Remove some meaningless $this->equalTo() from tests
This is the default behavior anyway when using ->with().

Change-Id: I64b6474280eb7da122eb22fc0afa28cca81e96c5
2021-04-22 10:47:54 +02:00
Daimona Eaytoy
535d7abf59 phpunit: Mass-replace setMethods with onlyMethods and adjust
Ended up using
  grep -Prl '\->setMethods\(' . | xargs sed -r -i 's/setMethods\(/onlyMethods\(/g'

special-casing setMethods( null ) -> onlyMethods( [] )

and then manual fix of failing test (from PS2 onwards).

Bug: T278010
Change-Id: I012dca7ae774bb430c1c44d50991ba0b633353f1
2021-04-16 20:15:00 +02:00
Func
278e195ab7 Set $status->value in EditFilterMergedContentHookConstraint::checkConstraint() properly to display error message
When hook handler return false and use $status->fatal() to put up a error,
we should set $status->value to self::AS_HOOK_ERROR_EXPECTED to show edit form
and display error message.

Bug: T273354
Change-Id: I02d643c5cb1978da8ab749856493d75137b6cb02
2021-04-15 22:01:30 +02:00
DannyS712
fb22076f1f Update creation of edit constraints following switch to Authority
No longer need the factory for many of them

Bug: T271977
Bug: T157658
Follow-up: I12a2f71f52a1ba7e94bf325621e62ed0e255601b
Change-Id: I5019ea46bccb1f23643424c2798061a25eb3f623
2021-03-22 23:11:46 +00:00
Petr Pchelko
595d605e34 Convert EditConstraints to Authority
Bug: T271977
Change-Id: I12a2f71f52a1ba7e94bf325621e62ed0e255601b
2021-03-03 17:12:07 -07:00
Thiemo Kreuz
2f66b3754f tests: Remove @param docs from test code that just repeat the signature
These are not only 100% identical to the actual code, but also:
* It's error-prone. Some are already wrong.
* These test…() functions are not meant to be called from
  anywhere. What is the target audience for this documentation?
* There is a @dataProvider. What such @param tags actually do is
  document the provider, but in an odd place. Just looking at
  the provider should give the same information.
* The MediaWiki CodeSniffer allows to skip @param when there is
  a @dataProvider, for the reasone listed.

Change-Id: I0f6f42f9a15776df944a0da48a50f9d5a2fb6349
2021-01-21 03:41:23 +00:00
jenkins-bot
12e73d4beb Merge "Add tests for EditConstraintFactory" 2020-12-26 20:27:30 +00:00
DannyS712
7ef44935d8 Add tests for EditConstraintFactory
Bug: T157658
Change-Id: I175afe4d1217f9e57aaa8e8d8f93c70736dac801
2020-12-26 03:30:57 +00:00
DannyS712
e8b332eadb Bring SpamRegexConstraint test coverage to 100%
Bug: T157658
Change-Id: I89d08059937d2a84de0cbc53fd4ac56153018e40
2020-12-26 03:11:55 +00:00
DannyS712
c4b1396e0d ImageRedirectConstraint: accept Content objects
More common interface for constraints

Bug: T157658
Change-Id: Ia50c3fb647ed803a69f5e4511047f1ab88e43bf7
2020-12-09 21:41:13 +00:00
DannyS712
f75f3c75ea UserRateLimitConstraint: move detection of content model change to constraint
A step towards a more common interface between the different
constraints, detect whether the content model changes within the
UserRateLimitConstraint rather than relying on EditPage to inject
the answer

Bug: T157658
Change-Id: Ifa35cbabe74df458784a10b3d2815a1e8e7dcdf8
2020-12-01 23:08:47 +00:00
DannyS712
883199bc98 Move more logic into edit constraints
Specifically, remove the conditional processing of
ContentModelChangeConstraint and ChangeTagsConstraint in
favor of early returns within the constraints

Bug: T157658
Change-Id: I377c0e3d9611d2da0a2d0f9bca055d65a1bec7e6
2020-12-01 18:44:03 +00:00
DannyS712
f14c2cb8ef Add AccidentalRecreationConstraint
Bug: T157658
Change-Id: Ia9346ceb06ca060cd6e953b1d5b358aabc853eb3
2020-11-16 22:36:54 +00:00
DannyS712
f10795c3cd EditPage: Add two more constraints
- AutoSummaryMissingSummaryConstraint
- SelfRedirectConstraint

Bug: T157658
Change-Id: I0bc29d81ec3df6228a04f41df66b53b113792e38
2020-11-11 23:15:42 +00:00
jenkins-bot
2d9b7a99e2 Merge "EditPage: Move $sectionHeadingToCheck handling to SpamRegexConstraint" 2020-11-11 02:20:08 +00:00
DannyS712
1f05a9799b EditPage: Move $sectionHeadingToCheck handling to SpamRegexConstraint
Cleaner and simpler if the constraint takes care of determining
how to handle the section title

Bug: T157658
Change-Id: I45de1aca77fe1ddcd3d94b6ca964328d9911b440
2020-11-11 00:51:58 +00:00
DannyS712
3b0c5e579b Move EditPage::runPostMergeFilters to a constraint
Bug: T157658
Change-Id: I071163d6d2538948693527c36e8e59281f528402
2020-11-10 23:34:20 +00:00
DannyS712
d7a737fca9 Rename MissingSummaryConstraint to NewSectionMissingSummaryConstraint
There is another place a missing summary is
checked, with different parameters and under
different conditions

Bug: T157658
Change-Id: I988a34a2a130244e6e250259b66727ef979a91ec
2020-11-09 22:59:20 +00:00
DannyS712
44418378e0 EditPage: Factor out more constraints
CreationPermissionConstraint
DefaultTextConstraint
MissingCommentConstraint
MissingSummaryConstraint

Bug: T157658
Change-Id: I55cf336ff6dfb990045e43e6dcd7437a241a46b2
2020-11-04 21:29:54 +00:00
DannyS712
b075dc775f Minor tweaks to edit constraints
- EditConstraintRunner debug logging uses `info` for the failed constraint
- Differentiate between the two PageSizeConstraints in debug logs
- Add or tweak some comments
- Normalize SpamRegexConstraint logs

Bug: T157658
Change-Id: I9d0e8d48a104320f29831357b45a4003942b04fd
2020-11-03 00:35:19 +00:00
DannyS712
cc8bab4111 Add PageSizeConstraint and ChangeTagsConstraint
Bug: T157658
Change-Id: I2c7b4f77cd07c72b42eaeb7e37095461c92b367a
2020-10-28 16:03:02 +00:00
DannyS712
05ae763ba2 EditPage: Migrate more checks to constraint
Add
- ContentModelChangeConstraint
- EditRightConstraint
- ImageRedirectConstraint
- ReadOnlyConstraint
- UserBlockConstraint
- UserRateLimitConstraint

Additionally:
- Split EditPageTest into a separate file for
all of the constraints being tested

- Add a helper EditConstraintTestTrait

- Add debug logging for EditConstraintRunner for
the result of each constraint

- Changed the order of some of the checks, which
may result in a different failure code if multiple
checks were going to fail, but shouldn't change the
overall result of whether an edit fails or not.

Bug: T157658
Change-Id: Ib8f8b62b9928544e5559c96d82bf850dd8cf9b05
2020-10-26 22:01:05 +00:00
DannyS712
e50dacf78c EditPage: Move spam checks to SpamRegexConstraint
Bug: T157658
Change-Id: I06ef5796f9da7b0e8555768ec6fd128b4f778294
2020-10-21 22:43:01 +00:00
DannyS712
dc32b15d8d Add EditConstraintFactory, migrate SimpleAntiSpamConstraint
Factory is a service in ServiceWiring, given the number
of dependencies that will eventually be needed, but is
internal and has no corresponding method in MediaWikiServices

Bug: T157658
Change-Id: I801a09f5133bed14da10c64a42ca0658024357d3
2020-10-21 14:36:01 +00:00
DannyS712
1aa3a1395c Introduce EditConstraint system, migrate unicode check to constraint
This is the start of "Phase 1" of the migration described in
T157658#6191234. For now, only a single constraint, the
requirement that EditPage::$unicodeCheck match the expected
value, is moved to the new system, in the UnicodeConstraint class.

Both the EditConstraintRunner and the new UnicodeConstraint
have 100% test coverage with pure unit tests.

Bug: T157658
Change-Id: I4fc806ec0fd631e265948a59244295eebec691fa
2020-10-20 14:09:26 +00:00