Commit Graph

36 Commits

Author SHA1 Message Date
Andrew Nicols e5d0a83285 MDL-67529 tool_dataprivacy: Coding style updates 2023-06-28 21:39:22 +08:00
Kiet Chan 65be92f661 MDL-67529 GDPR: Option to filter which courses are included 2023-06-27 18:45:07 +08:00
Paul Holden 0a9d31e988 MDL-72983 tool_dataprivacy: respect capability to export own data. 2022-06-06 20:50:32 +01:00
Eloy Lafuente (stronk7) 7a0d024e60 MDL-73659 phpunit: restore_date, api, rule, plugin, manager & helper
All restore_date_test, api_test, rule_test, plugin_test,
manager_test, helper_test testcase classes:

- Namespaced with component[\level2-API]
- Moved to level2-API subdirectory when required.
- Fixed incorrect use statements with leading backslash.
- Remove file phpdoc block
- Remove MOODLE_INTERNAL if not needed.
- Changed code to point to global scope when needed.
- Fix some relative paths and comments here and there.
- All them passing individually.
- Complete runs passing too.

Special mention to:

- All restore_date_test cases have been put under xxx\backup
  level 2 (valid API) namespace.
2022-02-05 00:03:32 +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
Eloy Lafuente (stronk7) 40de097e65 MDL-67673 phpunit: Remove deprecated assertContains() uses on strings
Both assertContains() and assertNotContains() are deprecated in PHPUnit 8
for operations on strings. Also the optional case parameter is. All uses
must be changed to one of:

- assertStringContainsString()
- assertStringContainsStringIgnoringCase()
- assertStringNotContainsString()
- assertStringNotContainsStringIgnoringCase()

More info: https://github.com/sebastianbergmann/phpunit/issues/3422

Regexp to find all uses:

ag 'assert(Not)?Contains\('
2020-10-21 12:46:00 +02:00
Sara Arjona da5f054d6e Merge branch 'MDL-66752-master-2' of git://github.com/junpataleta/moodle 2020-01-08 14:40:01 +01:00
Jun Pataleta 12c1e8b2ff MDL-66752 tool_dataprivacy: Add automatic data request approval feature 2020-01-06 11:40:31 +08:00
Jun Pataleta 41e7fe1d49 MDL-67469 tool_dataprivacy: Put back missing test code
This patch simply brings back the missing test code for
\tool_dataprivacy_api_testcase::test_approve_data_request_non_dpo_user()
2019-12-13 10:04:29 +08:00
Paul Holden 3903a26896 MDL-62915 tool_dataprivacy: don't let primary admin delete themselves. 2019-09-15 21:36:07 +01:00
Kiet.Chan 84bcd65885 MDL-64322 GDPR: Mechanism for restricting delete requests 2019-04-08 15:12:17 +07:00
Andrew Nicols 26ce2c0a81 MDL-64030 tool_dataprivacy: Process requests when system purpose not set 2018-11-23 07:54:22 +08:00
Andrew Nicols c083d1ad1e MDL-63960 dataprivacy: Do not perform strict type checks for id
When inherit is specified in the data registry it is stored as a
string and we cannot perform a strict comparison with it.

We should still compare strict comparison checks against null, or false,
but not for the NOTSET (0) or INHERIT values (-1).
2018-11-10 15:34:21 +08:00
Andrew Nicols b838d85cbc MDL-63897 dataprivacy: Kill the preprocess stage 2018-11-09 11:08:07 +08:00
Andrew Nicols 50208b5ca5 MDL-62589 dataprivacy: Add ability to resubmit a request 2018-11-08 11:45:36 +08:00
Mihail Geshoski c13c4569a9 MDL-62563 privacy: Create delete data request for existing deleted users 2018-11-05 16:20:37 +08:00
Andrew Nicols d2aed78933 MDL-63619 tool_dataprivacy: Fix inheritance from parent contexts
Inheritance should behave such that all contexts inherit from their
parent context.

Prior to this fix, if the value was not set on a context, then it was
getting a default of 'Inherit', but instead of inheritting from the
parent context, it was inheritting from its parent context _level_ which
is just wrong.
2018-10-24 08:48:18 +08:00
Andrew Nicols b107016c88 MDL-63496 tool_dataprivacy: Respect expiry with protected flag
This issue is a part of the MDL-62560 Epic.
2018-10-17 13:12:18 +08:00
Andrew Nicols 7200ab20cd MDL-63401 tool_dataprivacy: Move final cap check to endpoint 2018-10-09 08:21:25 +08:00
Andrew Nicols 2136ec3da3 MDL-63401 tool_dataprivacy: Rewrite expired deletion handling
This change rewrites the way in which expiry is calculated and addresses
a number of closely related issues:

Users can customise, and add blocks with data to, their dashboard.  When
a user had done so, the user could be flagged for deletion, but the
blocks in their Dashboard were subject to the default block retention
policy. In addition there is no way to override the retention policy for
user blocks.

This change modifies the structure of the expiry mechanism:
- to consider any subcontext of the user context to be a part of the user
  context during calculation. User child contexts are not the property
  of the system, and should not be treated separately.
- the way in which the context expiry mechanism worked was to select
  use a multiple different managers based solely on the context level.
  Because of the use of user blocks, this proved to be unreliable as
  blocks has been attributed purely to courses.
  This has been changed to a single manager which is aware of hierarchy
  and deletions as a whole.
- to prepare for upcoming work relating to more detailed expiry
  mechanisms, a new expiry_info class is introduced and used to
  merge the expiry of child contexts into a working in-memory view.

This changeset includes extensive unit tests.
2018-10-08 20:49:55 +08:00
Andrew Nicols cbae8dcd57 MDL-63401 tool_dataprivacy: Move cap checks to endpoints from API 2018-10-08 20:49:17 +08:00
Eloy Lafuente (stronk7) 01d7b4b6dd Merge branch 'MDL-63184-master-2' of git://github.com/junpataleta/moodle 2018-09-17 23:10:39 +02:00
Jun Pataleta 302089f52b MDL-63184 tool_dataprivacy: Ensure PO roles have correct capability 2018-09-17 22:12:34 +08:00
Jun Pataleta 08248c30a7 MDL-62554 tool_dataprivacy: Unit tests for new WS/API functions 2018-09-10 12:16:20 +08:00
Michael Hawkins 95a844ebdc MDL-62660 tool_dataprivacy: Add and update PHPUnit tests
Updated tests with latest statuses.
Added testing for request download expiry functionality and method.
Added assign_site_dpo within a parent class for unit tests.
2018-08-20 15:31:20 +08:00
Andrew Nicols c46919aa91 Merge branch 'MDL-61652-master' of git://github.com/mihailges/moodle 2018-07-25 08:32:22 +08:00
sam marshall 635c7b29a0 MDL-61652 tool_dataprivacy: Add capabilities to control data downloads 2018-07-24 14:23:16 +08:00
Jun Pataleta f0ccce9af7 MDL-62962 tool_dataprivacy: Move user generation within the test 2018-07-23 13:35:50 +08:00
Jun Pataleta 4c72ffa5ef MDL-62211 tool_dataprivacy: Request filtering and pagination
* Make data requests page use table_sql to make it sortable
* Also, add an autocomplete element that enables filtering by
  status and request type.
2018-06-29 10:32:04 +08:00
Jun Pataleta 7bdb9d877d MDL-62409 tool_dataprivacy: Properly validate data request creation
Creating data requests
 * Add capability check when creating data requests for another user.
Ad-hoc task that processes pending data requests
 * Check if the requesting user has the capability to create the data
   request for another user. Reject otherwise.
Ad-hoc task that processes approved data requests
 * Validate that the requester can receive the notification about the
   data request processing results.
 * Do not send the confirmation link to DPOs/admins
2018-05-13 16:03:21 +02:00
Andrew Nicols 00293f90a4 MDL-61635 tool_dataprivacy: Filter out protected contexts in delete 2018-05-10 20:36:02 +02:00
Jun Pataleta ba5b59c0af MDL-61899 tool_dataprivacy: Fixes during integration review
* Disable tool by default.
* Add format columns for 'comments' and 'dpocomment' fields in
tool_dataprivacy_request table.
* Use data request exporter when sending email notification to DPO
2018-04-18 18:23:13 +02:00
Jun Pataleta 0462786a78 MDL-61899 tool_dataprivacy: Unit test fixes 2018-04-18 18:22:41 +02:00
David Monllao a8a6905039 MDL-61899 tool_dataprivacy: Refined patch fixing cibot complains 2018-04-18 18:14:59 +02:00
David Monllao 5efc1f9e64 MDL-61899 tool_dataprivacy: Subject access requests tool
This commit is composed of different issues, most of them under
MDL-61306:
- MDL-61888, MDL-61785, MDL-61830, MDL-61874, MDL-59720,
  MDL-61486, MDL-61697, MDL-61798, MDL-61685, MDL-61682,
  MDL-61684, MDL-61618, MDL-61681, MDL-61680, MDL-61487,
  MDL-61499, MDL-61500, MDL-61362 and MDL-59718

Contributions to this patch by:
- Jun Pataleta
- David Monllao
- Andrew Nicols
- Adrian B. Greeve
- Jake Dallimore
- Sara Arjona
2018-04-18 18:14:23 +02:00