Beispiel #1
0
 /**
  * Test agree_site_policy
  */
 public function test_agree_site_policy()
 {
     global $CFG, $DB, $USER;
     $this->resetAfterTest(true);
     $user = self::getDataGenerator()->create_user();
     $this->setUser($user);
     // Site policy not set.
     $result = core_user_external::agree_site_policy();
     $result = external_api::clean_returnvalue(core_user_external::agree_site_policy_returns(), $result);
     $this->assertFalse($result['status']);
     $this->assertCount(1, $result['warnings']);
     $this->assertEquals('nositepolicy', $result['warnings'][0]['warningcode']);
     // Set a policy issue.
     $CFG->sitepolicy = 'https://moodle.org';
     $this->assertEquals(0, $USER->policyagreed);
     $result = core_user_external::agree_site_policy();
     $result = external_api::clean_returnvalue(core_user_external::agree_site_policy_returns(), $result);
     $this->assertTrue($result['status']);
     $this->assertCount(0, $result['warnings']);
     $this->assertEquals(1, $USER->policyagreed);
     $this->assertEquals(1, $DB->get_field('user', 'policyagreed', array('id' => $USER->id)));
     // Try again, we should get a warning.
     $result = core_user_external::agree_site_policy();
     $result = external_api::clean_returnvalue(core_user_external::agree_site_policy_returns(), $result);
     $this->assertFalse($result['status']);
     $this->assertCount(1, $result['warnings']);
     $this->assertEquals('alreadyagreed', $result['warnings'][0]['warningcode']);
     // Set something to make require_login throws an exception.
     $otheruser = self::getDataGenerator()->create_user();
     $this->setUser($otheruser);
     $DB->set_field('user', 'lastname', '', array('id' => $USER->id));
     $USER->lastname = '';
     try {
         $result = core_user_external::agree_site_policy();
         $this->fail('Expecting \'usernotfullysetup\' moodle_exception to be thrown');
     } catch (moodle_exception $e) {
         $this->assertEquals('usernotfullysetup', $e->errorcode);
     } catch (Exception $e) {
         $this->fail('Expecting \'usernotfullysetup\' moodle_exception to be thrown.');
     }
 }