Skip to content
Snippets Groups Projects
Commit a91958de authored by Ghislain Loas's avatar Ghislain Loas
Browse files

Merge branch 'hotline#155528_boite_auteurs_probleme_constitution_du_cache' into 'master'

hotline #155528 fix fatal error on call to digital resource url for

See merge request !4571
parents 3cc2a1fb 194dbb42
Branches
Tags
1 merge request!4571hotline #155528 fix fatal error on call to digital resource url for
Pipeline #18883 passed with stage
in 25 minutes and 14 seconds
- correctif #155528 : Albums : correction d'une erreur PHP pouvant survenir lors de la consultation d'une notice d\'album.
\ No newline at end of file
...@@ -290,8 +290,8 @@ class Class_DigitalResource_Config extends Class_Entity { ...@@ -290,8 +290,8 @@ class Class_DigitalResource_Config extends Class_Entity {
} }
public function urlFor(?Class_Users $user, ?array $params = []) : ?string { public function urlFor(?Class_Users $user, ?array $params = []) : string {
return $this->_ssoUrlDelegate()->urlFor($user, $params); return (string) $this->_ssoUrlDelegate()->urlFor($user, $params);
} }
......
...@@ -24,27 +24,28 @@ class Class_DigitalResource_SsoUrl { ...@@ -24,27 +24,28 @@ class Class_DigitalResource_SsoUrl {
/** @var Class_DigitalResource_Config | Class_WebService_BibNumerique_ArteVOD_Config */ /** @var Class_DigitalResource_Config | Class_WebService_BibNumerique_ArteVOD_Config */
protected $_config; protected $_config;
public function __construct($config) { public function __construct($config) {
$this->_config = $config; $this->_config = $config;
} }
public function urlFor(?Class_Users $user, array $params=[]) : ?string { public function urlFor(?Class_Users $user, array $params=[]) : string {
if (!$user if (!$user
|| !$this->_config->hasRightAccess($user) || !$this->_config->hasRightAccess($user)
|| !$this->_config->isEnabled()) || !$this->_config->isEnabled())
return null; return '';
if ($record = $this->_recordFromParams($params)) if ($record = $this->_recordFromParams($params))
return $this->_config->getRecordSsoUrl($user, $record); return (string) $this->_config->getRecordSsoUrl($user, $record);
if ($album = $this->_albumFromParams($params)) if ($album = $this->_albumFromParams($params))
return $this->_config->getAlbumSsoUrl($user, $album); return (string) $this->_config->getAlbumSsoUrl($user, $album);
if ($resource = $this->_albumResourceFromParams($params)) if ($resource = $this->_albumResourceFromParams($params))
return $this->_config->getAlbumResourceSsoUrl($user, $resource); return (string) $this->_config->getAlbumResourceSsoUrl($user, $resource);
return $this->_config->getSsoUrl($user); return (string) $this->_config->getSsoUrl($user);
} }
......
...@@ -65,8 +65,8 @@ class Class_WebService_BibNumerique_ArteVOD_Config { ...@@ -65,8 +65,8 @@ class Class_WebService_BibNumerique_ArteVOD_Config {
} }
public function urlFor(?Class_Users $user, ?array $params = []) : ?string { public function urlFor(?Class_Users $user, ?array $params = []) : string {
return (new Class_DigitalResource_SsoUrl($this))->urlFor($user, $params); return (string) (new Class_DigitalResource_SsoUrl($this))->urlFor($user, $params);
} }
......
...@@ -140,7 +140,7 @@ class ZendAfi_View_Helper_Admin_HelpLinkBokehWiki { ...@@ -140,7 +140,7 @@ class ZendAfi_View_Helper_Admin_HelpLinkBokehWiki {
]; ];
public function urlFor($controller, $action) { public function urlFor($controller, $action) : string {
if (!array_key_exists($controller, $this->_mapping)) if (!array_key_exists($controller, $this->_mapping))
return ''; return '';
......
...@@ -115,4 +115,122 @@ class DigitalResourceTest extends ModelTestCase { ...@@ -115,4 +115,122 @@ class DigitalResourceTest extends ModelTestCase {
$this->assertEquals(['PirateBayResource'], array_keys($this->_digital_resource->getModulesMenu())); $this->assertEquals(['PirateBayResource'], array_keys($this->_digital_resource->getModulesMenu()));
} }
}
class DigitalResourceSsoUrlTest extends ModelTestCase {
protected
$_sso_url,
$_config;
public function setUp() {
parent::setUp();
$no_rights =
$this->fixture(Class_Users::class,
['id' => 4,
'login' => 'mixed return',
'password' => 'RT KO']);
$has_rights =
$this->fixture(Class_Users::class,
['id' => 5,
'login' => 'has rights',
'password' => 'until the end']);
$this->fixture(Class_Notice::class,
['id' => 7]);
$this->fixture(Class_Album::class,
['id' => 9,
'titre' => '-_-']);
$this->fixture(Class_AlbumRessource::class,
['id' => 11]);
$this->_config =
$this->mock()->beStrict()
->whenCalled('hasRightAccess')
->with($no_rights)
->answers(false)
->whenCalled('hasRightAccess')
->with($has_rights)
->answers(true)
->whenCalled('isEnabled')
->answers(true);
$this->_sso_url = new Class_DigitalResource_SsoUrl($this->_config);
}
/** @test */
public function withNullUserShouldReturnEmptyString() {
$this->assertEquals('', $this->_sso_url->urlFor(null));
}
/** @test */
public function withNoRightsUserShouldReturnEmptyString() {
$this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(4)));
}
/** @test */
public function withNotEnabledConfigShouldReturnEmptyString() {
$this->_config
->whenCalled('isEnabled')
->answers(false);
$this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5)));
}
/** @test */
public function withRecordParamShouldReturnEmptyString() {
$this->_config
->whenCalled('getRecordSsoUrl')
->with(Class_Users::find(5), Class_Notice::find(7))
->answers(null);
$this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5), ['id' => 7]));
}
/** @test */
public function withAlbumParamShouldReturnEmptyString() {
$this->_config
->whenCalled('getAlbumSsoUrl')
->with(Class_Users::find(5), Class_Album::find(9))
->answers(null);
$this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5), ['album_id' => 9]));
}
/** @test */
public function withAlbumResourceParamShouldReturnEmptyString() {
$this->_config
->whenCalled('getAlbumResourceSsoUrl')
->with(Class_Users::find(5), Class_AlbumRessource::find(11))
->answers(null);
$this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5), ['resource_id' => 11]));
}
/** @test */
public function withNoParamsShouldReturnEmptyString() {
$this->_config
->whenCalled('getSsoUrl')
->with(Class_Users::find(5))
->answers(null);
$this->assertEquals('', $this->_sso_url->urlFor(Class_Users::find(5)));
}
} }
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment