Move authentication hooks to SapphireTest

This commit is contained in:
Damian Mooyman 2017-06-09 16:25:40 +12:00
parent 62753b3cb1
commit d89bd15330
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
3 changed files with 30 additions and 33 deletions

View File

@ -398,37 +398,6 @@ class FunctionalTest extends SapphireTest
$this->assertTrue($expectedMatches == $actuals, $message);
}
/**
* Log in as the given member
*
* @param Member|int|string $member The ID, fixture codename, or Member object of the member that you want to log in
*/
public function logInAs($member)
{
if (is_numeric($member)) {
$member = DataObject::get_by_id(Member::class, $member);
} elseif (!is_object($member)) {
$member = $this->objFromFixture('SilverStripe\\Security\\Member', $member);
}
$this->logIn($member);
}
/**
* Log out the member
*
*/
public function logOut()
{
$this->session()->inst_clear('loggedInAs');
Security::setCurrentUser(null);
}
public function logIn($member)
{
Security::setCurrentUser($member);
}
/**
* Use the draft (stage) site for testing.
* This is helpful if you're not testing publication functionality and don't want "stage management" cluttering

View File

@ -1251,10 +1251,33 @@ class SapphireTest extends PHPUnit_Framework_TestCase
$this->cache_generatedMembers[$permCode] = $member;
}
Injector::inst()->get(IdentityStore::class)->logIn($member);
$this->logInAs($member);
return $member->ID;
}
/**
* Log in as the given member
*
* @param Member|int|string $member The ID, fixture codename, or Member object of the member that you want to log in
*/
public function logInAs($member)
{
if (is_numeric($member)) {
$member = DataObject::get_by_id(Member::class, $member);
} elseif (!is_object($member)) {
$member = $this->objFromFixture(Member::class, $member);
}
Injector::inst()->get(IdentityStore::class)->logIn($member);
}
/**
* Log out the current user
*/
public function logOut()
{
Injector::inst()->get(IdentityStore::class)->logOut();
}
/**
* Cache for logInWithPermission()
*/

View File

@ -11,6 +11,7 @@ use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\Security\Member;
use SilverStripe\Security\MemberAuthenticator\SessionAuthenticationHandler;
use SilverStripe\Security\Security;
use SilverStripe\Security\MemberPassword;
use SilverStripe\Security\Group;
@ -1072,7 +1073,11 @@ class MemberTest extends FunctionalTest
);
$this->assertContains($message, $response->getBody());
$this->logOut();
// Test that removing session but not cookie keeps user
/** @var SessionAuthenticationHandler $sessionHandler */
$sessionHandler = Injector::inst()->get(SessionAuthenticationHandler::class);
$sessionHandler->logOut();
Security::setCurrentUser(null);
// Accessing the login page from the second device
$response = $this->get(