'LmcRbacMvc\Identity\AuthenticationProvider', 'guest_role' => 'guest', 'role_provider' => [ 'LmcRbacMvc\Role\InMemoryRoleProvider' => [ 'foo' ] ] ]); $traversalStrategy = $this->createMock('Rbac\Traversal\Strategy\TraversalStrategyInterface'); $roleProvider = $this->createMock('\LmcRbacMvc\Role\RoleProviderInterface'); $rbac = $this->createMock('Rbac\Rbac'); $rbac->expects($this->once()) ->method('getTraversalStrategy') ->will($this->returnValue( $traversalStrategy )); $pluginManager = $this->createMock('\LmcRbacMvc\Role\RoleProviderPluginManager'); $pluginManager->expects($this->once()) ->method('get') ->with('LmcRbacMvc\Role\InMemoryRoleProvider', ['foo']) ->will($this->returnValue( $roleProvider )); $serviceManager = new ServiceManager(); $serviceManager->setService('LmcRbacMvc\Options\ModuleOptions', $options); $serviceManager->setService('Rbac\Rbac', $rbac); $serviceManager->setService('LmcRbacMvc\Role\RoleProviderPluginManager', $pluginManager); $serviceManager->setService('LmcRbacMvc\Identity\AuthenticationProvider', $this->createMock('LmcRbacMvc\Identity\IdentityProviderInterface')); $factory = new RoleServiceFactory(); $roleService = $factory->createService($serviceManager); $this->assertInstanceOf('LmcRbacMvc\Service\RoleService', $roleService); $this->assertEquals('guest', $roleService->getGuestRole()); //$this->assertAttributeSame($traversalStrategy, 'traversalStrategy', $roleService); } public function testIfRoleArrayPointerBeyondArrayEnd() { $options = new ModuleOptions([ 'identity_provider' => 'LmcRbacMvc\Identity\AuthenticationProvider', 'guest_role' => 'guest', 'role_provider' => [ 'LmcRbacMvc\Role\InMemoryRoleProvider' => [ 'foo' ] ] ]); // Simulate if array pointer beyond end of array. E.g after 'while(next($roleProvider)) { //do }' $roleProvider = $options->getRoleProvider(); next($roleProvider); $options->setRoleProvider($roleProvider); $traversalStrategy = $this->createMock('Rbac\Traversal\Strategy\TraversalStrategyInterface'); $roleProvider = $this->createMock('\LmcRbacMvc\Role\RoleProviderInterface'); $rbac = $this->createMock('Rbac\Rbac'); $rbac->expects($this->once()) ->method('getTraversalStrategy') ->will($this->returnValue( $traversalStrategy )); $pluginManager = $this->createMock('\LmcRbacMvc\Role\RoleProviderPluginManager'); $pluginManager->expects($this->once()) ->method('get') ->with('LmcRbacMvc\Role\InMemoryRoleProvider', ['foo']) ->will($this->returnValue( $roleProvider )); $serviceManager = new ServiceManager(); $serviceManager->setService('LmcRbacMvc\Options\ModuleOptions', $options); $serviceManager->setService('Rbac\Rbac', $rbac); $serviceManager->setService('LmcRbacMvc\Role\RoleProviderPluginManager', $pluginManager); $serviceManager->setService('LmcRbacMvc\Identity\AuthenticationProvider', $this->createMock('LmcRbacMvc\Identity\IdentityProviderInterface')); $factory = new RoleServiceFactory(); $factory->createService($serviceManager); } public function testThrowExceptionIfNoRoleProvider() { $this->ExpectException(\LmcRbacMvc\Exception\RuntimeException::class); $options = new ModuleOptions([ 'identity_provider' => 'LmcRbacMvc\Identity\AuthenticationProvider', 'guest_role' => 'guest', 'role_provider' => [] ]); $serviceManager = new ServiceManager(); $serviceManager->setService('LmcRbacMvc\Options\ModuleOptions', $options); $serviceManager->setService( 'LmcRbacMvc\Identity\AuthenticationProvider', $this->createMock('LmcRbacMvc\Identity\IdentityProviderInterface') ); $factory = new RoleServiceFactory(); $factory->createService($serviceManager); } }