/** * Add acl resources * * @param array $resources * @param boolean $createConnections * @param integer $userRole */ protected function addAclResources($resources, $createConnections = true, $userRole = AclModelBase::DEFAULT_ROLE_MEMBER) { // create a test user $userData = ['nick_name' => Rand::getString(32), 'email' => Rand::getString(32), 'role' => $userRole]; // add member $query = $this->aclModelBase->insert()->into('user_list')->values($userData); $statement = $this->aclModelBase->prepareStatementForSqlObject($query); $statement->execute(); $this->userId = $this->aclModelBase->getAdapter()->getDriver()->getLastGeneratedValue(); // create new resources foreach ($resources as $resource) { // add new test resource $query = $this->aclModelBase->insert()->into('acl_resource')->values(['resource' => $resource, 'module' => 1, 'description' => '']); $statement = $this->aclModelBase->prepareStatementForSqlObject($query); $statement->execute(); $resourceId = $this->aclModelBase->getAdapter()->getDriver()->getLastGeneratedValue(); $this->aclResourcesIds[] = $resourceId; if ($createConnections) { $query = $this->aclModelBase->insert()->into('acl_resource_connection')->values(['role' => $userRole, 'resource' => $resourceId]); $statement = $this->aclModelBase->prepareStatementForSqlObject($query); $statement->execute(); $this->aclResourcesConnections[] = $this->aclModelBase->getAdapter()->getDriver()->getLastGeneratedValue(); } } }
/** * Test role synchronisation */ public function testRoleSynchronisation() { // create a first test ACL role $query = $this->model->insert()->into('acl_role')->values(['name' => 'test role 1']); $statement = $this->model->prepareStatementForSqlObject($query); $statement->execute(); $this->aclRolesIds[] = $this->model->getAdapter()->getDriver()->getLastGeneratedValue(); // create a test user $query = $this->model->insert()->into('user_list')->values(['nick_name' => Rand::getString(32), 'email' => Rand::getString(32), 'role' => $this->aclRolesIds[0]]); $statement = $this->model->prepareStatementForSqlObject($query); $statement->execute(); $this->usersIds[] = $this->model->getAdapter()->getDriver()->getLastGeneratedValue(); // delete the created ACL role $query = $this->model->delete()->from('acl_role')->where(['id' => $this->aclRolesIds[0]]); $statement = $this->model->prepareStatementForSqlObject($query); $statement->execute(); // fire the delete ACL role event AclEvent::fireDeleteAclRoleEvent($this->aclRolesIds[0]); // check the created test user's role $select = $this->model->select(); $select->from('user_list')->columns(['role'])->where(['user_id' => $this->usersIds[0]]); $statement = $this->model->prepareStatementForSqlObject($select); $resultSet = new ResultSet(); $result = $resultSet->initialize($statement->execute()); // user must be a default member $this->assertEquals($result->current()['role'], AclBaseModel::DEFAULT_ROLE_MEMBER); }