Move authentication hooks to SapphireTest
This commit is contained in:
parent
62753b3cb1
commit
d89bd15330
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
*/
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue