| Línea 40... |
Línea 40... |
| 40 |
*
|
40 |
*
|
| 41 |
* @package core_question
|
41 |
* @package core_question
|
| 42 |
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
|
42 |
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
|
| 43 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
43 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
| 44 |
*/
|
44 |
*/
|
| 45 |
class provider_test extends \core_privacy\tests\provider_testcase {
|
45 |
final class provider_test extends \core_privacy\tests\provider_testcase {
|
| Línea 46... |
Línea 46... |
| 46 |
|
46 |
|
| 47 |
// Include the privacy helper which has assertions on it.
|
47 |
// Include the privacy helper which has assertions on it.
|
| Línea 48... |
Línea 48... |
| 48 |
use \core_question_privacy_helper;
|
48 |
use \core_question_privacy_helper;
|
| Línea 195... |
Línea 195... |
| 195 |
$otheruser = $this->getDataGenerator()->create_user();
|
195 |
$otheruser = $this->getDataGenerator()->create_user();
|
| Línea 196... |
Línea 196... |
| 196 |
|
196 |
|
| 197 |
// Create one question as each user in diferent contexts.
|
197 |
// Create one question as each user in diferent contexts.
|
| 198 |
$this->setUser($user);
|
198 |
$this->setUser($user);
|
| 199 |
$userdata = $questiongenerator->setup_course_and_questions();
|
199 |
$userdata = $questiongenerator->setup_course_and_questions();
|
| Línea 200... |
Línea 200... |
| 200 |
$expectedcontext = \context_course::instance($userdata[1]->id);
|
200 |
$expectedcontext = \context_module::instance($userdata[4]->cmid);
|
| 201 |
|
201 |
|
| 202 |
$this->setUser($otheruser);
|
202 |
$this->setUser($otheruser);
|
| Línea 203... |
Línea 203... |
| 203 |
$otheruserdata = $questiongenerator->setup_course_and_questions();
|
203 |
$otheruserdata = $questiongenerator->setup_course_and_questions();
|
| 204 |
$unexpectedcontext = \context_course::instance($otheruserdata[1]->id);
|
204 |
$unexpectedcontext = \context_module::instance($otheruserdata[4]->cmid);
|
| 205 |
|
205 |
|
| 206 |
// And create another one where we'll update a question as the test user.
|
206 |
// And create another one where we'll update a question as the test user.
|
| Línea 207... |
Línea 207... |
| 207 |
$moreotheruserdata = $questiongenerator->setup_course_and_questions();
|
207 |
$moreotheruserdata = $questiongenerator->setup_course_and_questions();
|
| 208 |
$otherexpectedcontext = \context_course::instance($moreotheruserdata[1]->id);
|
208 |
$otherexpectedcontext = \context_module::instance($moreotheruserdata[4]->cmid);
|
| Línea 224... |
Línea 224... |
| 224 |
|
224 |
|
| 225 |
$expectedcontexts = [
|
225 |
$expectedcontexts = [
|
| 226 |
$expectedcontext->id,
|
226 |
$expectedcontext->id,
|
| 227 |
$otherexpectedcontext->id,
|
227 |
$otherexpectedcontext->id,
|
| - |
|
228 |
];
|
| - |
|
229 |
$this->assertEqualsCanonicalizing(
|
| 228 |
];
|
230 |
$expectedcontexts,
|
| - |
|
231 |
array_values($contextlist->get_contextids()),
|
| - |
|
232 |
'Contexts not equal',
|
| Línea 229... |
Línea 233... |
| 229 |
$this->assertEqualsCanonicalizing($expectedcontexts, $contextlist->get_contextids(), 'Contexts not equal');
|
233 |
);
|
| 230 |
|
234 |
|
| Línea 231... |
Línea 235... |
| 231 |
// Run the export_user_Data as the test user.
|
235 |
// Run the export_user_Data as the test user.
|
| Línea 287... |
Línea 291... |
| 287 |
|
291 |
|
| 288 |
$user = \core_user::get_user_by_username('admin');
|
292 |
$user = \core_user::get_user_by_username('admin');
|
| Línea 289... |
Línea 293... |
| 289 |
$otheruser = $this->getDataGenerator()->create_user();
|
293 |
$otheruser = $this->getDataGenerator()->create_user();
|
| - |
|
294 |
|
| 290 |
|
295 |
$course = $this->getDataGenerator()->create_course();
|
| 291 |
$course = $this->getDataGenerator()->create_course();
|
296 |
$qbank1 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
| 292 |
$context = \context_course::instance($course->id);
|
297 |
$qbank1context = \context_module::instance($qbank1->cmid);
|
| Línea 293... |
Línea 298... |
| 293 |
$othercourse = $this->getDataGenerator()->create_course();
|
298 |
$qbank2 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
| 294 |
$othercontext = \context_course::instance($othercourse->id);
|
299 |
$qbank2context = \context_module::instance($qbank2->cmid);
|
| 295 |
|
300 |
|
| 296 |
// Create a couple of questions.
|
301 |
// Create a couple of questions.
|
| 297 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
302 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
| 298 |
$cat = $questiongenerator->create_question_category([
|
303 |
$cat = $questiongenerator->create_question_category([
|
| 299 |
'contextid' => $context->id,
|
304 |
'contextid' => $qbank1context->id,
|
| 300 |
]);
|
305 |
]);
|
| Línea 301... |
Línea 306... |
| 301 |
$othercat = $questiongenerator->create_question_category([
|
306 |
$othercat = $questiongenerator->create_question_category([
|
| 302 |
'contextid' => $othercontext->id,
|
307 |
'contextid' => $qbank2context->id,
|
| 303 |
]);
|
308 |
]);
|
| Línea 324... |
Línea 329... |
| 324 |
$q5 = $questiongenerator->create_question('shortanswer', null, ['category' => $othercat->id]);
|
329 |
$q5 = $questiongenerator->create_question('shortanswer', null, ['category' => $othercat->id]);
|
| Línea 325... |
Línea 330... |
| 325 |
|
330 |
|
| 326 |
$approvedcontextlist = new \core_privacy\tests\request\approved_contextlist(
|
331 |
$approvedcontextlist = new \core_privacy\tests\request\approved_contextlist(
|
| 327 |
$user,
|
332 |
$user,
|
| 328 |
'core_question',
|
333 |
'core_question',
|
| 329 |
[$context->id]
|
334 |
[$qbank1context->id]
|
| Línea 330... |
Línea 335... |
| 330 |
);
|
335 |
);
|
| 331 |
|
336 |
|
| Línea 368... |
Línea 373... |
| 368 |
|
373 |
|
| 369 |
$user = \core_user::get_user_by_username('admin');
|
374 |
$user = \core_user::get_user_by_username('admin');
|
| Línea 370... |
Línea 375... |
| 370 |
$otheruser = $this->getDataGenerator()->create_user();
|
375 |
$otheruser = $this->getDataGenerator()->create_user();
|
| - |
|
376 |
|
| 371 |
|
377 |
$course = $this->getDataGenerator()->create_course();
|
| 372 |
$course = $this->getDataGenerator()->create_course();
|
378 |
$qbank1 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
| 373 |
$context = \context_course::instance($course->id);
|
379 |
$qbank1context = \context_module::instance($qbank1->cmid);
|
| Línea 374... |
Línea 380... |
| 374 |
$othercourse = $this->getDataGenerator()->create_course();
|
380 |
$qbank2 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
| 375 |
$othercontext = \context_course::instance($othercourse->id);
|
381 |
$qbank2context = \context_module::instance($qbank2->cmid);
|
| 376 |
|
382 |
|
| 377 |
// Create a couple of questions.
|
383 |
// Create a couple of questions.
|
| 378 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
384 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
| 379 |
$cat = $questiongenerator->create_question_category([
|
385 |
$cat = $questiongenerator->create_question_category([
|
| 380 |
'contextid' => $context->id,
|
386 |
'contextid' => $qbank1context->id,
|
| 381 |
]);
|
387 |
]);
|
| Línea 382... |
Línea 388... |
| 382 |
$othercat = $questiongenerator->create_question_category([
|
388 |
$othercat = $questiongenerator->create_question_category([
|
| 383 |
'contextid' => $othercontext->id,
|
389 |
'contextid' => $qbank2context->id,
|
| 384 |
]);
|
390 |
]);
|
| Línea 405... |
Línea 411... |
| 405 |
// Find out how many questions are in the question bank to start with.
|
411 |
// Find out how many questions are in the question bank to start with.
|
| 406 |
$questioncount = $DB->count_records('question');
|
412 |
$questioncount = $DB->count_records('question');
|
| Línea 407... |
Línea 413... |
| 407 |
|
413 |
|
| 408 |
// Delete the data and check it is removed.
|
414 |
// Delete the data and check it is removed.
|
| 409 |
$this->setUser();
|
415 |
$this->setUser();
|
| Línea 410... |
Línea 416... |
| 410 |
provider::delete_data_for_all_users_in_context($context);
|
416 |
provider::delete_data_for_all_users_in_context($qbank1context);
|
| Línea 411... |
Línea 417... |
| 411 |
|
417 |
|
| 412 |
$this->assertEquals($questioncount, $DB->count_records('question'));
|
418 |
$this->assertEquals($questioncount, $DB->count_records('question'));
|
| Línea 449... |
Línea 455... |
| 449 |
$this->setUser($user1);
|
455 |
$this->setUser($user1);
|
| 450 |
$user1data = $questiongenerator->setup_course_and_questions();
|
456 |
$user1data = $questiongenerator->setup_course_and_questions();
|
| 451 |
$this->setUser($user2);
|
457 |
$this->setUser($user2);
|
| 452 |
$user2data = $questiongenerator->setup_course_and_questions();
|
458 |
$user2data = $questiongenerator->setup_course_and_questions();
|
| Línea 453... |
Línea 459... |
| 453 |
|
459 |
|
| 454 |
$course1context = \context_course::instance($user1data[1]->id);
|
460 |
$qbankcontext = \context_module::instance($user1data[4]->cmid);
|
| Línea 455... |
Línea 461... |
| 455 |
$course1questions = $user1data[3];
|
461 |
$questions = $user1data[3];
|
| 456 |
|
462 |
|
| Línea 457... |
Línea 463... |
| 457 |
// Log in as user3 and update the questions in course1.
|
463 |
// Log in as user3 and update the questions in course1.
|
| 458 |
$this->setUser($user3);
|
464 |
$this->setUser($user3);
|
| 459 |
|
465 |
|
| Línea 460... |
Línea 466... |
| 460 |
foreach ($course1questions as $question) {
|
466 |
foreach ($questions as $question) {
|
| 461 |
$questiongenerator->update_question($question);
|
467 |
$questiongenerator->update_question($question);
|
| Línea 462... |
Línea 468... |
| 462 |
}
|
468 |
}
|
| 463 |
|
469 |
|
| 464 |
$userlist = new \core_privacy\local\request\userlist($course1context, 'core_question');
|
470 |
$userlist = new \core_privacy\local\request\userlist($qbankcontext, 'core_question');
|
| Línea 484... |
Línea 490... |
| 484 |
$user2 = $this->getDataGenerator()->create_user();
|
490 |
$user2 = $this->getDataGenerator()->create_user();
|
| 485 |
$user3 = $this->getDataGenerator()->create_user();
|
491 |
$user3 = $this->getDataGenerator()->create_user();
|
| Línea 486... |
Línea 492... |
| 486 |
|
492 |
|
| 487 |
// Create one question as each user in different contexts.
|
493 |
// Create one question as each user in different contexts.
|
| 488 |
$this->setUser($user1);
|
494 |
$this->setUser($user1);
|
| 489 |
$course1data = $questiongenerator->setup_course_and_questions();
|
495 |
$coursedata = $questiongenerator->setup_course_and_questions();
|
| 490 |
$course1 = $course1data[1];
|
496 |
$qbank = $coursedata[4];
|
| 491 |
$course1qcat = $course1data[2];
|
497 |
$course1qcat = $coursedata[2];
|
| 492 |
$course1questions = $course1data[3];
|
498 |
$questions = $coursedata[3];
|
| Línea 493... |
Línea 499... |
| 493 |
$course1context = \context_course::instance($course1->id);
|
499 |
$qbankcontext = \context_module::instance($qbank->cmid);
|
| 494 |
|
500 |
|
| Línea 495... |
Línea 501... |
| 495 |
// Log in as user2 and update the questions in course1.
|
501 |
// Log in as user2 and update the questions in course1.
|
| 496 |
$this->setUser($user2);
|
502 |
$this->setUser($user2);
|
| 497 |
|
503 |
|
| Línea 498... |
Línea 504... |
| 498 |
foreach ($course1questions as $question) {
|
504 |
foreach ($questions as $question) {
|
| 499 |
$questiongenerator->update_question($question);
|
505 |
$questiongenerator->update_question($question);
|
| Línea 506... |
Línea 512... |
| 506 |
|
512 |
|
| 507 |
// Now, log in as user1 again, and then create a new course and add questions to that.
|
513 |
// Now, log in as user1 again, and then create a new course and add questions to that.
|
| 508 |
$this->setUser($user1);
|
514 |
$this->setUser($user1);
|
| Línea 509... |
Línea 515... |
| 509 |
$questiongenerator->setup_course_and_questions();
|
515 |
$questiongenerator->setup_course_and_questions();
|
| 510 |
|
516 |
|
| 511 |
$approveduserlist = new \core_privacy\local\request\approved_userlist($course1context, 'core_question',
|
517 |
$approveduserlist = new \core_privacy\local\request\approved_userlist($qbankcontext, 'core_question',
|
| Línea 512... |
Línea 518... |
| 512 |
[$user1->id, $user2->id]);
|
518 |
[$user1->id, $user2->id]);
|
| 513 |
provider::delete_data_for_users($approveduserlist);
|
519 |
provider::delete_data_for_users($approveduserlist);
|
| Línea 519... |
Línea 525... |
| 519 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
525 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
| 520 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
526 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
| 521 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
527 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
| 522 |
WHERE qc.contextid = ?
|
528 |
WHERE qc.contextid = ?
|
| 523 |
AND (q.createdby = ? OR q.modifiedby = ? OR q.createdby = ? OR q.modifiedby = ?)",
|
529 |
AND (q.createdby = ? OR q.modifiedby = ? OR q.createdby = ? OR q.modifiedby = ?)",
|
| 524 |
[$course1context->id, $user1->id, $user1->id, $user2->id, $user2->id])
|
530 |
[$qbankcontext->id, $user1->id, $user1->id, $user2->id, $user2->id])
|
| 525 |
);
|
531 |
);
|
| Línea 526... |
Línea 532... |
| 526 |
|
532 |
|
| 527 |
// User3 data in course1 should not change.
|
533 |
// User3 data in course1 should not change.
|
| 528 |
$this->assertEquals(2,
|
534 |
$this->assertEquals(2,
|
| 529 |
$DB->count_records_sql("SELECT COUNT(q.id)
|
535 |
$DB->count_records_sql("SELECT COUNT(q.id)
|
| 530 |
FROM {question} q
|
536 |
FROM {question} q
|
| 531 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
537 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
| 532 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
538 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
| 533 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
539 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
| 534 |
WHERE qc.contextid = ? AND (q.createdby = ? OR q.modifiedby = ?)",
|
540 |
WHERE qc.contextid = ? AND (q.createdby = ? OR q.modifiedby = ?)",
|
| 535 |
[$course1context->id, $user3->id, $user3->id])
|
541 |
[$qbankcontext->id, $user3->id, $user3->id])
|
| Línea 536... |
Línea 542... |
| 536 |
);
|
542 |
);
|
| 537 |
|
543 |
|
| 538 |
// User1 has authored 2 questions in another course.
|
544 |
// User1 has authored 2 questions in another course.
|