133 Commits

Author SHA1 Message Date
Mahmoud Kassaei
95782015ba MDL-71258 questions: privacy support for settings defaults preferences 2021-04-30 10:14:38 +01:00
Eloy Lafuente (stronk7)
cfba0366db Merge branch 'MDL-70893-master' of git://github.com/marinaglancy/moodle 2021-03-18 00:23:26 +01:00
Eloy Lafuente (stronk7)
9fd6ac7c9d MDL-71036 phpunit: xml config - switch coverage info to new includes
This applies the "whitelist" => "include" changes to all the core
phpunit_coverage_info occurrences, so core won't emit any deprecation
warning (see previous commit).

At the same time, modified a bunch of comments in coverage files
to be more readable/understandable.
2021-03-11 23:04:32 +01:00
Eloy Lafuente (stronk7)
81407f18ec MDL-71036 phpunit: Mock->setMethods() silently deprecated
The current ->setMethods() has been silently (won't emit any
warning) in PHPUnit 9. And will stop working (current plans)
in PHPUnit 10.

Basically the now deprecated method has been split into:

- onlyMethods(): To point to existing methods in the mocked artifact.
- addMethods(): To point to non existing (yet) methods in the mocked
  artifact.

In practice that means that all our current setMethods() calls can be
converted to onlyMethods() (existing) and done. The addMethods() is
mostly useful on development phases, not final testing.

Finally note that <null> isn't accepted anymore as parameter to
double all the methods. Instead empty array [] must be used.

Link: https://github.com/sebastianbergmann/phpunit/issues/3770
2021-03-11 23:04:31 +01:00
Eloy Lafuente (stronk7)
8a14a7bd22 MDL-71036 phpunit: assertContains() now performs strict comparison
The methods assertContains() and assertNotContains() now perform
strict (type and value) comparison, pretty much like assertSame()
does.

A couple of new assertContainsEquals() and assertNotContainsEquals()
methods have been created to provide old (non-strict) behavior, pretty
much like assertEquals() do.

Apart from replacing the calls needing a relaxed comparison to those
new methods, there are also a couple of alternative, about how to
fix this, depending of every case:

- If the test is making any array_values() conversion, then it's better
  to remove that conversion and use assertArrayHasKey(), that is not
  strict.
- Sometimes if may be also possible to, simply, cast the expectation
  to the exact type coming in the array. I've not applied this technique
  to any of the cases in core.

Link: https://github.com/sebastianbergmann/phpunit/issues/3426
2021-03-11 23:04:31 +01:00
Eloy Lafuente (stronk7)
ba5b6089d5 MDL-71036 phpunit: Renamed various regexp-related assertions
In PHPUnit 9.1, the following regexp-related assertions
have been deprecated and there are new alternatives for
all them:
    - assertRegExp()     -> assertMatchesRegularExpression()
    - assertNotRegExp()  -> assertDoesNotMatchRegularExpression()

This is about to, simply, move all cases to the new alternatives.

Source: https://github.com/sebastianbergmann/phpunit/blob/9.1.0/ChangeLog-9.1.md

Regexp to find all them:

    ag 'assertRegExp|assertNotRegExp' -li
2021-03-11 19:22:24 +01:00
Ilya Tregubov
ec47946ea9 MDL-69680 lib: Update jQuery version in Moodle files 2021-03-04 12:48:26 +08:00
Marina Glancy
0eada7a5f9 MDL-70893 various: optional function arguments must be in the end 2021-02-15 16:53:37 +01:00
Eloy Lafuente (stronk7)
f94195c320 MDL-67673 phpunit: Remove deprecated assertInternalType()
While this is not strictly required, because removal will
happen in PHPUnit 9.0, we are already getting rid of all
uses in core.

From release notes:https://phpunit.de/announcements/phpunit-8.html

assertInternalType() is deprecated and will be removed in
PHPUnit 9. Refactor your test to use assertIsArray(), assertIsBool(),
assertIsFloat(), assertIsInt(), assertIsNumeric(), assertIsObject(),
assertIsResource(), assertIsString(), assertIsScalar(),
assertIsCallable(), or assertIsIterable() instead.
2020-10-21 12:45:59 +02:00
Eloy Lafuente (stronk7)
f6711bb394 MDL-67673 phpunit: Fix the return type of template methods
All the setup/teardown/pre/post/conditions template methods
now are required to return void. This was warned with phpunit 7
and now is enforced.

At the same time, fix a few wrong function names,
provider data and param types, return statements...
2020-10-21 12:45:59 +02:00
Eloy Lafuente (stronk7)
de245163e3 MDL-68875 privacy: Keep moodle_content_writer->get_path() the same
In MDL-62853 a new clean_param(PARAM_PATH) was added to the
moodle_content_writer->get_path() method. And this caused some
Windows tests to start failing.

The problem is that clean_param(PARAM_PATH) does normalise directory
separators to be always forward backslashes and that's normally ok
but the get_path() method has some DIRECTORY_SEPARATOR dependent code
that stopped working under windows.

After analysing various solutions, and trying to keep the behavior
EXACTLY like it was before MDL-62853, but with the cleaning included
we have applied 2 changes:

b) Move the clean_param() to later within the array_map() function,
that way the code there, that uses DIRECTORY_SEPARATOR will continue
working the same.

b) As far as there are more DIRECTORY_SEPARATOR dependent code later
in the function, also perform a str_replace() to convert back to the
OS directory separator.

Those 2 points together (a and b) make the behavior to be 100% the
original one, with separators being kept and the paths being cleaned.

This solution corresponds 100% with the proposed fixes named 3) and
4) in the issue.

Final note... all that DIRECTORY_SEPARATOR maybe needs a review because
it really shouldn't be used unless strictly needed. But that falls out
from this issue which goal was to keep things safely working like they
were before the regression (but with the cleaning applied).
2020-06-02 15:53:40 +02:00
Jake Dallimore
33294da864 Merge branch 'MDL-62853' of https://github.com/paulholden/moodle 2020-05-25 16:11:55 +08:00
cescobedo
aeacd6c862 MDL-67798 core_contentbank: Add privacy provider 2020-04-24 16:39:41 +02:00
Paul Holden
d99e0ab7a2 MDL-62853 privacy: sanitize subcontext paths. 2020-04-21 14:38:22 +01:00
Jun Pataleta
3a836cc110 MDL-66245 privacy: Encode each part of the data URL instead of the whole 2020-02-10 16:55:11 +08:00
Paul Holden
07dc0cad34 MDL-64695 privacy: filter site fullname in data export. 2019-12-12 18:20:13 +00:00
Andrew Nicols
fe0944987e MDL-66011 test: remove magic @covers lines 2019-10-04 09:40:34 +08:00
Adrian Greeve
f05c426357 MDL-66710 privacy: Update to template to reference js file right. 2019-09-19 10:42:48 +08:00
Mihail Geshoski
88d2bc81c8 MDL-65751 lib: Update jQuery version in Moodle files 2019-07-15 08:45:34 +08:00
Paul Holden
b4d999a5a6 MDL-64511 privacy: encode data URL when loading content.
Previously paths that included ? or # characters would break loading.
2019-06-28 13:16:16 +01:00
Eloy Lafuente (stronk7)
594717128d MDL-62459 database: remove unused table role_sortorder 2019-04-22 01:37:14 +02:00
Andrew Nicols
bc01342057 MDL-65130 privacy: Add @covers annotation to tests 2019-03-21 10:29:07 +08:00
Andrew Nicols
09d02b3914 MDL-65130 privacy: Fix memory hungry test 2019-03-21 09:52:24 +08:00
Andrew Nicols
306ce452ab MDL-63366 core_privacy: Add coverage whitelisting 2019-03-01 10:30:31 +08:00
Binh Thai
658bf9d554 MDL-64291 GDPR export: Context paths can be very long, not unique 2019-01-28 19:49:09 +07:00
sam marshall
fc570e6699 MDL-64497 GDPR: moodle_content_writer can cause endless loop
Fixes a buggy function by replacing it with a call to file_get_contents,
and adds error detection on a couple of file accesses.
2019-01-03 16:54:38 +00:00
Adrian Greeve
34adbfe0b1 MDL-62061 core_privacy: Stop directories being created.
This stops directories being created in the root directory
while running unit tests.
2018-12-06 11:25:32 +01:00
Damyon Wiese
ff015b5f7a MDL-64220 privacy: Clean path params
We need to consistently clean the path params before we use them. This
shows a difference on windows where dir separators are different.
2018-11-27 15:01:41 +08:00
Jun Pataleta
60e265e76f Merge branch 'MDL-63921-master' of git://github.com/andrewnicols/moodle 2018-11-20 13:54:14 +08:00
Mark Johnson
80aff7db49 MDL-63660 privacy: Include CSS locally for data export 2018-11-14 14:53:27 +00:00
Andrew Nicols
9f12dd7a2f MDL-63921 privacy: Add unit test to prove userlist compliance 2018-11-13 11:41:02 +08:00
David Monllao
754ff36d1d Merge branch 'MDL-63925-master' of git://github.com/mickhawkins/moodle 2018-11-12 11:57:42 +01:00
Andrew Nicols
44e56956c6 MDL-63924 core_privacy: Add shared_userlist provider 2018-11-08 15:39:56 +08:00
Michael Hawkins
e49b73e35e MDL-63925 privacy: Fixed Moodle URL in template 2018-11-08 15:36:40 +08:00
Andrew Nicols
bdccab4769 Merge branch 'MDL-63816-master' of git://github.com/mickhawkins/moodle 2018-11-02 08:00:32 +08:00
David Monllao
57c2400b07 Merge branch 'MDL-62601-master' of git://github.com/andrewnicols/moodle 2018-10-31 06:47:16 +01:00
Andrew Nicols
5efa9f4653 MDL-62601 core_privacy: Ensure providers can handle deleted users 2018-10-31 13:45:00 +08:00
Michael Hawkins
52e5c8b739 MDL-63816 privacy: Corrected interface get_users_in_context description 2018-10-31 12:11:21 +08:00
Mihail Geshoski
ed69d0aef1 MDL-63690 core_privacy: Handle when add_users() receives an empty array 2018-10-26 09:16:10 +08:00
Andrew Nicols
8ba35e317c MDL-63495 privacy: Add support for removal of multiple users in a context
This issue is a part of the MDL-62560 Epic.
2018-10-17 13:12:18 +08:00
Adrian Greeve
ea81e783ef MDL-62491 privacy: Fix running the download script.
Previously running the code to generate the download file
was very fagile. Now the code can be run anywhere without
problems occuring copying files.
2018-10-09 09:31:13 +08:00
Adrian Greeve
e90a0a7415 MDL-62491 core_privacy: Add html files to the user data export.
This adds html to the data export that allows for easier navigation
and reading of data.
2018-10-08 09:00:08 +08:00
Eloy Lafuente (stronk7)
cf76059eda Merge branch 'MDL-62535-master' of git://github.com/abgreeve/moodle 2018-08-30 01:19:57 +02:00
Michael Hawkins
693f690c18 MDL-62660 tool_dataprivacy: Add ability to expire data requests
Also replaced Completed status with situation specific statuses.
Also improved UX on request pages in line with expiries and the aadditional statuses.
2018-08-20 15:31:20 +08:00
Adrian Greeve
4c6781f009 MDL-62535 privacy: Create deprecated provider interface.
Any interfaces that have become deprecated should extend
this interface.
2018-08-20 11:32:01 +08:00
Eloy Lafuente (stronk7)
c9840c0144 MDL-62619 privacy: Prevent action when boolean queries are involved
Before the patch, queries like:

SELECT 1 FROM dual UNION SELECT 2 FROM dual

were failing badly, with everything but the first numeric element
being ignored by the optimization.

So, being conservative, now we reduce the query being analysed,
ignoring any subquery, inline view (anything within parenthesis
in general) and, in the remaining query, if a boolean query (UNION,
MINUS, INTERSECT...) is found, we don't apply any optimization.
2018-08-09 16:05:55 +02:00
David Mudrák
cea03cbd43 MDL-62619 privacy: Fix some bits of performance improvements
* We need to use is_numeric() in this case as is_int() would never
  return true.
* Extend the supported cases, add support for SQL consisting just of
  numerical value or selectinga numerical constant.
* Do not rely on any particulat letter case in provided SQL.
* Add unit tests for the new method. Even when it is a protected one, it
  is an essential unit to be tested on its own.
2018-07-27 10:14:43 +02:00
Andrew Nicols
d7cb7550c7 MDL-62619 privacy: Improve performance of contexts loading
When possible, we want to use JOIN over WHERE IN. It is known that the
later performs badly in MySQL.
2018-07-27 10:14:43 +02:00
Adrian Greeve
666aae9deb MDL-62574 core_privacy: Unit tests to check the context base.
This now tests the possibility of a context being deleted.
2018-06-12 11:24:38 +08:00
Adrian Greeve
c84cb13cd4 MDL-62574 core_privacy: Check the contextlist for real contexts.
There are situations when contexts will be deleted in the provider.
The context list is not updated and so we have introduced a try
catch.
2018-06-12 11:24:38 +08:00