Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
checkPassport example
protected
function
setUp
(
)
: void
{
$this
->csrfTokenManager =
$this
->
createMock
(
CsrfTokenManagerInterface::
class
)
;
$this
->listener =
new
CsrfProtectionListener
(
$this
->csrfTokenManager
)
;
}
public
function
testNoCsrfTokenBadge
(
)
{
$this
->csrfTokenManager->
expects
(
$this
->
never
(
)
)
->
method
(
'isTokenValid'
)
;
$event
=
$this
->
createEvent
(
$this
->
createPassport
(
null
)
)
;
$this
->listener->
checkPassport
(
$event
)
;
}
public
function
testValidCsrfToken
(
)
{
$this
->csrfTokenManager->
expects
(
$this
->
any
(
)
)
->
method
(
'isTokenValid'
)
->
with
(
new
CsrfToken
(
'authenticator_token_id', 'abc123'
)
)
->
willReturn
(
true
)
;
$event
=
$this
->
createEvent
(
$this
->
createPassport
(
new
CsrfTokenBadge
(
'authenticator_token_id', 'abc123'
)
)
)
;
$this
->listener->
checkPassport
(
$event
)
;
$this
->listener =
new
LoginThrottlingListener
(
$this
->requestStack,
$limiter
)
;
}
public
function
testPreventsLoginWhenOverLocalThreshold
(
)
{
$request
=
$this
->
createRequest
(
)
;
$passport
=
$this
->
createPassport
(
'wouter'
)
;
$this
->requestStack->
push
(
$request
)
;
for
(
$i
= 0;
$i
< 3; ++
$i
)
{
$this
->listener->
checkPassport
(
$this
->
createCheckPassportEvent
(
$passport
)
)
;
$this
->listener->
onFailedLogin
(
$this
->
createLoginFailedEvent
(
$passport
)
)
;
}
$this
->
expectException
(
TooManyLoginAttemptsAuthenticationException::
class
)
;
$this
->listener->
checkPassport
(
$this
->
createCheckPassportEvent
(
$passport
)
)
;
}
public
function
testPreventsLoginWithMultipleCase
(
)
{
$request
=
$this
->
createRequest
(
)
;
$passports
=
[
$this
->
createPassport
(
'wouter'
)
,
$this
->
createPassport
(
'Wouter'
)
,
$this
->
createPassport
(
'wOuter'
)
]
;
protected
function
setUp
(
)
: void
{
$this
->userProvider =
new
InMemoryUserProvider
(
)
;
$this
->listener =
new
UserProviderListener
(
$this
->userProvider
)
;
}
public
function
testSetUserProvider
(
)
{
$passport
=
new
SelfValidatingPassport
(
new
UserBadge
(
'wouter'
)
)
;
$this
->listener->
checkPassport
(
new
CheckPassportEvent
(
$this
->
createMock
(
AuthenticatorInterface::
class
)
,
$passport
)
)
;
$user
=
new
InMemoryUser
(
'wouter', null
)
;
$this
->userProvider->
createUser
(
$user
)
;
$this
->
assertTrue
(
$user
->
isEqualTo
(
$passport
->
getUser
(
)
)
)
;
}
/** * @dataProvider provideCompletePassports */
public
function
testNotOverrideUserLoader
(
$passport
)
{
$hasher
=
$this
->
createMock
(
PasswordHasherInterface::
class
)
;
$hasher
->
expects
(
$this
->
any
(
)
)
->
method
(
'verify'
)
->
with
(
'password-hash',
$password
)
->
willReturn
(
$passwordValid
)
;
$this
->hasherFactory->
expects
(
$this
->
any
(
)
)
->
method
(
'getPasswordHasher'
)
->
with
(
$this
->
identicalTo
(
$this
->user
)
)
->
willReturn
(
$hasher
)
;
if
(
false ===
$result
)
{
$this
->
expectException
(
BadCredentialsException::
class
)
;
$this
->
expectExceptionMessage
(
'The presented password is invalid.'
)
;
}
$credentials
=
new
PasswordCredentials
(
$password
)
;
$this
->listener->
checkPassport
(
$this
->
createEvent
(
new
Passport
(
new
UserBadge
(
'wouter',
fn
(
)
=>
$this
->user
)
,
$credentials
)
)
)
;
if
(
true ===
$result
)
{
$this
->
assertTrue
(
$credentials
->
isResolved
(
)
)
;
}
}
public
static
function
providePasswords
(
)
{
yield
[
'ThePa$$word', true, true
]
;
yield
[
'Invalid', false, false
]
;
}