MDL-52781 auth_db: deprecate clean_data method.
[moodle.git] / auth / db / tests / db_test.php
index e0d68d3..f1471cf 100644 (file)
@@ -121,7 +121,9 @@ class auth_db_testcase extends advanced_testcase {
         set_config('table', $CFG->prefix.'auth_db_users', 'auth/db');
         set_config('fielduser', 'name', 'auth/db');
         set_config('fieldpass', 'pass', 'auth/db');
-
+        set_config('field_map_lastname', 'lastname', 'auth/db');
+        set_config('field_updatelocal_lastname', 'oncreate', 'auth/db');
+        set_config('field_lock_lastname', 'unlocked', 'auth/db');
         // Setu up field mappings.
 
         set_config('field_map_email', 'email', 'auth/db');
@@ -149,7 +151,7 @@ class auth_db_testcase extends advanced_testcase {
     public function test_plugin() {
         global $DB, $CFG;
 
-        $this->resetAfterTest(false);
+        $this->resetAfterTest(true);
 
         // NOTE: It is strongly discouraged to create new tables in advanced_testcase classes,
         //       but there is no other simple way to test ext database enrol sync, so let's
@@ -416,60 +418,31 @@ class auth_db_testcase extends advanced_testcase {
         $extdbuser1 = (object)array('name'=>'u1', 'pass'=>'heslo', 'email'=>'u1@example.com');
         $extdbuser1->id = $DB->insert_record('auth_db_users', $extdbuser1);
 
-        // User with malicious data on the name.
+        // User with malicious data on the name (won't be imported).
         $extdbuser2 = (object)array('name'=>'user<script>alert(1);</script>xss', 'pass'=>'heslo', 'email'=>'xssuser@example.com');
         $extdbuser2->id = $DB->insert_record('auth_db_users', $extdbuser2);
 
+        $extdbuser3 = (object)array('name'=>'u3', 'pass'=>'heslo', 'email'=>'u3@example.com',
+                'lastname' => 'user<script>alert(1);</script>xss');
+        $extdbuser3->id = $DB->insert_record('auth_db_users', $extdbuser3);
         $trace = new null_progress_trace();
 
         // Let's test user sync make sure still works as expected..
         $auth->sync_users($trace, true);
-
-        // Get the user on moodle user table.
-        $user2 = $DB->get_record('user', array('email'=> $extdbuser2->email, 'auth'=>'db'));
-
-        // The malicious code should be sanitized.
-        $this->assertEquals($user2->username, 'userscriptalert1scriptxss');
-        $this->assertNotEquals($user2->username, $extdbuser2->name);
-
+        $this->assertDebuggingCalled("The property 'lastname' has invalid data and has been cleaned.");
         // User with correct data, should be equal to external db.
         $user1 = $DB->get_record('user', array('email'=> $extdbuser1->email, 'auth'=>'db'));
         $this->assertEquals($extdbuser1->name, $user1->username);
         $this->assertEquals($extdbuser1->email, $user1->email);
 
-        // Now, let's update the name.
-        $extdbuser2->name = 'user no xss anymore';
-        $DB->update_record('auth_db_users', $extdbuser2);
+        // Get the user on moodle user table.
+        $user2 = $DB->get_record('user', array('email'=> $extdbuser2->email, 'auth'=>'db'));
+        $user3 = $DB->get_record('user', array('email'=> $extdbuser3->email, 'auth'=>'db'));
 
-        // Run sync again to update the user data.
-        $auth->sync_users($trace, true);
+        $this->assertEmpty($user2);
+        $this->assertEquals($extdbuser3->name, $user3->username);
+        $this->assertEquals('useralert(1);xss', $user3->lastname);
 
-        // The user information should be updated.
-        $user2 = $DB->get_record('user', array('username' => 'usernoxssanymore', 'auth' => 'db'));
-        // The spaces should be removed, as it's the username.
-        $this->assertEquals($user2->username, 'usernoxssanymore');
-
-        // Now let's test just the clean_data() method isolated.
-        // Testing PARAM_USERNAME, PARAM_NOTAGS, PARAM_RAW_TRIMMED and others.
-        $user3 = new stdClass();
-        $user3->firstname = 'John <script>alert(1)</script> Doe';
-        $user3->username = 'john%#&~%*_doe';
-        $user3->email = ' john@testing.com ';
-        $user3->deleted = 'no';
-        $user3->description = '<b>A description <script>alert(123)</script>about myself.</b>';
-        $user3cleaned = $auth->clean_data($user3);
-
-        // Expected results.
-        $this->assertEquals($user3cleaned->firstname, 'John alert(1) Doe');
-        $this->assertEquals($user3cleaned->email, 'john@testing.com');
-        $this->assertEquals($user3cleaned->deleted, 0);
-        $this->assertEquals($user3->description, '<b>A description about myself.</b>');
-        $this->assertEquals($user3->username, 'john_doe');
-
-        // Try to clean an invalid property (fullname).
-        $user3->fullname = 'John Doe';
-        $auth->clean_data($user3);
-        $this->assertDebuggingCalled("The property 'fullname' could not be cleaned.");
         $this->cleanup_auth_database();
     }
 }