Ejemplo n.º 1
0
 /**
  * Test refresh method.
  */
 public function test_refresh()
 {
     global $USER, $DB;
     $this->setAdminUser();
     $now = time();
     $httpclient = new \local_o365\tests\mockhttpclient();
     $newtokenresponse = ['access_token' => 'newtoken', 'expires_on' => $now + 1000, 'refresh_token' => 'newrefreshtoken', 'scope' => 'newscope', 'resource' => 'newresource'];
     $newtokenresponse = json_encode($newtokenresponse);
     $httpclient->set_response($newtokenresponse);
     $oidcconfig = (object) ['clientid' => 'clientid', 'clientsecret' => 'clientsecret', 'authendpoint' => 'http://example.com/auth', 'tokenendpoint' => 'http://example.com/token'];
     $tokenrec = (object) ['token' => 'oldtoken', 'expiry' => $now - 1000, 'refreshtoken' => 'refreshtoken', 'scope' => 'oldscope', 'resource' => 'oldresource', 'user_id' => $USER->id];
     $tokenrec->id = $DB->insert_record('local_o365_token', $tokenrec);
     $clientdata = new \local_o365\oauth2\clientdata($oidcconfig->clientid, $oidcconfig->clientsecret, $oidcconfig->authendpoint, $oidcconfig->tokenendpoint);
     $token = new \local_o365\oauth2\token($tokenrec->token, $tokenrec->expiry, $tokenrec->refreshtoken, $tokenrec->scope, $tokenrec->resource, $tokenrec->user_id, $clientdata, $httpclient);
     $token->refresh();
     $this->assertEquals(1, $DB->count_records('local_o365_token'));
     $tokenrec = $DB->get_record('local_o365_token', ['id' => $tokenrec->id]);
     $this->assertEquals('newtoken', $tokenrec->token);
     $this->assertEquals('newrefreshtoken', $tokenrec->refreshtoken);
     $this->assertEquals('newscope', $tokenrec->scope);
     $this->assertEquals('newresource', $tokenrec->resource);
     $this->assertEquals($now + 1000, $tokenrec->expiry);
     $this->assertEquals('newtoken', $token->get_token());
     $this->assertEquals('newrefreshtoken', $token->get_refreshtoken());
     $this->assertEquals('newscope', $token->get_scope());
     $this->assertEquals('newresource', $token->get_resource());
     $this->assertEquals($now + 1000, $token->get_expiry());
 }
Ejemplo n.º 2
0
 /**
  * Test create_course_site method.
  */
 public function test_create_course_site()
 {
     global $DB;
     $requiredcapability = \local_o365\rest\sharepoint::get_course_site_required_capability();
     $course = $this->getDataGenerator()->create_course();
     $role = $this->getDataGenerator()->create_role(['archetype' => 'editingteacher']);
     $coursecontext = \context_course::instance($course->id);
     $user1 = $this->getDataGenerator()->create_user(['auth' => 'oidc']);
     $user2 = $this->getDataGenerator()->create_user(['auth' => 'oidc']);
     $aaduserdata = (object) ['type' => 'user', 'subtype' => '', 'objectid' => '', 'moodleid' => $user1->id, 'o365name' => '*****@*****.**', 'timecreated' => time(), 'timemodified' => time()];
     $aaduserdata->id = $DB->insert_record('local_o365_objects', $aaduserdata);
     $result = $this->getDataGenerator()->role_assign($role, $user1->id, $coursecontext);
     $httpclient = new \local_o365\tests\mockhttpclient();
     $httpresponses = ['', $this->get_response_create_site($course->fullname, $course->shortname, $course->summary), $this->get_response_create_group('testgroup', 'testgroup'), $this->get_response_assign_group_permission(), $this->get_response_add_user_to_group($aaduserdata->userupn)];
     $httpclient->set_responses($httpresponses);
     $apiclient = new \local_o365\rest\sharepoint($this->get_mock_token(), $httpclient);
     $apiclient->create_course_site($course->id);
     $coursespsite = $DB->get_record('local_o365_coursespsite', ['courseid' => $course->id]);
     $this->assertNotEmpty($coursespsite);
     $this->assertEquals('/moodle/' . $course->shortname, $coursespsite->siteurl);
     $spgroupdata = $DB->get_records('local_o365_spgroupdata', ['coursespsiteid' => $coursespsite->id]);
     $this->assertNotEmpty($spgroupdata);
 }
Ejemplo n.º 3
0
 /**
  * Test sync_users method.
  */
 public function test_sync_users()
 {
     global $CFG, $DB;
     for ($i = 1; $i <= 2; $i++) {
         $muser = ['auth' => 'oidc', 'deleted' => '0', 'mnethostid' => $CFG->mnet_localhost_id, 'username' => '00000000-0000-0000-0000-00000000000' . $i, 'firstname' => 'Test', 'lastname' => 'User' . $i, 'email' => 'testuser' . $i . '@example.onmicrosoft.com', 'lang' => 'en'];
         $DB->insert_record('user', (object) $muser);
         $token = ['oidcuniqid' => '00000000-0000-0000-0000-00000000000' . $i, 'authcode' => '000', 'username' => 'testuser' . $i . '@example.onmicrosoft.com', 'scope' => 'test', 'resource' => \local_o365\rest\azuread::get_resource(), 'token' => '000', 'expiry' => '9999999999', 'refreshtoken' => 'fsdfsdf' . $i, 'idtoken' => 'sdfsdfsdf' . $i];
         $DB->insert_record('auth_oidc_token', (object) $token);
     }
     $response = ['value' => [$this->get_aad_userinfo(1), $this->get_aad_userinfo(3)]];
     $response = json_encode($response);
     $httpclient = new \local_o365\tests\mockhttpclient();
     $httpclient->set_response($response);
     $apiclient = new \local_o365\rest\azuread($this->get_mock_token(), $httpclient);
     $aadusers = $apiclient->get_users();
     $apiclient->sync_users($aadusers['value']);
     $existinguser = ['auth' => 'oidc', 'username' => '*****@*****.**'];
     $this->assertTrue($DB->record_exists('user', $existinguser));
     $createduser = ['auth' => 'oidc', 'username' => '*****@*****.**'];
     $this->assertTrue($DB->record_exists('user', $createduser));
     $createduser = $DB->get_record('user', $createduser);
     $this->assertEquals('Test', $createduser->firstname);
     $this->assertEquals('User3', $createduser->lastname);
     $this->assertEquals('*****@*****.**', $createduser->email);
     $this->assertEquals('Toronto', $createduser->city);
     $this->assertEquals('CA', $createduser->country);
     $this->assertEquals('Dev', $createduser->department);
     $this->assertEquals('en', $createduser->lang);
 }