/** * @covers \BjyAuthorize\Collector\RoleCollector::collect * @covers \BjyAuthorize\Collector\RoleCollector::getCollectedRoles */ public function testTraversableCollect() { $role1 = $this->getMock('Zend\\Permissions\\Acl\\Role\\RoleInterface'); $mvcEvent = $this->getMock('Zend\\Mvc\\MvcEvent'); $role1->expects($this->any())->method('getRoleId')->will($this->returnValue('role1')); $this->identityProvider->expects($this->any())->method('getIdentityRoles')->will($this->returnValue(new \ArrayIterator(array($role1, 'role2', 'key' => 'role3')))); $this->collector->collect($mvcEvent); $roles = $this->collector->getCollectedRoles(); $this->assertCount(3, $roles); $this->assertContains('role1', $roles); $this->assertContains('role2', $roles); $this->assertContains('role3', $roles); }
/** * {@inheritDoc} */ public function collect(MvcEvent $mvcEvent) { if (!$this->identityProvider) { return; } $roles = $this->identityProvider->getIdentityRoles(); if (!is_array($roles) && !$roles instanceof \Traversable) { $roles = (array) $roles; } foreach ($roles as $role) { if ($role instanceof RoleInterface) { $role = $role->getRoleId(); } if ($role) { $this->collectedRoles[] = (string) $role; } } }