Skip to content

Commit

Permalink
MDL-58220 oauth2: Fix unit tests and add more
Browse files Browse the repository at this point in the history
  • Loading branch information
Damyon Wiese committed Apr 3, 2017
1 parent 092304a commit fa78244
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 2 deletions.
6 changes: 5 additions & 1 deletion lib/classes/oauth2/issuer.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,11 @@ public function is_valid_login_domain($email) {
}
$validdomains = explode(',', $this->get('alloweddomains'));

list($unused, $emaildomain) = explode('@', $email, 2);
$parts = explode('@', $email, 2);
$emaildomain = '';
if (count($parts) > 1) {
$emaildomain = $parts[1];
}

foreach ($validdomains as $checkdomain) {
$checkdomain = \core_text::strtolower(trim($checkdomain));
Expand Down
72 changes: 71 additions & 1 deletion lib/tests/oauth2_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,10 @@ public function test_getters() {
$issuer = \core\oauth2\api::create_standard_issuer('microsoft');

$same = \core\oauth2\api::get_issuer($issuer->get('id'));
$this->assertEquals($issuer, $same);

foreach ($same->properties_definition() as $name => $def) {
$this->assertTrue($issuer->get($name) == $same->get($name));
}

$endpoints = \core\oauth2\api::get_endpoints($issuer);
$same = \core\oauth2\api::get_endpoint($endpoints[0]->get('id'));
Expand Down Expand Up @@ -132,4 +135,71 @@ public function test_get_system_oauth_client() {
$client = \core\oauth2\api::get_system_oauth_client($issuer);
$this->assertTrue($client->is_logged_in());
}

/**
* Tests we can enable and disable an issuer.
*/
public function test_enable_disable_issuer() {
global $SESSION;

$this->resetAfterTest();
$this->setAdminUser();

$issuer = \core\oauth2\api::create_standard_issuer('microsoft');

$issuerid = $issuer->get('id');

\core\oauth2\api::enable_issuer($issuerid);
$check = \core\oauth2\api::get_issuer($issuer->get('id'));
$this->assertTrue((boolean)$check->get('enabled'));

\core\oauth2\api::enable_issuer($issuerid);
$check = \core\oauth2\api::get_issuer($issuer->get('id'));
$this->assertTrue((boolean)$check->get('enabled'));

\core\oauth2\api::disable_issuer($issuerid);
$check = \core\oauth2\api::get_issuer($issuer->get('id'));
$this->assertFalse((boolean)$check->get('enabled'));

\core\oauth2\api::enable_issuer($issuerid);
$check = \core\oauth2\api::get_issuer($issuer->get('id'));
$this->assertTrue((boolean)$check->get('enabled'));
}

/**
* Test the alloweddomains for an issuer.
*/
public function test_issuer_alloweddomains() {
global $SESSION;

$this->resetAfterTest();
$this->setAdminUser();

$issuer = \core\oauth2\api::create_standard_issuer('microsoft');

$issuer->set('alloweddomains', '');

// Anything is allowed when domain is empty.
$this->assertTrue($issuer->is_valid_login_domain(''));
$this->assertTrue($issuer->is_valid_login_domain('a@b'));
$this->assertTrue($issuer->is_valid_login_domain('[email protected]'));

$issuer->set('alloweddomains', 'example.com');

// One domain - must match exactly - no substrings etc.
$this->assertFalse($issuer->is_valid_login_domain(''));
$this->assertFalse($issuer->is_valid_login_domain('a@b'));
$this->assertFalse($issuer->is_valid_login_domain('longer.example@example'));
$this->assertTrue($issuer->is_valid_login_domain('[email protected]'));

$issuer->set('alloweddomains', 'example.com,example.net');
// Multiple domains - must match any exactly - no substrings etc.
$this->assertFalse($issuer->is_valid_login_domain(''));
$this->assertFalse($issuer->is_valid_login_domain('a@b'));
$this->assertFalse($issuer->is_valid_login_domain('longer.example@example'));
$this->assertFalse($issuer->is_valid_login_domain('invalid@[email protected]'));
$this->assertTrue($issuer->is_valid_login_domain('[email protected]'));
$this->assertTrue($issuer->is_valid_login_domain('[email protected]'));
}

}

0 comments on commit fa78244

Please sign in to comment.