Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getAndErasePlaintextPassword example
public
function
testUpgradePassword
(
)
{
$request
= Request::
create
(
'/login_check', 'POST',
[
'_username' => 'wouter', '_password' => 's$cr$t'
]
)
;
$request
->
setSession
(
$this
->
createSession
(
)
)
;
$this
->userProvider =
new
PasswordUpgraderProvider
(
[
'test' =>
[
'password' => 's$cr$t'
]
]
)
;
$this
->
setUpAuthenticator
(
)
;
$passport
=
$this
->authenticator->
authenticate
(
$request
)
;
$this
->
assertTrue
(
$passport
->
hasBadge
(
PasswordUpgradeBadge::
class
)
)
;
$badge
=
$passport
->
getBadge
(
PasswordUpgradeBadge::
class
)
;
$this
->
assertEquals
(
's$cr$t',
$badge
->
getAndErasePlaintextPassword
(
)
)
;
}
/** * @dataProvider provideContentTypes() */
public
function
testSupportsFormOnly
(
string
$contentType
, bool
$shouldSupport
)
{
$request
=
new
Request
(
)
;
$request
->headers->
set
(
'CONTENT_TYPE',
$contentType
)
;
$request
->server->
set
(
'REQUEST_URI', '/login_check'
)
;
$request
->
setMethod
(
'POST'
)
;
public
function
onLoginSuccess
(
LoginSuccessEvent
$event
)
: void
{
$passport
=
$event
->
getPassport
(
)
;
if
(
!
$passport
->
hasBadge
(
PasswordUpgradeBadge::
class
)
)
{
return
;
}
/** @var PasswordUpgradeBadge $badge */
$badge
=
$passport
->
getBadge
(
PasswordUpgradeBadge::
class
)
;
$plaintextPassword
=
$badge
->
getAndErasePlaintextPassword
(
)
;
if
(
'' ===
$plaintextPassword
)
{
return
;
}
$user
=
$passport
->
getUser
(
)
;
if
(
!
$user
instanceof PasswordAuthenticatedUserInterface || null ===
$user
->
getPassword
(
)
)
{
return
;
}
$passwordHasher
=
$this
->hasherFactory->
getPasswordHasher
(
$user
)
;
public
function
testAddsPasswordUpgradeBadge
(
)
{
$hasher
=
$this
->
createMock
(
PasswordHasherInterface::
class
)
;
$hasher
->
expects
(
$this
->
any
(
)
)
->
method
(
'verify'
)
->
with
(
'password-hash', 'ThePa$$word'
)
->
willReturn
(
true
)
;
$this
->hasherFactory->
expects
(
$this
->
any
(
)
)
->
method
(
'getPasswordHasher'
)
->
with
(
$this
->
identicalTo
(
$this
->user
)
)
->
willReturn
(
$hasher
)
;
$passport
=
new
Passport
(
new
UserBadge
(
'wouter',
fn
(
)
=>
$this
->user
)
,
new
PasswordCredentials
(
'ThePa$$word'
)
)
;
$this
->listener->
checkPassport
(
$this
->
createEvent
(
$passport
)
)
;
$this
->
assertTrue
(
$passport
->
hasBadge
(
PasswordUpgradeBadge::
class
)
)
;
$this
->
assertEquals
(
'ThePa$$word',
$passport
->
getBadge
(
PasswordUpgradeBadge::
class
)
->
getAndErasePlaintextPassword
(
)
)
;
}
public
function
testAddsNoPasswordUpgradeBadgeIfItAlreadyExists
(
)
{
$hasher
=
$this
->
createMock
(
PasswordHasherInterface::
class
)
;
$hasher
->
expects
(
$this
->
any
(
)
)
->
method
(
'verify'
)
->
with
(
'password-hash', 'ThePa$$word'
)
->
willReturn
(
true
)
;
$this
->hasherFactory->
expects
(
$this
->
any
(
)
)
->
method
(
'getPasswordHasher'
)
->
with
(
$this
->
identicalTo
(
$this
->user
)
)
->
willReturn
(
$hasher
)
;
$passport
=
$this
->
getMockBuilder
(
Passport::
class
)
->
onlyMethods
(
[
'addBadge'
]
)
'PHP_AUTH_USER' => 'TheUsername',
'PHP_AUTH_PW' => 'ThePassword',
]
)
;
$this
->userProvider =
new
PasswordUpgraderProvider
(
[
'test' =>
[
'password' => 's$cr$t'
]
]
)
;
$authenticator
=
new
HttpBasicAuthenticator
(
'test',
$this
->userProvider
)
;
$passport
=
$authenticator
->
authenticate
(
$request
)
;
$this
->
assertTrue
(
$passport
->
hasBadge
(
PasswordUpgradeBadge::
class
)
)
;
$badge
=
$passport
->
getBadge
(
PasswordUpgradeBadge::
class
)
;
$this
->
assertEquals
(
'ThePassword',
$badge
->
getAndErasePlaintextPassword
(
)
)
;
}
}