public function testDatabaseReaderRole() { $adm = new couchAdmin($this->aclient); $security = $adm->getSecurity(); $this->assertEquals(count($security->readers->roles), 0); $ok = $adm->addDatabaseReaderRole("cowboy"); $this->assertType("boolean", $ok); $this->assertEquals($ok, true); $security = $adm->getSecurity(); $this->assertEquals(count($security->readers->roles), 1); $this->assertEquals(reset($security->readers->roles), "cowboy"); $ok = $adm->removeDatabaseReaderRole("cowboy"); $this->assertType("boolean", $ok); $this->assertEquals($ok, true); $security = $adm->getSecurity(); $this->assertEquals(count($security->readers->roles), 0); }
/** * Create views and documents required by module. * Files module.view.json and module.json with create view and create documents * commands must be stored in directory reldir='/module/json/' * This function is called by this->init * * @param string $reldir Relative directory where to scan files * @return int <=0 if KO, >0 if OK */ function _load_documents() { global $db, $conf; $error = 0; $this->couchdb->useDatabase(strtolower($this->name)); // switch to the database for the module if (!$this->couchdb->databaseExists()) { $this->couchdb->createDatabase(); // create the database $couchAdmin = new couchAdmin($this->couchdb); $couchAdmin->addDatabaseReaderRole("administrator"); // add the default admin security group } $ok = 1; foreach ($conf->file->dol_document_root as $dirroot) { if ($ok) { $dir = $dirroot . "/" . $this->name . "/json/"; $ok = 0; // Create or upgrade views and documents $handle = @opendir($dir); // Dir may not exists if (is_resource($handle)) { while (($file = readdir($handle)) !== false) { if (preg_match('/\\.json$/i', $file)) { $fp = fopen($dir . $file, "r"); if ($fp) { $json = fread($fp, filesize($dir . $file)); $obj = json_decode($json); // Test if exist document in database : upgrade try { $result = $this->couchdb->getDoc($obj->_id); $obj->_rev = $result->_rev; } catch (Exception $e) { } try { $this->couchdb->storeDoc($obj); } catch (Exception $e) { dol_print_error("", $e->getMessage()); $error++; } fclose($fp); } } } closedir($handle); } if ($error == 0) { $ok = 1; } } } return $ok; }